1 / 60

Ignacio Zahonero Martínez, Luis Joyanes Aguilar

CURSO Programación Orientada a Objetos Parte 2 RELACIONES ENTRE CLASES ( UML, Lenguaje Unificado de Modelado). Ignacio Zahonero Martínez, Luis Joyanes Aguilar. RELACIONES ENTRE CLASES.

nira
Télécharger la présentation

Ignacio Zahonero Martínez, Luis Joyanes Aguilar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CURSO Programación Orientada a ObjetosParte 2RELACIONES ENTRE CLASES(UML, Lenguaje Unificado de Modelado) Ignacio Zahonero Martínez, Luis Joyanes Aguilar

  2. RELACIONES ENTRE CLASES • Las clases y objetos no pueden existir aislados y en consecuencia existirán relaciones entre ellos. Al igual que ocurre con los conceptos, entes del mundo real, que entre ellos hay relaciones de distinto tipo. • Las relaciones se expresan frecuentemente utilizando verbos o frases con verbo del lenguaje natural, tales como vive-en, participa-en, trabaja-para, está compuesto de. Por ejemplo: • Periodista participa en Tertulia • Gerente paga la Factura • Semáforo controla Trafico • Las relaciones entre clase pueden indicar alguna forma de compartir, así como algún tipo de conexión semántica. • Los tipos de relaciones entre clases: • Asociación • Agregación • Generalización/especialización • Dependencias • Cada relación tiene una representación gráfica en UML

  3. ASOCIACIONES(I) • La asociación es la relación más común entre clases. • Una asociación es una conexión conceptual entre clases. Describe un grupo de enlaces con estructura y semántica comunes. Por ejemplo: • Las conexiones que describe una asociación dan lugar a interacciones entre los objetos de una colaboración. • Las asociaciones más comunes son las binarias, esto es, intervienen dos clases lee Coche lleva Copiloto Cajero Tarjeta participa en Jugador Equipo Gestiona ficha Entrenador • Varias clases se pueden conectar a una. Por ejemplo Jugador, Entrenador y Equipo lleva

  4. ASOCIACIONES(II) • Una asociación puede contener atributos y operaciones. Cuando esto ocurre se tiene una clase de asociaciones trabaja en Camarero Restaurante Contrato negociado Gerente • Las asociaciones son inherentemente bidireccionales, pueden recorrerse en ambas direcciones. Por ejemplo: • Supermercadorecibe pedidos telefónicos de Clientes • Clientehace su pedido por teléfono al Supermecado • En ocasiones es deseable que la navegación sea unidireccional. Gráficamente, cuando es unidireccional, la línea • que une las dos clases termina en punta de flecha.

  5. INFORMACION DE LAS ASOCIACIONES • Una asociación tiene un nombre, con frecuencia un verbo. El nombre de la asociación se escribe en la línea que representa la asociación. Por ejemplo: • UsuarioutilizaComputadoraEstudianterecibe un Curso Piloto controla Avión • Es posible utilizar una punta de flecha para indicar el sentido en que se lee. Puede tener nombres diferentes, uno por cada dirección. • Cada extremo de una asociación es un rol (papel que juega). Cada rol puede tener un nombre que indica cómo es visualizada la clase por la otra. Por ejemplo, una Empresa visualiza a Persona como un empleado. • Los roles deben ser únicos.

  6. Persona 1 INFORMACION DE LAS ASOCIACIONES • Multiplicidad: es el número de objetos de un extremo de la asociación que están enlazados con un objeto del otro extremo. Por ejemplo, una Empresa puede emplear a muchas Personas. La multiplicidad de Empresa con Persona es "una a muchos": 1 .. *. • Otro ejemplo: una Persona puede tener muchos Permisos de conducir. Un Permiso sólo pertenece a una Persona. La representación gráfica: * PermisoConducir Alternativamente, la multiplicidad * se representa mediante un contenedor, una lista, que almacena los objetos: Persona 1 Lista * PermisoConducir

  7. NAVEGACIÓN • La navegación indica si es posible atravesar una asociación binaria desde un objeto de un extremo para llegar a uno o más objetos del otro extremo. • La navegación suele ser bidireccional. En ocasiones es deseable que sea unidireccional. • Para atravesar las asociaciones se utilizan expresiones de la clase origen que permiten obtener el objeto o conjunto de objetos asociados con una instancia de la misma. • Un factor a tener en cuenta para determinar el tipo de navegación es conocer la necesidad de colaborar una clase con otra para realizar un requisito del contexto del problema.

  8. posee 0..* Persona Coche operación Cajero * * Cliente propietario password MULTIPLICIDAD • Indica el número de objetos de una clase que se relacionan con un objeto de la otra clase de la asociación ( o agregación). Por ejemplo: • Una persona posee cero o muchos coches. • La multiplicidad se muestra en los extremos de la asociación, en las clases donde es aplicable. • Los valores, rango, de multiplicidad son los siguientes: • Exactamente 1 (1). Un número finito. (Estudiante (1) dispone de un Carnet) • Cero ó 1, se indica 0 .. 1, opcionalidad. (El Medico visita a Paciente acompañado, o no, de ATS) • Cero a muchos, se indica 0 .. * • Uno a muchos, se indica 1 .. * . • Rangos fijos, 1 .. 4, o varios números (2, 5, 6,7).

  9. Orquesta 1..* Profesor AGREGACIÓN • La relación entre clases de agregación se considera un caso especial de asociación. Es una relación Todo-Parte entre una clase agregada (el todo) y una de las partes que los forman. Da lugar a jerarquías de agregación. • Ejemplo 1, un Elemento de dibujo es un todo formado por las partes: Linea, FiguraSimple y FiguraCompuesta • Ejemplo 2: un Equipo multidisciplinar(el todo) está formado por un Pedagogo, dos Psicologos y tres Educadores • Propiedades: • Transitiva (A es parte de B, B es parte de C -> A es parte (subparte) de C) • Antisimétrica: un objeto no puede ser el todo y la parte simultáneamente. • La agregación se representa por un rombo en la parte del todo. • Al ser un caso especial de asociación, puede haber multiplicidad. Batería 6..12 Cañón

  10. Universidad * Facultad Parking Barrera Ascensor Plaza TIPOS DE AGREGACIÓN • Agregación simple o compartida: la parte puede pertenecer a más de un agregado. Es decir las partes pueden ser partes de cualquier todo. La destrucción del Todo no implica la destrucción de las partes. • Las partes, en este tipo de agregación, pueden existir independientemente del todo. • Ejemplo : un Equipo de trabajo se compone de diferentes Personas. Una misma Persona puede ser miembro de más de un equipo de trabajo. • La agregación compartida se representa con el rombo. • Composición (agregación fuerte): el todo "contiene" a las partes. Las partes y el todo se crean y destruyen en el todo. Forma jerarquías de partes. • Un objeto sólo puede ser parte de una composición. • Se representa con un rombo sombreado en el extremo del todo. 2 2 1 .. *

  11. GENERALIZACIÓN/ESPECIALIZACIÓN • Una generalización se conoce como una relación es-un, es-un-tipo-de. Es una relación entre clases especializadas de una clase general. Un Vendedor es-un Empleado, una Opera es-un Espectáculo, un Rectángulo es un tipo de Forma. • La generalización es una relación entre una clase general y una clase específica. La clase específica, denominada subclase, hereda de la clase general. Se heredan los atributos y las operaciones. • La clase general agrupa los atributos y los métodos comunes a las clases especializadas. • La generalización se representa con una línea de la clase más específica a la clase más general con un triángulo vacío en el extremo de la línea de la superclase. • Una subclase o clase hija puede ser a su vez clase base de otra lo que produce jerarquías de clases. • En las jerarquías de generalización/especialización, hacia arriba se generaliza. La clase más alta en la jerarquía es la clase más general. la clase base. • La implementación de la generalización en un lenguaje de programación se conoce como herencia.

  12. Cuenta Cuenta corriente Cuenta vivienda Cuenta de valores Registro Registro de pasajero Registro de vuelo pasajero de empresa vuelo compartido vuelo operacional pasajero turista JERARQUÍAS DE GENERALIZACÍON

  13. CONCEPTOS ESENCIALES • La creación de una clase a partir de una existente se denomina derivación. • A la capacidad de definir una clase a partir de otra clase ya existente y de añadirle comportamiento y estado se conoce como extensión de la clase original (Java). • El comportamiento de una clase se puede extender mediante un mecanismo que recibe el nombre de herencia. • class BilleteElectronico extends Billete • { • La clase BilleteElectonico extiende de Billete. Por consiguiente, BilleteElectronico es una subclase de Billete y Billete es la superclase (clase base) de BilleteElectronico. • Al crear un objeto de tipo BilleteElectronico se crea un único objeto que consta del objeto de tipo Billete extendido con los atributos propios de BilleteElectronico. Todos los métodos (no privados) de Billete y de BilleteElectronico se pueden invocar directamente desde el objeto BilleteElectronico. • BilleteElectronico e = new BilleteElectronico("Ignacio", 233, "Madrid", visa); • Todo objeto de la clase BilleteElectronicoes-un objeto de tipo Billete.

  14. HERENCIA • La orientación a objetos se caracteriza, además de por la encapsulación y la ocultación de información, por incorporar la característica de la herencia. • Mediante la propiedad de herencia se permite a los objetos ser construidos a partir de otros objetos. Por ejemplo, un objeto ventana de texto se construye a partir del objeto ventana. • Otra forma de expresar la propiedad de herencia, la capacidad de un objeto para utilizar las estructuras de datos y los métodos de objetos ascendientes o antepasados. • El objetivo final es la reutilización, es decir, reutilizar el código anteriormente desarrollado. • La herencia implica una clase base y una jerarquía de clases que contienen las clases derivadas de la clase base. Las clases derivadas heredan el código de su clase base, añadiendo su propio código especial, incluso cambian aquellos elementos de la clase base que necesita sean diferentes. • La herencia se apoya en el significado de ese concepto en la vida ordinaria. La clases básicas se dividen en subclases. La clase electrodoméstico se divide en subclase lavadora, cocina, lavavajillas, etc. La jerarquía comparte características comunes; si bien una lavadora tiene características especiales que la diferencian de una cocina. • Las características y comportamiento comunes se definen en la clase base.

  15. TIPOS DE HERENCIA • Hay dos de tipos de herencia: herencia simple y herencia múltiple. • La herencia simple es aquella en la que cada clase hereda de una única clase. • La herencia múltiple es la transmisión de métodos y datos de más de una clase base a la clase derivada. • Por ejemplo, en el contexto de una simulación la clase Concurre ( representa actividades concurrentes ) puede tener dos clase base, la clase Tarea y la clase Dato. • Dos problemas se pueden presentar cuando se diseñan clases con herencia múltiple: • • Colisiones de nombres de diferentes clases base. • • Herencia repetida de una misma clase base. • Las jerarquías de herencia múltiple pueden ser complejas de gestionar. De hecho, no todos los lenguajes OO la implementan. • Java, C# y Smalltalk no implementa la herencia múltiple. Eiffel y C++ admiten herencia simple y múltiple.

  16. HERENCIA MÚLTIPLE Motor - potencia MotorGas - tiempoExplos MotorElectrico - intensidad MotorHíbrido • Esta jerarquía con herencia múltiple presenta el problema de repetición del atributo potencia en la clase • MotorHibrido.

  17. HERENCIA SIMPLE Artículo Audio Altavoz Vídeo Radio Amplificador CD • En esta jerarquía cada clase tiene como máximo una sola superclase. La herencia simple permite que una clase herede las propiedades de su superclase jerárquica.

  18. SUSTITUCIÓN/REDEFINICIÓN • Los atributos y métodos definidos en la superclase se heredan por las subclases. Si la propiedad se define nuevamente en la subclase, entonces esta definición es la utilizada en la subclase. • La capacidad de una clase derivada (subclase) para definir un miembro con el mismo nombre que un miembro heredado se denomina redefinición (anulación o sustitución son términos equivalentes). • class Telef { class Movil extends Telef{ class Fijo extends Telef { • public void sonar() { public void sonar() { public void sonar() { • System.out.print(" rin rin "); cancion.audio(); System.out. • } } print(" ron ron "); • } • Cuando se referencia al miembro redefinido desde un objeto de la subclase, se usará el miembro definido por dicha subclase. • El miembro heredado de la superclase no se pierde por ser redefinido, es posible acceder a dicho miembro cualificándolo (en Java con super). • La clase Fijo puede redefinir sonar(), añadiendo a las características de sonar() de Telef las propias de Fijo: • public void sonar() { • super.sonar(); • System.out.print(" ron ron ") • }

  19. CLASES ABSTRACTAS • Las clases abstractas definen un concepto o tipo generalizado y sirven para describir nuevas clases. Una clase abstracta no se puede instanciar y sólo tiene significado como clase base de otras clases. • En las jerarquías de clases, las superclases que se crean a partir de subclases con atributos y comportamientos comunes, y que sirven para derivar otras clases que comparten sus características, son clases abstractas.

  20. IMPLEMENTACIÓN DE ASOCIACIONES • La implementación de la relación de asociación depende de la multiplicidad y de la navegación. • En general, en Java se implementa definiendo un atributo que permita acceder al, o a los, objetos con que está relacionado. • Por ejemplo, si la clase claseA tiene una relación de asociación bidireccional con la clase claseB, de multiplicidad 1 a 1 la implementación en Java: • class claseA class claseB • { { • protected claseB objB; protected claseA objA; • Posiblemente se necesite definir un método de la clase para establecer la asociación con otra clase. • class claseA class claseB • { { • protected claseB objB; protected claseA objA; • public setEnlace(claseB x) public setEnlace(claseA q) • { { • objB = x; objA = q; • x.setEnlace(this); ... • } }

  21. ASOCIACIONES UNIDIRECCIONALES(I) • Multiplicidad uno (1): se añade un atributo de tipo referencia a objeto de la clase destino. • class Radio • { • protected Emisora actual = null; • public void setCanal(int dial) • { • actual = new Emisora(dial); • } • Multiplicidad uno a muchos: se añade un atributo que permita almacenar una colección de objetos. Si el número de objetos relacionados tiene un límite fijo, la colección puede ser un array, ..., en general un contenedor. • class Pasajero class Vuelo public void setPax(Pasajero p) • { { { • int contador; contador ++; • ; protected Pasajero [] pd; // validar capacidad • }public Vuelo(int capacidad) pd[contador] = p; • { } • contador = 0; • pd = new Pasajero[capacidad]; • }

  22. ASOCIACIONES UNIDIRECCIONALES(II) • Multiplicidad uno a muchos. Si el extremo "muchos" no es un límite conocido se utiliza un contenedor dinámico (una lista, un vector ...). Teatro Espectáculo 0..n Se representa como: Teatro Contenedor Espectáculo Espectáculo 0..n

  23. IMPLEMENTACIÓN DE ASOCIACIONES BIDIRECCIONALES • Cuando la relación de asociación entre dos clases es navegable en ambos sentidos, en general se implementa igual que una asociación unidireccional pero en ambos sentidos. • En el caso de multiplicidad uno a uno: • class claseA class claseB • { { • protected claseB objB; protected claseA objA; • Para multiplicidades rango: • class Biblioteca class Persona • { { • private ListaSocio sc; private Biblioteca[] bl; Biblioteca Persona 1..n 1..8 socio

  24. IMPLEMENTACIÓN DE HERENCIA • La técnica de crear nuevas clases a partir de las antiguas se conoce como derivación. La nueva clase se denomina clase derivada y la clase antigua es la clase base. • En Java la herencia se conoce como derivación o extensión. Se emplea la palabra reservada extends. • Sintaxis : • class Base { ... } • class Derivada extends Base • { • // atributos nuevos de Derivada • // métodos nuevos de Derivada • } • Los miembros privados de la clase base nunca son visibles en la clase derivada. • En la clase derivada se pueden invocar a las versiones originales de los métodos redefinidos utilizando super. • En general, super hace referencia a la porción del objeto Padre que tiene el objeto Hijo.

  25. REGLAS DE ACCESO A LA CLASE BASE • Los miembros públicos de la clase base son también miembros públicos de la clase derivada, los miembros protegidos de la clase base se convierten en protegidos de la clase derivada, y los miembros privados de la clase base no son visibles en la clase derivada. class Cartilla { private String tit; protected double saldo; public void ingresar(double q) { saldo += q; } class Ahorrro extends Cartilla { private int duracion; public void informe() { if (saldo > 0 ...// heredado System.out.println(tit); // error, no visible }

  26. CONSTRUCTOR DE UN OBJETO DERIVADO • La información para construir una parte del objeto derivado reside en la clase base. Por esa razón antes de aplicar el constructor de la clase derivada se aplica el constructor de la clase base. Por ejemplo, al crear un objeto Profesional primero se crea la parte de Persona y, a continuación la parte de Profesional. • Si la clase base fuese, a su vez, derivada de otra clase base, antes de crearse la porción del objeto correspondiente a esta se crearía la parte de su clase base. Y así sucesivamente. • El constructor de una clase debe inicializar sólo los datos que dicha clase añada a la jerarquía. • La inicialización de los datos de la clase base se realiza llamando explícitamente al constructor de la clase base. • En Java, la llamada al constructor de la clase base desde el constructor de la clase derivada se realiza con super() proporcionando los argumentos requeridos por dicho constructor.

  27. OBJETO DERIVADO class Lampara { private int pot; protected String desr; public Lampara(int pot, String d) { this.pot = pot; desr = d; } // ... class LamparaGas extends Lampara { private double cd; public LamparaGas(int pt, String ds, double can) { super (pt, ds); cd = can; }

  28. RELACIONES DE DEPENDENCIA • La relación de dependencia es una conexión semántica entre dos elementos del modelo, uno independiente y un elemento dependiente • Se caracteriza esta relación porque un cambio en el elemento independiente afecta al elemento dependiente. • El elemento puede ser una clase, un paquete, un caso de uso, etc. • Un ejemplo de dependencia es el de una clase con un método que toma un objeto de otra clase para realizar una operación. • La relación de dependencia se representa con una línea punteada terminada en una flecha. Proveedor HojaMovimiento • La clase Sistema tiene la operación mostrarHoja() que tiene el argumento HojaMovimiento. • La relación de dependencia se considera que es una relación de uso. Cliente Sistema mostrarHoja()

  29. EJEMPLOSMODELADO DE OBJETOS

  30. BÚSQUEDA DE CLASES • Un problema desarrollado con técnicas O.O., en primer lugar debe responder a esta pregunta: ¿cuáles son los objetos del programa?. • Los objetos son instancias de clases, entonces la primera etapa en el desarrollo O.O. exige la identificación de clases, y posteriormente sus atributos y comportamiento (métodos). • La localización de clases debe pertenecer al dominio del problema y darles nombres que representen su responsabilidad en la aplicación. • Coad y Yourdon proponen seguir un método que consta de dos etapas: • Primero buscar las clases candidatas. Se identifica un conjunto amplio de clases candidatas. • En segundo lugar, seleccionar de entre ellas las clases válidas. Aquellas que sean aplicables al dominio de nuestro problema. • Bertrand Meyer: "No existe una receta milagrosa para identificar clases que pueda sustituir a la destreza individual o al experiencia del propio desarrollador de aplicaciones."

  31. IDENTIFICAR LAS CLASES(I) • Existen diversos criterios para identificar clases candidatas. El sistema que propone UML: • En conversaciones con el cliente del sistema a desarrollar, preste atención a los sustantivos que utiliza para describir las entidades de su negocio, ya que dichos sustantivos se convertirán en clases candidatas de su modelo. También preste atención a los verbos que escuche, constituirán operaciones de sus clases. Los atributos surgirán como sustantivos relacionados con los nombres de las clase. • Una vez que tenga una lista básica de las clases, pregunte a los clientes qué es lo que cada clase hace dentro del negocio  responsabilidades de la clase.

  32. IDENTIFICAR LAS CLASES(II) • Cuando se parte de un documento con los requisitos del problema, el mejor sistema para identificar clases, o mejor clases candidatas: • Lea la definición o descripción de las especificaciones del problema y localice los nombres o frases con nombre y verbos o frases con verbos. Los nombres son buenos indicadores de la existencia de objetos en el modelo OO y los verbos son candidatos a métodos. • Después de encontrar todos los nombres, se examina lista y se decide qué nombres son realmente clases en nuestro sistema. Pueden aparecer nombres que simplemente sean atributos de una clase, por ejemplo un nombre que no puede ser clase es el número de nómina. Es un dato que no contiene acciones, será un atributo de la clase Empleado.

  33. CONCEPTOS QUE IDENTIFICAN CLASES • Cuando se buscan clases candidatas en el documento de requisitos las siguientes cuestiones ayudan a identificarlas: • ¿Se dispone de información que se pueda analizar o almacenar?. En definitiva eventos a recordar. La información puede ser concepto que se debe registrar en el sistema y por consiguiente clase en el dominio del problema. Por ejemplo: fecha y hora de acceso de un coche a un parking, compra con una tarjeta. • ¿Existen sistemas externos?. Sistemas con los que interactúa el sistema en desarrollo. Si es así, serán considerados clases. • ¿Existen dispositivos que el sistema puede manejar?. Cualquier dispositivo externo conectado al sistema se convierte en clase candidata. Por ejemplo, barrera automática, sensor de temperatura, etc. • ¿Existen partes organizacionales?. Sucursal, departamento, comité etc, siempre que haya que guardar información específica. • ¿ Qué roles juegan los actores en la aplicación?. Gerente, Oficinista, Supervisor, etc, son diferentes roles que una persona puede desempeñar en un trabajo. Jefe de Estudios, Alumno, Director, Profesor, son roles que desempeñan personas en un Consejo Escolar. Estos roles se pueden ver como clases. • ¿Hay lugares de los que se necesite guardar información?. Si es así serán candidatos a clases. • ¿Hay componentes, bibliotecas de clases de proyectos anteriores ?. Normalmente contendrán clases candidatas. • Regla: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo.

  34. EJEMPLO: FLOTA DE VEHÍCULOS(I) • Controlar la gestión de una flota de diferentes vehículos: coches, camiones, aviones, helicópteros. Cada vehículo dispone de un radio de acción y una capacidad de carga total. En un instante dado, un vehículo puede encontrarse en un cierto lugar con una determinada carga. • Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: • Flota • Vehículo • Coche • Camión • Avión • Helicóptero • Radio de acción • Capacidad de carga • Lugar • Carga

  35. EJEMPLO: FLOTA DE VEHÍCULOS(II) • Una vez realizada la primera lista de clases candidatas, se realiza un proceso de refinamiento que trate de evitar una proliferación inútil de clases. • En esta aplicación parece que no es necesario declarar clases para gestionar el radio de acción y la capacidad de carga. Estas características se pueden fijar como atributos de vehículo y son comunes a todo tipo de vehículo. • También, es lógico pensar que existen dos tipos de vehículos: terrestres y aéreos. Entonces la lista de clases: Flota • Vehículo • Vehículo Terrestre • Vehículo Aéreo • Coche • Camión • Avión • Helicóptero • Lugar • Carga • Relaciones. Un flota contiene vehículos (agregación). Cada vehículo contiene una carga (agregación) y se encuentra actualmente en un lugar. Hay diferentes tipos de vehículos que comparten propiedades y comportamiento (generalización/especialización):

  36. CRITERIOS PARA ELEGIR CLASES VÁLIDAS • A partir de la lista de clases candidatas, para seleccionar las clases válidas se pueden seguir los siguientes criterios: • Necesidad de recordar. La clase debe tener información asociada. • Necesidad de comportamiento. Las clases deben tener operaciones. Un clase sin operaciones puede existir pero es conveniente una reflexión sobre su utilidad. • Mas de un atributo. Una clase con un solo atributo es sospechosa de no ser clase, sino atributo de otra. • Atributos y métodos siempre aplicables. Todos los objetos de una clase deben tener los mismos atributos y métodos. Si se encuentra objetos de la misma clase con atributos, o métodos, diferentes, puede ser que en realidad exista más de una clase, las cuales se relacionarán mediante generalización.

  37. EJERCICIO 1 DE MODELADO DE CLASES Sistema de monitorización • Realice el análisis de un sistema de monitorización de redes que realiza la información y visualización de un grupo de redes. Cada monitor muestra la configuración de una red en un momento específico. Existen tres tipos de redes: en anillo, en bus y en estrella. Las redes están compuestas por nodos independientemente de su topología, los cuales tienen un identificador de red único que los distingue. El sistema debe poder reconfigurar los nodos añadiendo o quitando desde el monitor que la visualiza. • Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones. • Verbos • mostrar • estar compuesta • visualizar • reconfigurar • añadir • eliminar • Nombres • Sistema • Red • Monitor • Red en anillo • Red en bus • Red en estrella • Nodo • Identificador

  38. EJERCICIO 1, Sistema de monitorización (II) • A continuación se realiza un proceso de refinamiento. Parece que no es necesario declarar una clase para representar el identificador de nodo. Estas característica se pueden fijar como atributo de nodo. En el enunciado del texto aparece Sistema para referirse al problema, no tiene una responsabilidad en el dominio del problema. • Relaciones. Un red está compuesta de nodos (agregación).. Hay diferentes tipos de redes que comparten propiedades y comportamiento (generalización/especialización). El monitor está relacionado con la red para realizar su funcionalidad, es necesario establecer una relación de asociación entre monitor y red. • Las operaciones que se pueden identificar en la aplicación : • Monitor puede mostrar la configuración de la red. • Dar de alta un nodo. • Dar de baja un nodo. • Operaciones de navegación ...

  39. EJERCICIO 1, Sistema de monitorización (III) Red añadirNodo quitarNodo Monitor 1 .. * Nodo identif darAlta darBaja EnAnillo EnEstrella EnBus

  40. EJERCICIO 2 DE MODELADO DE CLASES Encuestas (I) • Se desea desarrollar un sistema de recogida de encuestas a través de internet. Cualquier persona desde su navegador puede inscribirse en el sistema rellenando un formulario. El formulario recoge los siguientes datos obligatorios del nuevo usuario: • Apellidos y nombre. • Alias de usuario para acceder al sistema. • Dirección de correo electrónico. • Temas en los que está interesado (seleccionando uno o más de los que se le ofrecen). Para cada uno de estos temas, especificará un grado de preferencia en una escala de 1 a 10, según el grado de interés. Una vez validados los datos, el sistema le devuelve al usuario una palabra clave única que le permitirá acceder al sistema, junto al nombre de usuario. Periódicamente, el usuario recibirá por correo un cuestionario sobre uno de los temas que seleccionó en su inscripción. Deberá rellenarlo y devolverlo por la misma vía. Para contestar al cuestionario el usuario marcará una y sólo una de las cuatro propuestas a cada pregunta, pero en el futuro se permitirá también hacer preguntas de otros tipos, como preguntas abiertas, y se debe acomodar el análisis a esta circunstancia. A partir de todos los cuestionarios recogidos sobre un tema, el sistema publicará unos resultados estadísticos que podrán ser consultados desde una página Web.

  41. EJERCICIO 2, Encuestas (II) • Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones. • Sistema • Encuesta • Persona • Formulario • Usuario • Apellido • Nombre • Alias • Correo • Tema • Escala • Clave • Cuestionario • Pregunta • Respuesta

  42. EJERCICIO 2, Encuestas (III) • Antes de realizar el proceso de refinamiento, recordemos la regla de oro: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo. • En un principio se puede considerar que Formulario es una forma de agrupar Nombre, Apellido, alias y dirección de correo. Tema sí tiene entidad para ser una clase, guarda información y tiene operaciones para manejar el contenido . La selección de un tema tiene la característica (atributo) de el grado de interés. Usuario es el rol de Persona en este contesto. En el enunciado del texto aparece Sistema para referirse a la aplicación. Entonces la lista de clases: • Encuesta • Usuario • Tema • Selección • Cuestionario • Pregunta • Respuesta

  43. EJERCICIO 2, Encuestas (IV) • Relaciones. El usuario realiza una o más selecciones, cada elección se corresponde con un tema (relaciones de asociación). Cada Cuestionario está formado por un rango de preguntas, y cada pregunta por 4 respuestas (agregación). El usuario puede participar en un número de encuestas indeterminado. Para elaborar una encuesta se evalúan las contestaciones recibidas. • Diagrama de clases: Tema Selección Cuestionario Pregunta Respuesta 4 1..* 1..* 0..* Usuario Encuesta • El diagrama no recoge la contestación a las preguntas del formulario. Se mejora con una nueva clase: Contestación, asociada con Encuesta. Además, para tener en cuenta la posibilidad de preguntas abiertas, se introduce la clase PreguntaTest, que incorpora la peculiaridades de este tipo de preguntas.

  44. EJERCICIO 2, Encuestas (V) • El diagrama de clases más refinado: Pregunta Tema -nombre +getNom Selección Respuesta Cuestionario - numPreguntas PreguntaTest 1..* 4 1..* 1..* 1..* Usuario - nombre - apell - correo - clave • Encuesta • fecha • numResp 0..* • Contestación • orden +getTexto 1..*

  45. EJERCICIO 3 DE MODELADO DE CLASES Organigramas(I) • Se desea implementar una aplicación que permita realizar organigramas en color. Los elementos de que consta un organigrama en este momento son líneas, círculos, óvalos, rectángulos, rectángulos con esquinas redondeadas, líneas rectas y texto. El sistema puede experimentar cambios por incorporación de nuevos elementos. Se sabe que el cliente quiere que se pueda borrar, mover y por supuesto dibujar todos los elementos del organigrama. También se ha de poder guardar y recuperar desde un almacenamiento permanente. • Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones. Nombres Aplicación Organigrama Color Elemento Línea Círculo, Óvalo Rectángulo Rectángulo redondeado Línea recta Texto Sistema Cliente Verbos implementar realizar borrar mover dibujar guardar

  46. EJERCICIO 3, Organigramas(II) • Los conceptos, nombres puestos en negrita, se pueden considerar claves en el dominio del problema. Además es lógico pensar en una clase que almacene organigramas, será la clase Colección. • Relaciones. Leyendo con detención el documento de requisitos, resulta que los conceptos clave Línea, Óvalo. .. , se pueden plantear que son un tipo-de, o bien es-un, con respecto a Elemento gráfico. Cuando esto ocurre se establece una relación jerárquica generalización/especialización. • Un Organigrama está formado por muchos componentes de tipo Línea, Rectángulo, ... , en general de tipo Elemento. Se establecerá una relación de agregación (todo-parte) entre Elemento y Organigrama. • Un razonamiento similar al anterior nos lleva a establecer una agregación entre Organigrama y Colección. Una colección agrupa muchos organigramas.

  47. EJERCICIO 3, Organigramas(III) • El diagrama de clases (realmente sería un primer modelo) Colección + añadir() + eliminar() + grabar() + recuperar() • Elemento • color + mover() + borrar() + dibujar() Organigrama +mover() +borrar() dibujar() 1..* 1..* • Línea • orig • dest + borrar() + dibujar() • Rectángulo • orig • fin + borrar() + dibujar() • Óvalo • ejeMy • ejeMn + borrar() + dibujar() • DeTexto • literal • tipo + borrar() + dibujar() Línea Recta +dibujar() RectRedondo +dibujar() Círculo +dibujar()

  48. EJERCICIO 4 DE MODELADO DE CLASES Biblioteca (nº 7)(I) • Encontrar las clases, relaciones y realizar un diagrama de clases del siguiente documento relativo a una biblioteca: por • cada libro existente el catálogo contiene el título, el autor y el número ISBN. Puede haber varios ejemplares de un libro. • Cada ejemplar de un libro tiene un único número de acceso. Los socios de la biblioteca tiene una clave para préstamo. • El sistema registra el nombre, dirección del lector y el número de clave por cada préstamo. Los socios sólo pueden • solicitar un libro en préstamo, el sistema mantiene un registro de los libros que un socio ha tenido en préstamo, junto • con la fecha de devolución. Clases candidatas Libro Catálogo Titulo Autor Isbn Ejemplar NumeroAcceso Socio Biblioteca Verbos registrar nombre ... solicitar mantener registro Clave Préstamo Nombre Dirección Sistema FechaDevolución

  49. EJERCICIO 4, Biblioteca (II) • Regla de oro: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo. • Clases en el dominio del problema (clases válidas): • Libro (atributos: título, autor, isbn) • Catálogo (atributos: número de libros, detalles de cada libro) • Ejemplar (atributos: número de acceso, título ....) • Socio (atributos: clave, nombre, dirección) • Préstamo (atributos: fecha de entrega, fecha devolución, detalles del socio y del ejemplar)

  50. EJERCICIO 4, Biblioteca (III) • Relaciones • Catálogo "necesita" relacionarse (asociarse) con Libro para conocer sus detalles. * Catalogo Libro Catalogo Contenedor Libro

More Related