Story Transcript
Diagrama de Clases • El propósito de este diagrama es el de representar los objetos fundamentales del sistema (dominio o solución) y sus posibles relaciones en un estado del mismo. • La clase define el ámbito de definición de un conjunto de objetos. • Cada objeto pertenece a una clase.
1
Modelos de Requerimientos Goal model & responsibilities
Diagrama de Contexto Call Assistant
Despatching Software M obile Data Terminals
Ambulance Intervention
Modelo Operacional
Modelo de Objetos
Mobilization
Incident
0:1
Ambulance
Encode Incident Form Allocate Ambulance
Call Assistant
Scenarios Call Public Assistant
Allocator
Ambulance Crew
2
Objetos & Clases • Una clase describe un grupo de objectos (instancias) – Mismas attributos y asociaciones – Mismo comportamiento (state transitions) Clases
Incident
Objectos
Inc1
Inc2
Ambulance
amb1
amb2
amb3 = Instancia de
Hay una identidad que distingue objetos sin importar el valor de sus atributos
3
Associations • Clases e instancias de asociaciones
Incident
Inc1
Inc2
Mobilization
amb1
Ambulance
amb2
amb3
Mobilization(amb2, inc2) Mobilization(amb3, inc2)
4
Multiplicidades • multiplicidad : Cantidad mínima y máxima en las que un objeto puede estar simultaneamente involucrado en una asociación Incident
0:1
En cualquier momento que observe el mundo, una ambulancia puede estar mobilizada a lo sumo a un incidente
Mobilization
0:*
Ambulance
En cualquier moemento un incidente puede tener 0 o más ambulancias mobilizadas hacia él
5
Multiplicidades
6
Atributos • Un atributo At de un objeto Ob – Es una función At: Ob ® Rango (elementary or structured ranges)
Incident loc: Location time: Time
0:1
0:* Mobilization time: Time
Ambulance loc: Location status: Status
7
Especificación Textual (Denotar) Entity Incident Def. Cualquier situación que pueda requerir la intervención de una ambulancia Tiene
Condiciones para que un objeto esté entre sus instancias
location: Location {el lugar del inciente}
time: Time {tiempo en el que ocurrió} pending: Bool
Significado en el mundo real del atributo
{es true si una ambulancia no llegó todavía a la escena del mismo} Invariantes del Dominio Hay a lo sumo un inciente “pending” por ubicación, i.e. dos incidentes que son el mismo si tienen la misma ubicación y están pendientes.
Propiedades del dominio de la clase 8
Denotación Asociación Mobilization Links Ambulance {role ambulance multiplicity 0:1} Incident {role incident multiplicity 0:*} Def. Una ambulancia está mobilizada hacia un incidente si su tripulación es conciente de que debe atenderlo Has time: Time
{el momento en el que la ambulancia comienza a mobilizarse Invariantes del dominio …
9
Especialización • Toda instancia de una clase lo es de la otra – Subclases heredan atributos & asociaciones de la clase padre Incident loc: Location time: Time
0:1
0:*
Response Unit
Mobilization
loc: Location status: Status
time: Time
Isa Ambulance
Isa
Motorbike
Isa
Helicopter
10
Agregación • Esto es uma asociación “Tiene un” o “Todo/parte” Team
Employee
• El significado preciso hay que definirlo en el domínio
11
Modelos con Clases Conceptuales • Son modelos de conceptos del domínio • Hay objetos que tal vez no se representen finalmente en el software • No hay métodos – Posponer decisiones
12
Cómo elaborar un diagrama de clases? • Derivarlo del modelo de objetivos incrementalmente Þ completitud & pertinencia Þ método sistemático, no "hocus pocus"
13
Ejemplo del sistema de ambulancias Goal Achieve [First Ambulance Intervention] Definition For every urgent call reporting an incident, a first
ambulance should arrive at the incident scene within 8 minutes for category A incidents (immediately life-threatening) and within 14 minutes for category B incidents. Ambulance
Incident category: Cat. Reporting
Intervention time: Time
Urgent Call time: Time 14
tips & heuristicas • Un elemento estructural X en una formulación de objetivos... – X está definido con un sólo estado Þ Clase (evento)
– X is activo (controla comportamiento) Þ Clase (agente)
– X is pasivo, autónomo (con instancias distingibles) Þ Clase (entidad)
– X is passive, contingente de otros conceptos (con instancias distinguibles) Þ asociación
(slide : A. van Lamsweerde)
15
Tips y Heurísticas (cont.) – X es un atributo cuando... • Las instancias de X no son distinguibles (salvo x valor) • X es una función y el el rango no es un concepto sobre el que se vaya a adjuntar atributos o asociaciones
Book Authors: String
vs.
Author
Writing
Book
(slide : A. van Lamsweerde)
16
Tips y Heurísticas (cont.) • El atributo X se adjunta a una asociación o a los objetos asociados? 0.. Ob1 X?
0..
Ob1 X?
Assoc X?
A la asociación si los objetos pueden estar desasociados
Borrower
0..1
0..Max BookCopy DateBorrowed
Loan DateBorrowed (slide : A. van Lamsweerde)
17
Ejemplo del sistema de ambulancias First Ambulance Intervention Incident Form Encoded
Nearest Available Amb. Mobilized
Mobilized Ambulance Intervention
Incident category: Cat.
Reporting Urgent Call time: Time
Intervention time: Time
Ambulance status: Status loc: Location
Mobilization time: Time
Encoding Incident Form loc: Location category: Cat. 18
First Ambulance Intervention Incident Form Encoded
Nearest Available Amb. Mobilized
Nearest Available Amb. Allocated Incident category: Cat.
Reporting
Mobilized Ambulance Intervention
Allocated Ambulance Mobilized Intervention Mobilization Allocation
Ambulance status: Status loc: Location
Urgent Call time: Time
Encoding Incident Form ... 19
First Ambulance Intervention Incident Form Encoded
Nearest Available Amb. Mobilized
Nearest Available Amb. Allocated
Accurate Amb. Status & Location Info
Mobilized Ambulance Intervention
Allocated Ambulance Mobilized
AmbulanceAllocated Based On Amb.Info
Ambulance status: Status loc: Location Tracking Ambulance Info status: Status loc: Location 20
Ambulance System Example (Cont'd) • Derived class diagram Incident category: Cat. loc: Location
Intervention Mobilization Allocation
Ambulance status: Status loc: Location
Reporting Urgent Call time: Time
Tracking
Encoding Incident Form category: Cat. loc: Location
Allocation Info
Ambulance Info status: Status loc: Location 21
Tips y Heurísticas (cont.) • Diferencias entre diagramas de clases y de contexto – Diagrama de clases define los fenómenos de interés – Diagrama de Contexto defin quién monitorea/controla estos fenómenos
Los modelos son complementarios E.g. Diagrama incorrecto Meeting Initator
setsDateRange
Meeting
setsDate
Scheduler
dateRange date
Diagrama de Clases Correcto Meeting Initator
Diagrama de Context Correcto
Initiating Meeting
Meeting.dateRange
dateRange date
Meeting Initator
Scheduling Scheduler
Scheduler
Meeting.date 22
Tips y Heurísticas (cont.) • Cómo nombrar objetos y atributos – Importante para la comprensión – Elegir palabras usuales en el domínio – Evitar nombres no específicos (lista, formulario, cosa, ...)
• Evitar conceptos implementativos UserGroup
User
Group
Login
Owns
List
Shared Collection
Email Address List Book
Photo List
Email
Photo
Contact
Photo Album
23
Repaso y UML
Diagrama de Clases • Cada clase se representa en un rectángulo con tres compartimientos: – Nombre de la clase – Atributos de la clase – Operaciones de la clase
25
Diagrama de Clases: Atributos
El atributo fecha de nacimiento es público. El atributo edad es derivado (puede calcularse a partir de la fecha de nacimiento), y determina una relación de orden entre las instancias de las personas. El atributo DNI es un atributo protegido.
El atributo coloresPreferidos representa una colección o conjunto de valores del tipo Color 26
Diagrama de Clases Relaciones entre Clases • Una asociación es una conexión estructural simple entre clases. Las instancias de las clases implicadas en una asociación estarán probablemente comunicándose en el momento de ejecución. • Los enlaces entre de objetos pueden representarse entre las respectivas clases
• Formas de relación entre clases: – Asociación y Agregación (vista como un caso particular de asociación) – Generalización/Especialización
27
Diagrama de Clases: Asociación • La asociación expresa una conexión bidireccional entre objetos. • Una asociación es una abstracción de la relación existente en los enlaces entre los objetos. Enlace
28
Diagrama de Clases Relaciones entre Clases Multiplicidad 1
Un elemento relacionado.
0..1
Uno o ningún elemento relacionado.
0..*
Varios elementos relacionados o ninguno.
1..*
Varios elementos relacionados pero al menos uno.
*
Varios elementos relacionados.
M..N
Entre M y N elementos relacionados.
29
Diagrama de Clases: Asociación Rol • Identificado como un nombre a los finales de la asociación, describe la semántica de la relación en el sentido indicado. • Cada asociación tiene dos roles; cada rol es una dirección en la asociación.
30
Diagrama de Clases: Asociación • Se asume que una asociación es bidireccional, es decir que se puede navegar desde cualquiera de clases implicadas a la otra, pero es posible indicar que la navegación ocurrirá en una sola dirección.
31
Diagrama de Clases: Agregación • Es una asociación especial, una relación del tipo “todo/parte” dentro de la cual una o más clases son partes de un conjunto.
32
Diagrama de Clases: Composición • La composición es una forma ‘fuerte’ de agregación. Se diferencian en: – En la composición tanto el todo como las partes tienen el mismo ciclo de vida. – Un objeto puede pertenecer solamente a una composición.
33
Diagrama de Clases: Asociación Calificada • Un calificador es un atributo (o tupla de atributos) de la asociación cuyos valores sirven para particionar el conjunto de objetos enlazados a otro. • Un calificador se representa como un pequeño rectángulo conectado al final de una asociación y a la clase. • El rectángulo del calificador es parte de la asociación, y no parte de la clase.
fila: fila: int columna: columna: int
34
Diagrama de Clases: Asociación n-arias • Son asociaciones que se establecen entre más de dos clases • Una clase puede aparecer varias veces desempeñando distintos roles. • Las asociaciones n-arias se representan a través de rombo que se une con cada una de las clases. La relaciones n-arias pueden ser usadas para impedir inconsistencias en el modelo.
35
Diagrama de Clases: Generalización • Una generalización se refiere a una relación entre una clase general (superclase o padre) y una versión más específica de dicha clase (subclase o hija).
36
Diagrama de Clases: Generalización • Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada. • Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas. • La especialización es una técnica muy eficaz para la extensión y reutilización.
Restricciones predefinidas en UML: • Overlapping • Disjoint • Complete • Incomplete
37
Diagrama de Clases: Generalización • Particionamiento del espacio de objetos Clasificación Estática • Particionamiento del espacio de estados de los objetos Clasificación Dinámica • En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas • Usando discriminadores se pueden tener varias especializaciones de una misma clase padre Discriminador
38
Diagrama de Clases: Generalización • La herencia múltiple debe manejarse con precaución. Algunos problemas son el conflicto de nombre y el conflicto de precedencia. • Se recomienda un uso restringido y disciplinado de la herencia. • Permite modelar jerarquías alternativas.
39
Diagrama de Clases: Clase de asociación • Es una asociación y una clase simultáneamente. • Hay que tener en cuenta dónde se colocan los atributos.
40
Modelo de Dominio vs. Modelo de Diseño • El diagrama de clases puede utilizarse con distintos fines en distintas etapas del proceso de desarrollo. • Durante la etapa de análisis, el modelo de dominio es encargado de mostrar el conjunto de clases conceptuales del problema y las relaciones presentes entre sí. • Durante la etapa de diseño, el modelo de diseño determina las futuras componentes de software (clases) y sus relaciones entre sí. 41
Modelo de Dominio • Es una representación de las cosas, entidades, idea, clases conceptuales u objetos del “mundo real” o dominio de interés, no de componentes de software. • Muestra clases conceptuales significativas en un dominio del problema.
42
Modelo de Dominio • Es un artefacto clave en el modelado de objetivos y requerimientos • Podría se considerado como un diccionario visual de abstracciones de clases conceptuales, vocabulario e información del dominio. • Los modelos de objetos subyacentes podrían usarse para modelar los distintos estados del “mundo” • Denotar es clave para la refutabilidad de las
43
Modelo de Dominio • Otros nombres: modelo conceptual, modelo de objetos del dominio y modelo de los objetos de análisis. • Según el punto de vista, tiene puntos en común con el Diagrama de Entidad Relación. • Usando UML, el MD se representa con un conjunto de diagramas de clases. Se puede mostrar: – objetos del dominio o clases conceptuales – asociaciones entre las clases conceptuales – atributos de las clases conceptuales
44
Modelo de Dominio: Clases Conceptuales Es válido… – Tener clases conceptuales sin atributos. – Tener clases conceptuales para las cuales no haya requerimientos de información a registrar. – Tener clases conceptuales con rol de comportamiento, en lugar de información.
Estrategias para identificar – Utilizar lista de categorías de clases conceptuales. – Usar un modelo de objetivos como marco. – Identificar frases nominales (sustantivos o frases).
45
Modelo de Dominio: Clases Conceptuales
46
Ejemplo Un posible modelo de dominio para el caso del local de venta de electrodomésticos…
47
DERs • Diagrama Entidad Relación. • Nacido para describir bases de datos relacionales (Chen). • 2 conceptos: entidades y relaciones. – Entidades: conjuntos de individuos [atributos] – Relaciones entre individuos especificando cardinalidad y opcionalidad.
48
DERs: Ejemplo
Cliente
Proyecto ordena
Empleado trabaja_en
Denotar! 49
DERs
trabaja_para Cliente
Proyecto ordena
Empleado trabaja_en
Transitividad :definición o sea relación derivada, no debe aparecer. Span temporal :un intervalo (simplicidad) 50
DERs: Características • Formales, declarativos, gráficos, refutables (si hay designaciones) • Scope: entidades y relaciones invariantes con el tiempo. • Sin mecanismo de composición standard (subdominios?).
51
Ejemplo “Las compañías aéreas ofrecen varios vuelos” • Compañía aérea y Vuelo son conceptos importantes del mundo real con atributos y comportamientos, por lo que son clases candidatas para nuestro modelado estático de dominio
52
Ejemplo “Una compañía abre y cierra las reservas para un determinado vuelo”
53
Ejemplo “Un vuelo tiene un día y una hora de salida y un día y hora de llegada”
Estas nociones de fechas y horas representan simplemente valores, por lo que los modelaremos como atributos y no como simples objetos.
54
Ejemplo “Un vuelo tiene un aeropuerto de salida y otro de llegada” • Un objeto es algo más importante que un atributo. • La noción de aeropuerto es compleja.
55
Ejemplo “Cada aeropuerto atiende a una o varias ciudades”
56
Ejemplo “Un vuelo puede implicar escalas en aeropuertos” “Una escala tiene una hora de llegada y otra de salida”
57
Ejemplo “Una reserva implica un único vuelo y un único pasajero”. “Una reserva puede cancelarse o confirmarse”.
58
Ejemplo “Un cliente puede reservar uno o más vuelos y para pasajeros diferentes”.
59
Ejemplo Agregar atributos y restricciones
60
Ejemplo Un posible modelo de dominio
61