En el último artículo discutimos los conceptos de POO. Si aún no lo ha revisado, le recomiendo que lo lea para que tenga una descripción básica de todos los conceptos de programación orientada a objetos. En esta guía, analizaremos cuatro características importantes de los POO con la ayuda de ejemplos de la vida real.
Enfoque orientado a objetos: una introducción
Java es un lenguaje orientado a objetos porque proporciona la funcionalidad para implementar un modelo orientado a objetos. Estas características incluyen Abstracción, encapsulamiento, herencia es polimorfismo.
UPS se trata de desarrollar una aplicación en torno a sus datos, es decir, objetos que proporcionen acceso a sus propiedades y posibles operaciones a su manera.
Abstracción
Uno de los conceptos fundamentales de la POO es Abstracción. La abstracción es un proceso en el que solo muestra datos “relevantes” y “oculta” al usuario los detalles innecesarios de un objeto. Por ejemplo, cuando inicie sesión en su cuenta de Amazon en línea, ingrese su user_id y contraseña y presione iniciar sesión, qué sucede cuando presiona iniciar sesión, cómo se envían los datos de entrada al servidor de Amazon, cómo se verifican, todo es abstracto de usted.
Otro ejemplo de abstracción: un automóvil en sí es un objeto bien definido, que se compone de muchos otros objetos más pequeños, como un sistema de engranajes, un mecanismo de dirección, un motor, que nuevamente tienen sus propios subsistemas. Pero para los humanos, el automóvil es un objeto único, que se puede administrar con la ayuda de sus subsistemas, incluso si se desconocen sus detalles internos.
Encapsulamiento
Esta publicación proporciona la explicación teórica de la encapsulación con ejemplos de la vida real. Para obtener una explicación detallada sobre este tema con programas java, consulte encapsulación en java por ejemplo.
La encapsulación es:
- Asociación de datos con el código que los manipula.
- Mantiene sus datos y código a salvo de interferencias externas
Mirando el ejemplo de un mecanismo de dirección asistida de un automóvil. La dirección asistida de un automóvil es un sistema complejo, que internamente tiene muchos componentes estrechamente acoplados entre sí, que funcionan sincrónicamente para girar el automóvil en la dirección deseada. También controla la potencia entregada por el motor al volante. Pero solo una interfaz está disponible para el mundo exterior y el resto de la complejidad está oculta. Además, la propia unidad de accionamiento es completa e independiente. No afecta el funcionamiento de ningún otro mecanismo.
Asimismo, el mismo concepto de encapsulación se puede aplicar al código. El código encapsulado debe tener las siguientes características:
- Todo el mundo sabe cómo acceder a él.
- Se puede utilizar fácilmente independientemente de los detalles de implementación.
- No debería haber efectos secundarios del código en el resto de la aplicación.
La idea de la encapsulación es mantener las clases separadas y evitar que estén estrechamente acopladas.
Un ejemplo de encapsulación es la clase java.util.Hashtable. El usuario solo sabe que puede almacenar datos como un par clave / valor en una tabla hash y que puede recuperar esos datos de varias formas. Pero la implementación real de cómo, cómo y dónde se almacenan estos datos está oculta al usuario. El usuario puede simplemente usar Hashtable en cualquier lugar donde quiera almacenar pares clave / valor sin preocuparse por su implementación.
Herencia
Esta publicación proporciona la explicación teórica de la herencia con ejemplos de la vida real. Para obtener una explicación detallada sobre este tema con programas java, consulte herencia con ejemplos y tipos de herencia en java.
- La herencia es el mecanismo por el cual un objeto adquiere algunas / todas las propiedades de otro objeto.
- Apoya el concepto de clasificación jerárquica.
Por ejemplo: el automóvil es un vehículo de cuatro ruedas, así que supongamos que tenemos una clase FourWheeler y una subclase llamada Car
. Aquí Car adquiere las propiedades de una clase. FourWheeler
. Otras clasificaciones podrían ser un jeep, una hora, una furgoneta, etc. FourWheeler define una clase de vehículos que tienen cuatro ruedas y un rango específico de potencia del motor, capacidad de carga, etc. El automóvil (definido como una subclase) adquiere estas propiedades de FourWheeler, y tiene algunas propiedades específicas, que son diferentes de otras clasificaciones de FourWheeler, como lujo, comodidad, forma, tamaño, uso, etc.
Un automóvil puede tener una clasificación adicional, como un automóvil abierto, un automóvil pequeño, un automóvil grande, etc., que adquirirá propiedades tanto de Four Wheeler como de Auto, pero aún tendrá algunas propiedades específicas. De esta manera, el nivel de jerarquía se puede extender a cualquier nivel.
Las clases Java Swing y Awt son los mejores ejemplos de herencia.
Polimorfismo
Esta publicación proporciona la explicación teórica del polimorfismo con ejemplos de la vida real. Para obtener una explicación detallada sobre este tema con programas Java, consulte Polimorfismo en Java y Polimorfismo en tiempo de ejecución y compilación.
- El polimorfismo significa procesar objetos de manera diferente según su tipo de datos.
- En otras palabras, significa un método con implementación múltiple, para una determinada clase de acción. Y qué implementación usar se decide en tiempo de ejecución dependiendo de la situación (por ejemplo, el tipo de datos del objeto)
- Esto se puede implementar diseñando una interfaz genérica, que proporciona métodos genéricos para una clase de acción determinada, y puede haber varias clases, lo que proporciona la implementación de estos métodos genéricos.
Echemos un vistazo al mismo ejemplo de un automóvil. Un automóvil tiene un sistema de transmisión de engranajes. Tiene cuatro marchas delanteras y una marcha atrás. Cuando se acelera el motor, dependiendo de la marcha engranada, se proporcionan al automóvil diferentes potencias y movimientos. La acción es la misma aplicando el equipo pero dependiendo del tipo de equipo la acción se comporta de manera diferente o se puede decir que muestra muchas formas (polimorfismo significa muchas formas)
El polimorfismo puede ser tanto estático como dinámico. La sobrecarga de método es un polimorfismo estático, mientras que la sobrecarga de método es un polimorfismo dinámico.
- Sobrecarga en términos simples, significa más de un método con el mismo nombre de método que se comporta de manera diferente según los argumentos pasados durante la llamada al método. Esto se llama estático porque el método a invocar se decide en el momento de la compilación.
- Primordial significa que una clase derivada está implementando un método de su superclase. La llamada al método anulado se resuelve en tiempo de ejecución, por lo que se denomina polimorfismo en tiempo de ejecución.