Fundamentos del Enfoque Orientado a Objetos
(EEO)
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, la Herencia y el Polimorfismo.
Ø 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. 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.
§ 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.
Ø 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 importante. 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.
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.
Ø 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).
Ø 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.
Características
- Abstracción: Denota las características
esenciales de un objeto, donde se capturan sus comportamientos. Cada
objeto en el sistema sirve como modelo de un "agente" abstracto
que puede realizar trabajo, informar y cambiar su estado, y "comunicarse"
con otros objetos en el sistema sin revelar cómo se implementan estas
características. Los procesos, las funciones o los métodos pueden también
ser abstraídos y cuando lo están, una variedad de técnicas son requeridas
para ampliar una abstracción.
- Encapsulamiento: Significa reunir a todos los
elementos que pueden considerarse pertenecientes a una misma entidad, al
mismo nivel de abstracción. Esto permite aumentar la cohesión de los
componentes del sistema. Algunos autores confunden este concepto con el
principio de ocultación, principalmente porque se suelen
emplear conjuntamente.
- Modularidad: Se denomina Modularidad a la
propiedad que permite subdividir una aplicación en partes más pequeñas
(llamadas módulos), cada una de las cuales tan independiente como sea posible de la
aplicación en sí y de las restantes partes. Estos módulos se pueden
compilar por separado, pero tienen conexiones con otros módulos. Al igual
que la encapsulación, los lenguajes soportan la Modularidad de diversas
formas.
- Principio de ocultación: Cada objeto está aislado
del exterior, es un módulo natural, y cada tipo de objeto expone una
interfaz a otros objetos que específica cómo pueden interactuar con
los objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificación por quien no tenga derecho a acceder a ellas,
solamente los propios métodos internos del objeto pueden acceder a su
estado.
- Polimorfismo: Comportamientos diferentes,
asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos
por ese nombre se utilizará el comportamiento correspondiente al objeto
que se esté usando.
- Herencia: Las clases no están aisladas, sino que
se relacionan entre sí, jerarquía de clasificación. Los objetos
heredan las propiedades y el comportamiento de todas las clases a las que
pertenecen.
- Recolección de basura: La recolección de basura o
garbage collector es la técnica por la cual el entorno de objetos se
encarga de destruir automáticamente, y por tanto desvincular la memoria
asociada, los objetos que hayan quedado sin ninguna referencia a ellos.
Esto significa que el programador no debe preocuparse por la asignación o liberación
de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará
cuando nadie lo esté usando.
- Clase: Definiciones de las propiedades y
comportamiento de un tipo de objeto concreto. La instanciación es la lectura
de estas definiciones y la creación de un objeto a partir de ellas.
- Objeto: Entidad provista de un conjunto de
propiedades o atributos (datos) y de comportamiento o funcionalidad
(métodos) los mismos que consecuentemente reaccionan a eventos. Se
corresponde con los objetos reales del mundo que nos rodea, o a objetos
internos del sistema (del programa). Es una instancia a una clase.
- Método: Algoritmo asociado a un objeto (o a una
clase de objetos), cuya ejecución se desencadena tras la recepción de un
"mensaje". Desde el punto de vista del comportamiento, es lo que
el objeto puede hacer. Un método puede producir un cambio en las
propiedades del objeto, o la generación de un "evento" con un
nuevo mensaje para otro objeto del sistema.
- Evento: Es un suceso en el sistema (tal como una
interacción del usuario con la máquina, o un mensaje enviado por un
objeto). El sistema maneja el evento enviando el mensaje adecuado al
objeto pertinente. También se puede definir como evento, a la reacción que
puede desencadenar un objeto, es decir la acción que genera.
No hay comentarios:
Publicar un comentario