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.