You are on page 1of 41

Relaciones de clases

Diagrama de Clases
Herencia

 La herencia define una relación entre clases donde una clase


comparte la estructura y/o comportamiento con una o más clases
 La herencia define una jerarquía de abstracciones en que una
subclase herede desde una o más superclases
 Con la herencia unitaria, la subclase hereda desde una única
superclase
 Con la herencia múltiple, la subclase hereda desde más de una
superclase
 La herencia es una relación “es un” o “tipo de”
Dibujando una Herencia Jerárquica
RegistroInformaciónUsuario
Superclase

Relación de Herencia

InformaciónEstudiante
Subclase
¿Qué es heredado?

 Una clase hereda de sus padres:


 Atributos
 Operaciones
 Relaciones
 Una subclase puede:
 Agregar atributos, operaciones y relaciones adicionales
 Redefinir las operaciones heredadas (¡tenga cuidado!)

La herencia apalanca las similaridades entre las clases


Heredando Atributos
 Los atributos se definen en el nivel más alto en la jerarquía de
herencia en la que son aplicados
 Las subclases de una clase heredan todos los atributos
 Cada subclase puede añadir atributos adicionales

VehículoTerrestre
Peso
númeroLicencia

Un camión tiene tres atributos:


númeroLicencia
Auto Camión peso
tonelaje tonelaje
Heredando Operaciones
 Las operaciones son definidas en el más alto nivel en la jerarquía de
herencia en que son aplicables.
 Las subclases heredan todas las operaciones de una clase
 Cada subclase puede aumentar o redefinir las operaciones
heredadas

VehículoTerrestre
peso
númeroLicencia
registrar( )
Un camión tiene tres atributos:
númeroLicencia
peso
Auto Camión tonelaje
tonelaje y dos operaciones:
obtenerImpuestos( ) registrar()
obtenerImpuestos()
Herencia

 Generalización / Especialización
 Agregación
 Asociación
Heredando Relaciones
 Las relaciones también son heredados y deben ser definidas en el más alto
nivel de la jerarquía de herencia en la cual son aplicables
 Las subclases de una clase heredan todas las relaciones
 Cada subclase puede participar en relaciones adicionales

VehículoTerrestre Persona
peso dueño
númeroLicencia 0..* 1
Un auto es relacionado con
registrar( ) un propietario
Un camión es relacionado
con un propietario
Auto Camión Trailer Un camión también tiene un
tonelaje trailer
obtenerImpuestos( )
Herencia vs. Agregación

Herencia Agregación

Palabra clave “es un” Palabra clave “tiene un”

Un objeto Relaciona objetos de distintas clases

Representado por una Representado por un diamante


flecha
Window y Scrollbar

Window Scrollbar

WindowWithScrollbar
Un WindowWithScrollbar “tiene un” Window
Un WindowWithScrollbar “tiene un” Scrollbar

¿Qué relación debería ser usada?


Window y Scrollbar (cont.)
Window

Window Scrollbar

WindowWithScrollbar Scrollbar
1 1

WindowWithScrollbar

Un WindowWithScrollbar “es un” Window


Un WindowWithScrollbar “tiene un” Scrollbar
La Necesidad de las Relaciones

 Todo sistema abarca muchas clases y objetos


 Los objetos contribuyen en el comportamiento de un sistema
colaborando entre ellos mismos
 La colaboración se logra a través de las relaciones
 Existen dos tipos importantes de relaciones durante el análisis
 Asociación
 Agregación
Asociaciones

 Una asociación es una conexión semántica bi-direccional entre clases


 Esto implica que existe una conexión entre objetos en las clases
asociadas
 Las asociaciones están representadas en los diagramas de clases con
una línea conectando las clases asociadas
 Datos puede fluir en una o ambas direcciones a lo largo de una
conexión

<<control>> <<entidad>>
AdministradorRegistro Curso
Nombrando Asociaciones

 Para clarificar su significado, una asociación debe ser nombrada


 El nombre se representa como una etiqueta ubicada a lo largo de la
línea de asociación, a medio camino entre los iconos de clases
 Un nombre de asociación normalmente es un verbo o una frase verbal

<<control>> administra <<entidad>>


AdministradorRegistro Curso
Definiendo Roles

 Un rol denota el propósito o la capacidad con la que se asocia una con


otra
 Los nombres de roles son típicamente sustantivos
 El nombre de un rol es puesto a lo largo de la línea de asociación
