Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Modelado Programación II Principios básicos de modelado de objetos • Un modelo representa una cosa o ente. En la programación orientada a objetos los modelos serán esquemas que representen sistemas computacionales grandes y complejos. • Los principios básicos del modelado son los siguientes: El tipo de modelo que se crea influye la manera en que el problema es atacado. Cada modelo puede ser expresado en diferentes niveles de precisión. Los mejores modelos están conectados con la realidad. Un solo modelo no es suficiente. Modelar clases y objetos UML, se utilizará para modelar clases y las relaciones entre clases. La clase es el concepto o la contenedora de objetos y el objeto es la instancia, el ejemplar, la encarnación de la clase. La clase tiene atributos y operaciones. El siguiente diagrama representa el modelo UML de una clase. Nombre de la clase Atributos Métodos Tomado de: http://www.codecompiling.net/files/slides/UML_clase_04_UML_clases.pdf A los atributos y operaciones de la clase se les llama miembros de la clase. Estos pueden ser privados, públicos o protegidos, son llamados permisos de acceso a la clase. Símbolos: - Privado + Público # Protegido Ejemplo: El siguiente diagrama modela un objeto. Nombre del objeto Nombre de la clase Modelar relaciones entre clases Un programa orientado a objetos es una colección de objetos de diferentes clases que se comunican entre sí enviándose mensajes. Para que esos objetos se puedan comunicar mediante mensajes y de esta forma puedan resolver problemas complejos es necesario que las clases de las cuales son instanciados estén relacionadas. Una relación entre clases es un vínculo o relación estructural que especifica cómo los objetos de una clase están conectados con los objetos de otra clase. Relación Símbolo Frase Asociación “vinculado con” Agregación “tiene”, “esta agregado en” Composición “tiene”, “esta compuesto de” Dependencia “usa un” Herencia “es un tipo de” Realización “implement” Tipos de relaciones entre clases • Las relaciones Composición y Agregación (ó Acumulación) son también Asociaciones, pero más específicas. Dependencia La dependencia es una relación donde una clase necesita de otra clase para poder funcionar. Es una relación más débil que la asociación. La dependencia muestra la relación entre un cliente y un proveedor de un servicio usado por el cliente. • Cliente es el objeto que solicita el servicio • Servidor es el objetos que provee el servicio solicitado Se representa por una línea discontinua con una punta de flecha que apunta del cliente al servidor (o también llamado proveedor). Una clase que no cuenta con atributos es una clase sin estado y se denomina degenerada. La clase Math es una clase degenerada que consiste de un conjunto de funciones matemáticas. Asociación La asociación es una relación que describe una conexión conceptual entre dos objetos, no es un relación fuerte porque el tiempo de vida de un objeto no depende del otro. El tipo más común de asociación es una asociación binaria entre dos clases. • Un jugador pertenece a un equipo • Un profesor imparte una materia • Un médico trabaja en un hospital En esto casos la asociación es en una dirección. Aunque en otros casos los objetos pueden relacionarse en más de una forma. Asociación bidireccional Asociación unidireccional En algunas herramientas se utiliza este conector (unidireccional) Ejemplos Nombre de la asociación Representación gráfica • Un solo objeto puede asociarse consigo mismo (relación involutiva) • Cada conexión de una asociación a una clase se llama extremo de la asociación. Los extremos pueden tener información de la asociación como nombres de rol, visibilidad y multiplicidad. VisibilidadRol Multiplicidad La multiplicidad determina cuántos objetos de cada clase intervienen en la relación Multiplicidad Significado Lectura 1 Uno y sólo uno Una A siempre se asocia con una B 0..1 Cero o 1 Una A siempre se asocia con ninguna o una B N..M Desde N hasta M Una A siempre se asocia de N a M B’s * Cero o varios Una A siempre se asocia con cero o más B’s 0..* Cero o varios Una A siempre se asocia con cero o más B’s 1..* Uno o varios (al menos 1) Una A siempre se asocia con 1 o más B’s N N Una A siempre se asocia con N B’s A B 1 A B 0..1 A B N..M A B* A B 0..* A B 1..* A B N Multiplicidad Se lee Un estudiante puede tomar de 1 a 5 materias. Un automóvil tiene 4 llantas. Un médico trabaja en 0 ó hasta en 2 hospitales, en un hospital trabajan de tres a más médicos. Una materia puede ser impartida por cero o más profesores, un profesor puede impartir cero o más materias. Ejemplos Una clase puede asociarse con más de una clase distinta. Ejemplo: Equivale a: public class Chofer { private String nombre; private int edad; private String curp; private Auto autoAsignado; public Tipo conducirAuto() { .. } public Tipo obtenerLicencia() {…} } public class Auto { private String numSerie; private String modelo; private int numPuertas; private Chofer chofer[]; public Tipo avanzar() { .. } public Tipo acelerar() {…} public Tipo detener() {…} } Código en Java: Agregación La agregación es un tipo de asociación que indica que una clase es parte de otra clase (composición débil). Es una relación entre clases de un todo/parte. Es una forma “débil” de composición cuando la parte es independiente del todo. Características: Es una asociación binaria Es asimétrica – solo un extremo de la asociación puede ser una agregación Es transitiva – Si A es parte de B y B es parte de C entonces A es parte de C . A,B y C son clases. El componente PARTE puede estar en varios componentes TODO y si algunos o todos los componentes PARTE son eliminados, el componente TODO puede seguir existiendo La clase Todo tiene un atributo de la clase Parte, lo que da significado a la agregación, que es una relación débil, ya que si Parte es eliminada, la clase Todo seguirá existiendo. Notación Bicicleta tiene dos rines (Rin). Un Rin podría ser parte de una, varias o ninguna bicicleta. Una computadora tiene un monitor. Un monitor es parte de una computadora. Ejemplo Se puede establecer una restricción a una agregación para que se puede elegir entre uno u otro componente. Restricciones Composición La relación de composición es una forma “fuerte” de agregación con las siguientes propiedades: Es una asociación binaria Es una relación TODO/PA RTE. TODO y PARTE son clases. Una PARTE podría estar incluida a lo más en un TODO a la vez. Si un TODO es eliminado, todas sus PARTES son eliminadas . La clase PARTE es un atributo de la clase TODO. • La composición se denota con un diamante sólido (oscuro). • La clase Todo tiene uno o muchos objetos de la clase Parte. • La objetos de la clase Parte componen o son parte de la clase Todo. • Cada objeto de la clase Parte pertenece o compone a la clase Todo. Notación Ejemplo Ejemplo Una clase que puede contener un atributo de la misma clase se denomina clase autoagregada. Herencia (o Generalización) La relación de Herencia entre clases se define como un mecanismo mediante el cual, la clase derivada (subclase) incorpora atributos y operaciones de clases mas generales (superclase o clase base). Esto es, Herencia Simple. La herencia se identifica por la frase “es un tipo de” . Si una clase incorpora atributos y operaciones de más de una clase, decimos que se trata de Herencia Múltiple. Más particular Más general Las clases se vuelven más generales o abstractas hacia arriba y más particulares o especializadas hacia abajo. Notación La clase base hereda los miembros protegidos o públicos a las clases derivadas. Los miembros privados no se heredan. EjemploEquilatero Una clase puede heredar de dos o más clases, a esto se le llama herencia múltiple. Java no acepta la herencia múltiple, sin embargo, tiene un mecanismo para simular herencia múltiple denominada interface. Interface (Realización) • Las interfaces (realización) es una relación entre dos clases, una que representa la especificación y otra que representa la implementación. • Si se establece la relación entre una clase y una interface, decimos que la clase implementa la interface, esto significa que se establece un contrato entre ambas clases, es decir, la clase debe redefinir todos y cada de uno de los métodos (operaciones) de la interface. • La interface es una clase que contiene únicamente métodos (operaciones) abstractos y constantes. La clase ClaseQueImplementa implementa la Interface, lo que significa que ClaseQueImplementa debe redefinir los métodos de la interface NombreInterface. ClaseQueImplementa simula el comportamiento que representa la Interface. En Java no existe herencia múltiple, ésta es simulada mediante Interfaces. La herencia simple y múltiple se puede realizar entre interfaces. Ejemplo Diapositiva 62: Modelado Diapositiva 63: Principios básicos de modelado de objetos Diapositiva 64: Modelar clases y objetos Diapositiva 65 Diapositiva 66 Diapositiva 67 Diapositiva 68: Modelar relaciones entre clases Diapositiva 69: Tipos de relaciones entre clases Diapositiva 70: Dependencia Diapositiva 71 Diapositiva 72: Asociación Diapositiva 73: Representación gráfica Diapositiva 74 Diapositiva 75: Multiplicidad Diapositiva 76: Ejemplos Diapositiva 77 Diapositiva 78 Diapositiva 79: Agregación Diapositiva 80: Notación Diapositiva 81: Ejemplo Diapositiva 82: Restricciones Diapositiva 83: Composición Diapositiva 84: Notación Diapositiva 85: Ejemplo Diapositiva 86: Ejemplo Diapositiva 87 Diapositiva 88: Herencia (o Generalización) Diapositiva 89: Notación Diapositiva 90: Ejemplo Diapositiva 91 Diapositiva 92: Interface (Realización) Diapositiva 93 Diapositiva 94: Ejemplo
Compartir