Paradigma de Programación Orientado a Objetos

¿Que es un Paradigma de Programación Orientado a Objetos?
Un paradigma es una forma de entender y representar la realidad: un conjunto de teorías, estándares y métodos que, juntos, representan un modo de organizar el pensamiento, es decir, un modo de ver el mundo. Cada nuevo paradigma responde a una necesidad real de nuevas formas de afrontar problemas. A menudo un nuevo paradigma es creado como respuesta a las deficiencias de paradigmas anteriores.

El paradigma orientado a objetos (OO) define los programas en términos de comunidades de objetos. Los objetos con características comunes se agrupan en clases (un concepto similar al de tipo abstracto de dato (TAD)). Los objetos son entidades que combinan un estado (es decir, datos) y un comportamiento (esto es, procedimientos o métodos). Estos objetos se comunican entre ellos para realizar tareas.

.Resultado de imagen para que es un paradigma de programacion orientado a objetos

Programación Orientado a Objetos

1.1. Herencia

Es la habilidad de extender una funcionalidad existente definiendo una nueva clase que hereda funcionalidad de una clase existente.

Ejemplo: 

Si contamos con una clase que se acerca a lo que necesitamos no sera necesario crear una clase desde cero. Podemos aprovechar y extender nuestra nueva clase. Esta nueva clase se llamara subclase y la clase que ya teníamos se llamara superclase. 
La subclase heredara todos los atributos y los métodos que fueron definidos en la clase padre. Si necesitamos cambiar algún método, se puede sobrescribir el comportamiento de nuestra subclase; utilizando el mismo nombre y los mismos argumentos del método que se encuentra en la subclase. O bien si se requiere crear un nuevo método lo podemos incluir en nuestra subclase.
Una clase puede heredar atributos por dos superclases (clases padres). La herencia múltiple puede ser usada para agrupar atributos y métodos de distintas clases en una sola.

Resultado de imagen para programacion orientada a objetos herencia y polimorfismo

1.2. Polimorfismo

Es una técnica para optimizar la funcionalidad basada en tipos particulares. La diferencia entre herencia y polimorfismo es que herencia está relacionada con clases y polimorfismo con métodos.

Existen 3 tipos de polimorfismo:
  • Sobrecarga: Es cuando existen funciones con el mismo nombre, con funcionalidad similar; en clases que son completamente independientes una de la otra.
  • Paramétrico: Existen funciones con el mismo nombre pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se mande.
  • Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.
Resultado de imagen para programacion orientada a objetos herencia y polimorfismo

1.3. Abstracción

Se define como las características especificas de un objeto, aquellas que lo distinguen de los demás tipos de objetos y que logran definir límites conceptuales respecto a quien está haciendo dicha abstracción del objeto.

Una abstracción se enfoca en la visión externa de un objeto, separa el comportamiento específico de un objeto, a esta división que realiza se le conoce como la barrera de abstracción, la cuál se consigue aplicando el principio de mínimo compromisoEsto se refiere al proceso por el cuál la interfaz de un objeto muestra su comportamiento específico y nada más, absolutamente nada más.

Imagen relacionadaPero… ¿Qué es una Interfaz? Una interfaz de objeto permite crear código con el cuál se específica que métodos serán implementados por una clase sin necesidad de definir que harán estos métodos, dichos métodos deben ser públicos.

En POO hay una alta gama de abstracciones que existen desde los objetos que modelan muy cerca de entidades, a objetos que no tienen razón para existir, las cuales son:
  • Abstracción de Entidades: Es un objeto que representa un modelo útil de una entidad que se desea.
  • Abstracción de Acciones: Un objeto que representa un conjunto de operaciones y todas ellas desempeñan funciones del mismo tipo.
  • Abstracción de Máquinas Virtuales: Un objeto que agrupa operaciones, todas ellas virtuales, utilizadas por algún nivel superior de control u operaciones (entre ellos podríamos hablar de un circuito).
  • Abstracción de Coincidencia: Un objeto que almacena un conjunto de operaciones que no tienen relación entre sí.
1.4. Encapsulamiento

Es el proceso de almacenar en una misma sección los elementos de una abstracción que constituyen su estructura y su comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación, dando fase al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que solo se pueda cambiar mediante las operaciones definidas para ese objeto.


Existen tres niveles de acceso para el encapsulamiento, los cuales son:

  • Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este nivel, este es el nivel más bajo, esto es lo que tu quieres que la parte externa vea.
  • Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles dentro de su clase y por subclases.
  • Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.

Imagen relacionada
Referencias
Universidad de Antioquia(12/06/2015). Paradigma OO: una forma de ver el mundo. Recuperado el 12 de Abril del 2018 de http://aprendeenlinea.udea.edu.co/lms/men_udea/mod/page/view.php?id=19537/

Carrera,O(05/10/2010). Programación Orientada a Objetos. Recuperado el 12 de Abril del 2018 de http://ofeliaprogra.blogspot.mx/2010/10/herencia-y-polimorfismo-modularidad-y.html

Lara,D(07/07/2015).¿Qué es la abstracción en la programación orientada a objetos?. Recuperado el 12 de Abril del 2018 de https://styde.net/abstraccion-programacion-orientada-a-objetos/

Comentarios