Cómo probablemente sepa, los conceptos de programación orientada a objetos son muy importantes. Sin una idea de los conceptos de la POO, no estará en la capacidad de diseñar sistemas utilizando el modelo de POO ya que este simplifica el desarrollo de software y mantenimiento.

En este artículo, se van a explicar 10 conceptos importantes de la POO con ejemplos.

1. Abstracción

Intención:

La abstracción significa ocultar detalles de nivel interior o exponer solo los detalles esenciales y relevantes a los usuarios.

Ejemplo real:

  • Un automóvil abstrae los detalles internos y expone al conductor solo a detalles que son relevantes para la interacción del conductor con el automóvil.
  • Por ejemplo, cuando recibimos una llamada telefónica, no conocemos el proceso interno. En Java, se usa la clase abstracta y la interfaz para lograr la abstracción.
  • Nunca compramos un “dispositivo”, pero siempre compramos algo más específico: iPhone, Nokia 3310, etc. Aquí estos ejemplos son concretos, el dispositivo es algo abstracto.

2. Encapsulación

Intención:

La encapsulación se refiere a la combinación de datos y funciones asociadas como una sola unidad. En la POO, los datos y las funciones que operan con estos datos se combinan para tomar una sola unidad, lo que se conoce como una clase.

Ejemplo:

  • Cápsula: Se envuelven diferentes medicamentos.
  • Una clase de Java es el ejemplo de una encapsulación. Un bean Java es la clase totalmente encapsulada porque todos los miembros de datos son privados aquí.

3. Herencia

Intención:

La herencia es una relación entre una super clase y sus sub clases.

En consecuencia, este es un proceso donde un objeto adquiere los miembros de otro; además, el mismo puede formar parte de él.

Explicación:

La herencia es un mecanismo de reutilización en la programación orientada a objetos en el que se explotan las propiedades comunes de varios objetos para establecer relaciones entre sí. Las propiedades abstractas y comunes se proporcionan en la superclase, que esta disponible para las subclases más especializadas.

Cuando decimos que la clase B se hereda de otra clase A, se hace referencia a la clase B como una clase derivada (o subclase), y la clase A se llama una clase base (o superclase). Por herencia, la clase derivada recibe el comportamiento de la clase base para que todos los métodos y variables de miembros visibles de la clase base estén disponibles en la clase derivada. Aparte del comportamiento heredado, la clase derivada especializa su comportamiento al agregar o anular el comportamiento de la clase base.

4. Polimorfismo

Intención:

  • El polimorfismo nos permite realizar una misma acción de diferentes maneras
  • El polimorfismo le permite definir una interfaz y tener múltiples implementaciones
  • Podemos crear funciones o variables de referencia que se comportan de manera diferente en diferentes contextos programáticos.
  • El polimorfismo significa muchas formas.

5. Asociación

Intención

  • Representa una relación entre dos o más objetos donde todos los objetos tienen su propio ciclo de vida y no hay ningún propietario. El nombre de una asociación especifica la naturaleza de la relación entre los objetos.
  • La asociación es una relación entre dos clases separadas que se establece a través de sus objetos. La asociación puede ser uno a uno, uno a muchos, muchos a uno y muchos a muchos.
  • En la programación orientada a objetos, un objeto se comunica con otro objeto para usar la funcionalidad y los servicios proporcionados por ese objeto.

Hay dos formas de asociación:

  • Composición
  • Agregación

6. Composición

Intención

La composición es una asociación que representa una parte de una relación completa donde una parte no puede existir sin un todo. Si se elimina un entero, entonces se eliminan todas las partes. Tiene una relación más fuerte. Puntos clave:

  • Representa una parte de la relación.
  • En composición, ambas entidades dependen una de la otra.
  • Cuando hay una composición entre dos entidades, el objeto compuesto no puede existir sin la otra entidad.
  • Por ejemplo, si el pedido tiene artículos de línea A-A, un pedido es un artículo completo y los artículos de línea son partes. Si se elimina un pedido, se deben eliminar todas las líneas correspondientes a ese pedido.
  • Favorecer la composición sobre la herencia.

7. Agregación

Intención

  • La agregación es una asociación que representa parte de una relación completa donde una parte puede existir sin un todo. Tiene una relación más débil.
  • Es una forma especializada de asociación donde todos los objetos tienen su propio ciclo de vida, pero existe la propiedad. Esto representa una relación de “parte completa” o “parte de parte”.
  • Tomemos un ejemplo de la relación entre el Departamento y el Maestro. Un profesor puede pertenecer a múltiples departamentos. Por lo tanto, el profesor es parte de múltiples departamentos. Pero si eliminamos un Departamento, el objeto Maestro no será destruido.

8. Delegación

Intención:

  • Entregar la responsabilidad de una tarea particular a otra clase o método.
  • Es una técnica en la que un objeto expresa cierto comportamiento hacia el exterior, pero en realidad, es responsabilidad de los delegados implementar ese comportamiento en un objeto asociado.

Aplicabilidad:

Utilice la delegación para lograr lo siguiente:

  • Reducir el acoplamiento de métodos a su clase.
  • Componentes que se comportan de manera idéntica pero se dan cuenta de que esta situación puede cambiar en el futuro.
  • Si necesita utilizar la funcionalidad en otra clase pero no desea cambiar esa funcionalidad, utilice la delegación en lugar de la herencia.

9. Acoplamiento

Intención:

Acoplamiento se refiere al grado en que una clase sabe acerca de otra clase. Si una clase usa otra clase, eso es acoplamiento. Esto incluye bajas dependencias entre “artefactos” (clases, módulos, componentes). No debe haber una dependencia demasiado grande entre los módulos; incluso si hay una dependencia, debería ser a través de las interfaces y debería ser mínima.

Puntos clave:

  • Al crear una aplicación compleja en Java, la lógica de una clase llamará a la lógica de otra clase para proporcionar el mismo servicio a los clientes.
  • Si una clase está llamando a otra lógica de clase, entonces se llama colaboración.
  • Cuando una clase está colaborando con otra clase, entonces existe un acoplamiento estrecho entre las dos clases.
  • Si una clase quiere llamar a la lógica de una segunda clase, entonces la primera clase necesita un objeto de una segunda clase. Significa que la primera clase crea un objeto de una segunda clase.

10. Cohesión

Intención:

El término cohesión se usa para indicar el grado en que una clase tiene una responsabilidad única y bien enfocada. La cohesión es una medida de cómo los métodos de una clase o un módulo están relacionados de manera significativa y significativa, y de cuán enfocados están en proporcionar un propósito bien definido al sistema.

Explicación:

  • En el diseño orientado a objetos, la cohesión se refiere a cómo se diseña una sola clase. La cohesión es el principio orientado a objetos que está más estrechamente asociado con asegurarse de que una clase esté diseñada con un propósito único y bien enfocado.
  • Cuanto más enfocada está una clase, más cohesiva es esa clase.
  • Las ventajas de la alta cohesión son que estas clases son mucho más fáciles de mantener (y cambian con menos frecuencia) que las clases con baja cohesión. Otro beneficio de la alta cohesión es que las clases con un propósito bien enfocado tienden a ser más reutilizables que otras clases.

Este artículo se encuentra basado en 10 OOPS Concepts in Java

10 Conceptos de POO en Java
Si te gusto, comparte ...Email this to someone
email
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Google+
Google+
Etiquetado en:    

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Facebook