La Abstracción
Es como una operación intelectual que separa las cualidades de un objeto para
considerarlas aisladamente o para analizar al objeto en su pura esencia o noción.
Básicamente es la capacidad de separar los elementos (al menos mentalmente) para
poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos
cabeza, brazo(s), pierna(s), etc.
Con la abstracción podemos representar las características esenciales de un objeto sin
preocuparnos de las restantes características (no esenciales). La abstracción se centra en
la vista externa de un objeto, de modo que sirva para separar el comportamiento esencial
de un objeto de su implementación.
EJEMPLO:
Se puede considerar que un Tren puede manipular objetos Persona sin tener en cuenta sus
propiedades ni métodos ya que sólo le interesa, por ejemplo, calcular la cantidad de personas
que están viajando en él en ese momento, sin tener en cuenta ninguna otra información
relacionada con dichas personas, tales como la altura, el nombre, el color de ojos, etc.
Clases de abstracciones
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í.
ENCAPSULAMIENTO
Hay muchos datos que no tiene por qué conocerlo aquel que esté usando la clase
Persona; ya que son inherentes al objeto y solo controlan su funcionamiento interno; por
ejemplo, cuando alguien te ve puede saber inmediatamente si eres hombre o mujer
(propiedad) o puede hablarte y obtener una respuesta procesada (método); también
puede conocer el color de tu cabello y ojos. En cambio, jamás sabrá que cantidad de
energía exacta tienes o cuantas neuronas te quedan, ni siquiera preguntándote ya que
ninguna de tus propiedades externas visibles o funciones de comunicación al público te
permiten saber esos datos.
Esto es la encapsulación u ocultación; hacer las variables que son innecesarias para el
tratamiento del objeto pero necesarias para su funcionamiento privadas, así como las
funciones que no necesitan interacción del usuario o que solo pueden ser llamadas por
otras funciones dentro del objeto (Como por ejemplo, palpitar)
La encapsulación es muy conveniente y nos permite (Si programamos bien) colocar en
funcionamiento nuestro objeto en cualquier tipo de sistema, de una manera modular y
escalable (algunas de las reglas de la ingeniería del software).
Formas de encapsular
Abierto: 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: Podemos decir que estás no son de acceso público, solamente son accesibles
dentro de su clase y por subclases.
Privado: En este nivel se puede declarar miembros accesibles sólo para la propia clase.
EJEMPLO:
Borre intencionalmente el archivo “usuario java”, pero esta la clase “[Link]”. Al
ejecutar el programa. No se puede saber cuela es la contraseña. Dice que la contraseña
esta “encapsulada”.
HERENCIA
Es una propiedad que permite que los objetos sean creados a partir de otros ya
existentes, obteniendo características (métodos y atributos) similares a los ya existentes.
Es la relación entre una clase general y otra clase más específica. Es un mecanismo que
nos permite crear clases derivadas a partir de clase base, Nos permite compartir
automáticamente métodos y datos entre clases subclases y objetos.
EJEMPLOS:
Si declaramos una clase párrafo derivada de una clase texto todos los métodos y
variables asociadas con la clase texto son automáticamente heredados por la subclase
párrafo.
Podemos crear dos objetos Hombre y Mujer, que hereden todas sus características
genéricas como respirar, hablar, nombre, etc., del objeto Persona, y sea en la
implementación de cada objeto donde empiezan las diferencias.
POLIFORMO
En programación orientada a objetos el polimorfismo se refiere a la posibilidad de definir
clases diferentes que tienen métodos o atributos denominados de forma idéntica, pero
que se comportan de manera distinta. El concepto de polimorfismo se puede aplicar tanto
a funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas
y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser
aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su
parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está
especificado.
TIPOS DE POLIFORMO
Polimorfismo de sobrecarga: Ocurre cuando las funciones del mismo nombre existen, con
funcionalidad similar, en clases que son completamente independientes una de otra
(éstas no tienen que ser secundarias de la clase objeto). Por ejemplo, la clase complex,
la clase image y la clase link pueden todas tener la función "display". Esto significa que no
necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo
lo que deseamos es verlo en la pantalla.
En algunos lenguajes, el término polimorfismo es también conocido como ‘Sobrecarga de
parámetros’ ya que las características de los objetos permiten aceptar distintos
parámetros para un mismo método (diferentes implementaciones) generalmente con
comportamientos distintos e independientes para cada una de ellas.
EJEMPLO:
Este método devuelve la suma de 2 parámetros
Función suma(int numero1,int numero2)
‘ este método devuelve la suma de los 3 parámetros
Función suma(int numero1,int numero2, int numero3)
‘ este método devuelve la concatenación de cadena1 y cadena2
Función suma(String cadena1, String cadena2)