POO: encapsulación y abstracción

Hola. Si bien los conceptos centrales del paradigma orientado a objetos son el de objeto y el de clase, esto en sí no es nada si no se sustenta en los pilares fundamentales de la programación orientada a objetos (POO), a saber:


ENCAPSULACIÓN

La encapsulación se considera una de las características definitorias de la orientación a objetos.

Cuando una clase existe (se define), se crean objetos a partir de ella, y se usan dichos objetos invocando los métodos necesarios. Es decir, creamos objetos para usar los servicios que nos proporciona la clase a través de sus métodos.

No necesitamos saber cómo trabaja el objeto, ni saber las variables que usa, ni el código que contiene.

El objeto es una caja negra. --> Modelo cliente - servidor. Es decir, el objeto es un servidor que proporciona servicios a los clientes que lo solicitan.

La encapsulación describe el hecho de que los objetos se usan como cajas negras. Así, un objeto encapsula datos y métodos, que están dentro del objeto.

Interfaz pública de una clase: Es el conjunto de métodos (métodos de servicio) que sirve para que los objetos de una clase proporcionen sus servicios. Estos servicios son los que pueden ser invocados por un cliente.

Métodos de soporte: Métodos adicionales en un objeto que no definen un servicio utilizable por un cliente, pero que ayudan a otros métodos en sus tareas.

La encapsulación es un mecanismo de control. El estado (el conjunto de propiedades, atributos ó datos) de un objeto sólo debe ser modificado por medio de los métodos del propio objeto.

ABSTRACCIÓN

El concepto de encapsulamiento se apoya sobre el concepto de abstracción.

En POO solo necesitamos saber como interaccionar con los objetos, no necesitamos conocer los detalles de cómo está implementada la clase a partir de la cual se instancia el objeto. Sólo necesitamos conocer su interfaz pública.

La encapsulación es una forma de abstracción.

La encapsulación es un mecanismo para llevar a la práctica la abstracción.

El nivel de abstracción puede ser bajo (en un objeto se manipulan datos y métodos individualmente), ó alto (en un objeto solo se usan sus métodos de servicio).

Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Es muy interesante esto que dices que no es necesario saber como funciona la clase ... solo conocer los métodos que sirven para interactuar con ella.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Ejercicios resueltos de programación, en Python y en español, I.

Herramientas (IDE, GUI, EDITOR) para desarrollar en Python

pyLorca: Diseño y diagrama de clases, en Python