Se trata de cómo se usan las cosas, no de las cosas. Una pieza de código que utiliza una cosa debe saber lo menos posible sobre ella para que funcione. Si esta situación existe, entonces la cosa debería ser un objeto.
Para un ejemplo extremadamente simple, supongamos que hay un conjunto de botones. Estos botones no son todos del mismo tipo de cosas, pero hay más de cien lugares diferentes en su código que necesitan introducir un botón de algún tipo y cientos de otros lugares en su código que necesitan presionar un botón que se pasa dependiendo de ciertas condiciones. Entonces, primero tenemos un botón entero que para activarlo debe darle un valor entero mayor que 4. Luego tiene otro botón, el botón bool que toma solo un verdadero booleano para activarlo. Luego hay un tercer botón, que tiene que llamarlo, el que establece un valor de texto en su lado y luego lo vuelve a llamar. Puede haber una docena de diferentes tipos de botones como este.
Entonces, ¿qué es lo que ahora haces? ¿Cientos de lugares diferentes en el código necesitan saber cómo activar cada tipo diferente de botón? ¡No! Este es un trabajo para OOP. Si tiene una clase de botón llamada “Botón” con un método virtual: “Activar” y cada tipo de botón se hereda de Botón e implementa Activar, entonces todos los botones se pueden pasar, no importa qué tipo son como una simple referencia o puntero. Botón y cuando sea el momento de activar el botón, todas las partes diferentes de su código hacen exactamente lo mismo, llame a Activate (); esta técnica se llama ocultación de información y es la cosa más poderosa sobre la POO. El 99% de su código solo necesita saber acerca de la clase Button y Button :: Activate ();
Supongamos que no usó OOP y que simplemente escribió todo este conocimiento para que en todas partes de su código haya varias declaraciones de interruptores que determinen cómo activar el botón en cuestión. En primer lugar, piense en la posibilidad de errores, el conocimiento de los botones se copia y se pega en su código, los errores se copian y se pegan en su código. Entonces alguien dice: hey, necesitamos agregar seis botones más y cambiar la forma en que funcionan los otros tres. Recuerda que este es un ejemplo simple. Sin la POO y la ocultación de la información, se deben reescribir con mayor frecuencia grandes cantidades de código.
- ¿Podría aprender la administración del tiempo de un libro o es mejor una consultoría o un taller?
- ¿Qué desventajas ha experimentado cuando siempre tiene que confiar en su segundo idioma?
- ¿Cuáles son las cosas que aprendiste en 2015?
- ¿Cuál es la taxonomía de Bloom?
- ¿Cuánto más rápido aprende una persona con un alto coeficiente intelectual?
OOP proporciona una forma de hacer un contrato con el 99% del código que no tendrá que cambiar aunque se introduzcan cosas completamente nuevas que siguen el contrato. Los lenguajes OOP como Java C ++, C #, etc. hacen buenos contratos herméticos.