cercano a la clase que modifica
 Uno o ambos terminan en una asociación que puede tener
nombres de un rol

Persona Maestro
Curso
Asociaciones Múltiples
 Puede existir más de una asociación entre dos clases
 Si hay más de una asociación entre dos clases entonces se le DEBE
poner un nombre

Person Enseña a Course


Inscripto en

 Las asociaciones múltiples deben ser puestas a prueba


Asociaciones Múltiples(cont.)

Selección del curso Agregar un alumno a Curso


Borrar un alumno de

¿Un modelo bueno o malo?


Multiplicidad para Asociaciones

 Multiplicidad es el número de instancias de una clase que se relaciona


con una instancia de otra clase
 Para cada asociación, hay dos decisiones de multiplicidad por hacer:
una para cada final de asociación
 Por ejemplo, en la conexión que existe entre los personajes que
cumplen el rol de maestro y el curso
 Para cada instancia de persona, muchos (ej. cero o mas) cursos
serán enseñados
 Para cada instancia de curso, exactamente una persona es el
maestro
Indicadores de Multiplicidad
 Cada término de asociación contiene un indicador de multiplicidad
 Indica el número de objetos que participa en la relación

Muchos
*
Exactamente uno
1
Cero o mas
0..*
Uno o mas
1..*
Cero o uno
0..1
Rango especificado
2..4
Ejemplo: Multiplicidad

 Las decisiones de multiplicidad exponen muchas suposiciones ocultas


acerca del problema que esta siendo modelado
 ¿Puede un curso tener dos maestros?

Maestro
Persona
Curso
1 1..*
¿Qué significa Multiplicidad?

 La multiplicidad responde a dos preguntas


 ¿La asociación es obligatoria u opcional?
 ¿Cuál es el número máximo o mínimo de instancias que pueden
ser ligadas a una instancia?

Curso Maestro
0..* 1

¿Qué le dice este diagrama?


Colección
 Colección es una forma especial de asociación donde un todo se
relaciona con sus partes
 Colección se conoce como “una parte de” o una relación de
contención.
 Una colección esta representada como una asociación con un
diamante al lado de su clase denotando el agregado.
 La multiplicidad se representa de la misma manera que en las otras
asociaciones.
¿Asociación o Colección?

 Si dos objetos están unidos firmemente por una relación todo-parte


 La relación es una Colección
 Si dos objetos son usualmente considerados como independientes,
aun cuando comúnmente están unidos
 La relación es una asociación

Curriculum Curso Alumno


1 1..* 0..* 3..10

Curriculum and Course are


tightly coupled -- the Curriculum is Independent objects
“made up of” 1 to may Courses
Asociación Reflexiva

 En una asociación reflexiva, los objetos de una misma clase están


relacionados
 Indica que múltiples objetos en la misma clase colaboren en conjunto
del mismo modo

Curso 0..
*
0..
Pre-requisito *

A course may have many pre-requisites


A course may be a pre-requisite for many other courses
Colecciones Reflexivas

 Las colecciones también pueden ser reflexivas


 Problema clásico del problema de despiece de partes
 Esto indica una asociación recursiva

1
ParteProducto

Un objeto ParteProducto esta “compuesta de”


0..* cero o mas objetos ParteProducto
Clases de Asociaciones

 Deseamos llevar cuenta de las calificaciones de todos los cursos que


el alumno ha tomado
 La relación entre alumnos y Cursos es una relación de muchos a
muchos
 ¿Donde situamos los atributos de las calificaciones?

Alumno 0..* Curso


3-10
Clases de Asociaciones (cont.)

 El atributo de calificaciones no puede ser situado en la clase de Curso


porque existen (potencialmente) muchas relaciones a muchos objetos
de Alumno
 Por lo tanto, el atributo pertenece realmente a la relación individual
Alumno-Curso
 Una clase de asociación es usada para almacenar información sobre
la relación
Dibujando Clases de Asociaciones

 Crear una clase de asociación usando el icono de clase


 Conectar la clase de icono a la línea de asociación usando la línea
entrecortada
 La clase de asociación puede incluir múltiples propiedades de dicha
asociación
 Solamente una clase de asociación está permitida por cada asociación

Alumno 1..* Curso


3-10

Calificaciones
Encontrando Asociaciones y Colecciones

 Los escenarios pueden ser examinados para determinar si una


