Relaciones, clases abstractas y clases selladas

Anuncio
E.E.S.T. N° 5 – 7° 1° TECIP
Proyecto, diseño e implementación de sistemas computacionales
Profesor: Lucas Carnero
Relaciones
Dentro del paradigma de programación orientada a objetos, o POO, se
encuentra que las distintas clases que formen parte de un sistema, en
ocasiones pueden relacionarse entre sí de distintas maneras. Se pueden
clasificar las relaciones básicamente en tres tipos:
Asociación: la asociación implica una conexión estructural entre dos o más
clases. Por ejemplo, dadas las clases Persona y Dirección, se puede decir que
una Persona vive en una determinada Dirección.
Agregación: es un tipo de asociación en que varias clases se utilizan
para formar otra. Por ejemplo, dadas las clases Polígono y Punto, se
puede decir que un objeto de tipo Polígono se compondrá de uno o más
objetos Punto. Es un tipo de relación débil, en el sentido de que la
existencia de los objetos Punto no necesariamente depende de la
existencia del objeto Polígono. Se identifica a esta relación considerando
la frase “usa un”. Por ejemplo: una persona usa una tarjeta de crédito.
Composición: es un tipo de asociación en que, al igual que en la
agregación, varias clases se utilizan para formar otra pero con la
diferencia de que es un tipo de asociación fuerte, en el sentido de que la
existencia de las partes depende de la clase que las mismas conforman.
Se identifica a esta relación considerando la frase “tiene un”. Por
ejemplo: un auto tiene un volante.
Dependencia: es una relación que muestra la relación entre una clase que
utiliza un servicio de otra clase. A la clase que va a hacer uso del servicio se la
llama cliente, y a la clase que provee el servicio, servidor. Por ejemplo: si se
desea resolver una ecuación cuadrática, una clase podría utilizar los métodos
Pow() y Sqrt() de la clase Math.
Generalización o especialización: es un tipo de relación que conecta dos o
más clases entre las que se comparten propiedades y/o comportamientos, a la
vez que cada clase puede tener características exclusivas. Este tipo de relación
permite establecer una jerarquía de clases. Se identifica a esta relación por
E.E.S.T. N° 5 – 7° 1° TECIP
Proyecto, diseño e implementación de sistemas computacionales
Profesor: Lucas Carnero
medio de la frase “es un”. Por ejemplo: dadas las clases Mascota y Perro, se
puede decir que Perro es una Mascota.
Herencia: la relación de especialización da paso al concepto de
Herencia, un pilar del paradigma de programación orientada a objetos.
En este tipo de relación, que se da entre dos clases, la clase hija o
derivada hereda atributos y comportamiento de la clase madre o base
(excepto aquellos que hayan sido definidos de manera privada). La clase
derivada puede modificar el comportamiento heredado de la clase base.
Por ejemplo: supóngase la existencia de una clase Figura, la cual tiene
un método llamado Area(). Existen además las clases Rectangulo,
Triangulo y Circulo, todas ellas derivadas de Figura. Como cada tipo de
Figura utiliza una fórmula distinta para el cálculo de su área, cada figura
deberá redefinir o invalidar el comportamiento heredado, de manera que
en cada caso se utilice la fórmula correcta.
Clase abstracta
Se ha visto que las clases permiten dar forma, en algún lenguaje de
programación orientado a objetos, a entidades del mundo real. Por ejemplo, se
puede modelar a una Persona con sus propiedades y comportamiento. A partir
de una clase, el programador puede luego generar instancias (objetos) de
dicha clase, que tendrán un estado determinado. Por otro lado, una clase
puede establecer una relación de especialización con otra, que hemos llamado
herencia.
La clase abstracta es un tipo de clase que no puede ser instanciado, y cuyo
propósito es servir de base para la creación de otras clases, que deberán
heredar de ella.
Una clase abstracta puede incluir métodos abstractos, los que se deben
implementar en una clase derivada, o bien declararse la clase derivada también
como clase abstracta.
Clase final ó sellada
Una clase sellada o final es un tipo de clase que, a diferencia de las clases
abstractas, puede ser instanciada, es decir se pueden crear objetos a partir de
E.E.S.T. N° 5 – 7° 1° TECIP
Proyecto, diseño e implementación de sistemas computacionales
Profesor: Lucas Carnero
ella. Pero no puede ser heredada, es decir que no podrá tener clases
derivadas.
Ejemplo
Un ejemplo de código en Visual Basic.NET puede ser descargado de
http://www.lucascarnero.com.ar/t5/pdisc/ejemplos/Ejemplo_2_POO_ClaseAbstr
acta_ClaseSellada_Herencia_VB.zip. En el mismo se vierten los conceptos de
herencia, clase abstracta y clase sellada.
Descargar