Fundamentos
del Enfoque orientado a Objetos.
El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la
base de todo desarrollo orientado a objetos. Estos principios son: la
Abstracción, el Encapsulamiento, la Modularidad y la Herencia.
Fundamento
1: Abstracción
Es el principio de ignorar aquellos aspectos de un fenómeno observado que no
son relevantes, con el objetivo de concentrarse en aquellos que si lo son. Una
abstracción denota las características esenciales de un objeto (datos y
operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto
correcto de abstracciones de un determinado dominio, es el problema central del
diseño orientado a objetos.
Los mecanismos de abstracción son usados en el EOO para extraer y definir del
medio a modelar, sus características y su comportamiento. Dentro del EOO son
muy usados mecanismos de abstracción: la Generalización, la Agregación y la
clasificación.
- La generalización
es el mecanismo de abstracción mediante el cual un conjunto de clases de
objetos son agrupados en una clase de nivel superior (Superclase), donde
las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y
las diferencias entre ellas son ignoradas. En consecuencia, a través de la
generalización, la superclase almacena datos generales de las subclases, y
las subclases almacenan sólo datos particulares.La especialización es lo
contrario de la generalización. Por ejemplo; La clase Médico es una
especialización de la clase Persona, y a su vez, la clase Pediatra es una
especialización de la superclase Médico.
- La agregación es el
mecanismo de abstracción por el cual una clase de objeto es definida a
partir de sus partes (otras clases de objetos). Mediante agregación se
puede definir por ejemplo un computador, por descomponerse en: la CPU, la
ULA, la memoria y los dispositivos periféricos. El contrario de agregación
es la descomposición.
- La clasificación
consiste en la definición de una clase a partir de un conjunto de objetos
que tienen un comportamiento similar. La ejemplificación es lo contrario a
la clasificación, y corresponde a la instanciación de una clase, usando el
ejemplo de un objeto en particular.
Fundamento
2: Encapsulamiento
Es la propiedad del EOO que permite ocultar al
mundo exterior la representación interna del objeto. Esto quiere decir que el
objeto puede ser utilizado, pero los datos esenciales del mismo no son
conocidos fuera de él. La idea central del encapsulamiento es esconder los
detalles y mostrar lo relevante. Permite el ocultamiento de la información
separando el aspecto correspondiente a la especificación de la implementación;
de esta forma, distingue el "qué hacer" del "cómo hacer".
La especificación es visible al usuario, mientras que la implementación se le
oculta. El encapsulamiento en un sistema orientado a objeto se representa en
cada clase u objeto, definiendo sus atributos y métodos con los siguientes modos
de acceso:
- Público (+): Atributos
o Métodos que son accesibles fuera de la clase. Pueden ser llamados por
cualquier clase, aun si no está relacionada con ella.
- Privado (-):
Atributos o Métodos que solo son accesibles dentro de la implementación de
la clase.
- Protegido (#): Atributos
o Métodos que son accesibles para la propia clase y sus clases hijas
(subclases).
Los atributos y los métodos que son públicos constituyen la interfaz de la
clase, es decir, lo que el mundo exterior conoce de la misma.Normalmente lo
usual es que se oculten los atributos de la clase y solo sean visibles los
métodos, incluyendo entonces algunos de consulta para ver los valores de los
atributos. El método constructor (Nuevo, New) siempre es Público.
Fundamento
3: Modularidad
Es la
propiedad que permite tener independencia entre las diferentes partes de un
sistema. La modularidad consiste en dividir un programa en módulos o partes,
que pueden ser compilados separadamente, pero que tienen conexiones con otros
módulos. En un mismo módulo se suele colocar clases y objetos que guarden una
estrecha relación. El sentido de modularidad está muy relacionado con el
ocultamiento de información.
Fundamento
4: Herencia
Es el proceso mediante el cual un objeto de una clase adquiere
propiedades definidas en otra clase que lo preceda en una jerarquía de
clasificaciones. Permite la definición de un nuevo objeto a partir de
otros, agregando las diferencias entre ellos (Programación Diferencial),
evitando repetición de código y permitiendo la reusabilidad.
Las clases heredan los datos y métodos de la superclase. Un método
heredado puede ser sustituido por uno propio si ambos tienen el mismo nombre.
La herencia puede ser simple (cada clase tiene sólo una superclase) o múltiple
(cada clase puede tener asociada varias superclases). La clase Docente y la
clase Estudiante heredan las propiedades de la clase Persona (superclase,
herencia simple). La clase Preparador (subclase) hereda propiedades de la clase
Docente y de la clase Estudiante (herencia múltiple).
Fundamento
5: Polimorfismo
Es una propiedad del EOO que permite que un método tenga múltiples
implementaciones, que se seleccionan en base al tipo objeto indicado al
solicitar la ejecución del método. El polimorfismo operacional o Sobrecarga
operacional permite aplicar operaciones con igual nombre a diferentes clases o
están relacionados en términos de inclusión. En este tipo de polimorfismo, los
métodos son interpretados en el contexto del objeto particular, ya que los
métodos con nombres comunes son implementados de diferente manera dependiendo
de cada clase.
Por ejemplo, el área de un cuadrado, rectángulo y círculo, son
calculados de manera distinta; sin embargo, en sus clases respectivas puede
existir la implementación del área bajo el nombre común Área. En la práctica y
dependiendo del objeto que llame al método, se usará el código correspondiente.
Ejemplos:
Superclase: Clase Animal
Subclases: Clases Mamífero, Ave, Pez.
Se puede definir un método Comer en cada subclase, cuya implementación cambia
de acuerdo a la clase invocada, sin embargo el nombre del método es el mismo.
Mamifero.Comer ≠ Ave.Comer ≠ Pez.Comer
Otro ejemplo de polimorfismo es el operador +. Este operador tiene dos
funciones diferentes de acuerdo al tipo de dato de los operandos a los que se
aplica. Si los dos elementos son numéricos, el operador + significa suma
algebraica de los mismos, en cambio si por lo menos uno de los operandos es un
String o Carácter, el operador es la concatenación de cadenas de caracteres.
No hay comentarios:
Publicar un comentario