relación debiera existir entre dos clases
 Dos objetos se pueden comunicar si y solo si se “conocen” entre
si
 Asociaciones y/o colecciones proveen un vía de comunicación
aform : CILogin aform : CIForm theMgr : Registration
Programa Manager

Mostrar

Crear
¿Asociación o Colección?

RegistrationForm and ScheduleForm are tightly


coupled -- a ScheduleForm is “part of” the RegistrationForm

<<interfaz>> <<interfaz>>
FormRegistración FormularioPrograma
1 1
1

ScheduleForm and
RegistrationManager
are independent
1
AdministraciónRegistro
Relaciones entre Paquetes

 Los paquetes se relacionan entre si usando una relación de


dependencia
 Si una clase en un paquete “comunica” a otra clase en otro paquete
entonces su relación de dependencia es agregada a nivel de paquete
 Los diagramas de escenario y diagramas de clase son evaluados para
determinar las relaciones entre paquetes
Interfaces

Business Rules

University
Artifacts
Relaciones durante Análisis y Diseño
 Durante el análisis, establecer conexiones (asociaciones y
colecciones) entre las clases
 Dichas conexiones existen por la misma naturaleza de las
clases, no por una implementación específica
 Hacer una estimación inicial de multiplicidad de manera de
exponer suposiciones ocultas
 Los diagramas de clase son actualizados para mostrar sus relaciones
agregadas
 Durante el diseño:
 Las estimaciones de multiplicidad son refinadas y actualizadas
 Asociaciones y colecciones son evaluadas y refinadas
 Las relaciones de paquetes son re evaluadas y refinadas
 Los diagramas de clases maduran
Actualización de Diagrama de Clase
Principal para el Sistema de Registro

Interfaces Reglas
Negocio

Artefactos
Universidad
Interfaces Actualizadas de Diagrama de
Clase Principal
<<interfaz>> <<interfaz>>
FormRegistración FormPrograma
1 1
1
1

1
<<control>>
AdministraciónRegistro 1
(desde ReglasNegocio) <<entidad>>
Catalogo
1 (desde ArtefactoUniversidad)

1
<<interfaz>>
SistemaCobro
Actualización de Diagrama de clase
principal de ArtefactosUniversidad
<<interfaz>> <<entidad>>
Formularioregistración Curso
(de Interface) Agrega a Alumno
1
0..4
1
1
1
<<control>>
AdministradorRegistro
1
<<entidad>> (de Reglas Negocio)
Catálogo
1 1 1 accede

Agrega a Alumno
crea 1 <<entidad>>
1
<<entidad>> RegistroEstudiante
RegistroCurso 1
<<entidad>>
ListaCurso
Actualización de Diagrama de clase
Principal de Reglamento Económico
<<entidad>>
<<interfaz>> RegistroCurso
FormularioItinerario (desde ArtefactosUniversidad)
(from Interfaces)
1 1

Agrega a Alumno
1
1
<<Interfaz>> 1 1 <<control>>
SistemaCobro AdministradorRegistro
(desde Interfaz 1 Agrega a Alumno
1 1 <<entidad>>
accede crea 0..4 Curso
(desde ArtefactosUniversidad)

1
1
<<entidad>> <<entidad>>
Registro de Estudiante ListaCursos
(desde ArtefactosUniversidad) (desde ArtefactosUniversidad)
OTROS CONCEPTOS
Existen varios elementos que contribuyen a la sintaxis de los atributos y
operadores de las clases en el diagrama. Estas son:

Visibilidad: Indica que tan visible será el elemento. Esto puede ser +
(público), # (protegido), - (privado).
Valor por Omisión:
Es el valor por defecto que debe tener ese elemento en caso de ser
inicializado.

La sintaxis de los Atributos es:

<visibilidad> <nombre> : <tipo> = <valor por omisión>

siendo solo el nombre un parámetro obligatorio.


La sintaxis para una Operación es:

<visibilidad> <nombre> (<parámetros>) <tipo de retorno>

siendo el nombre, los parámetros y el tipo de retorno los obligatorios. En


el caso de la sintaxis de los parámetros, estos se representan de la
misma manera que los atributos de una clase.
Navegabilidad

La navegabilidad se aplica en torno a lo que son las asociaciones. Las


asociaciones pueden tener una “dirección” que nos indica qué objetos
tienen la responsabilidad de decir a que clases corresponden y
quienes no:

You might also like