03 Modelo Dominio [Modo de compatibilidad]

109
Tópicos Selectos Dr. Juan Manuel González Calleros Benemérita Universidad Autónoma de Puebla Email: [email protected] Twitter: @Juan__Gonzalez Facebook: Juan Glez Calleros Reuniones pedir cita

Transcript of 03 Modelo Dominio [Modo de compatibilidad]

Page 1: 03 Modelo Dominio [Modo de compatibilidad]

Tópicos Selectos

Dr. Juan Manuel González Calleros

Benemérita Universidad Autónoma de Puebla

Email: [email protected]: @Juan__GonzalezFacebook: Juan Glez Calleros

Reuniones pedir cita

Page 2: 03 Modelo Dominio [Modo de compatibilidad]

1-2

DIAGRAMAS DE CLASE

Page 3: 03 Modelo Dominio [Modo de compatibilidad]

1-3

@Juan__Gonzalez

Introducción

• Las clases son el centro operativo de un sistema orientado a objetos.

• El sistema se compone de pequeñas colecciones llamadas objetos.

• Las clases describen los diferentes tipos de objetos que puede tener un sistema. Y los diagramas de clase nos muestran qué clases tenemos y sus relaciones.

Page 4: 03 Modelo Dominio [Modo de compatibilidad]

1-4

@Juan__Gonzalez

4.1 Clases

• Analogía: Una guitarra es un objeto, una entidad propia. Este objeto es creada por cierta compañía, la cual crea cientos de ejemplares de un mismo tipo de guitarra (una misma clase de guitarra).

• A cada guitarra de este tipo se le llama ‘instancia’ de la clase.

• Cada instancia puede contener información sobre el objeto y el comportamiento de la misma. – Información: contiene 5 cuerdas– Comportamiento: tocar música

Page 5: 03 Modelo Dominio [Modo de compatibilidad]

1-5

@Juan__Gonzalez

Describir Objetos

• La meta es identificar aquellos Objetos que nos van a servir en la funcionalidad del sistema

• Los casos de Uso y la Identificación de Tareas son un método

• El resultado es una lista de candidatos– Los objetos que manipulan las tareas

Fuente: The essence of OOP with Java and UML

Page 6: 03 Modelo Dominio [Modo de compatibilidad]

1-6

@Juan__Gonzalez

Clases

Abstracción

• Para definir una clase se necesita saber si es importante su existencia para el sistema que estamos modelando.

• Se debe obtener una abstracción justa para el modelo, concentrándose en la información que el sistema necesita saber, e ignorar lo irrelevante o lo que no representa nada significativo para el sistema.

Page 7: 03 Modelo Dominio [Modo de compatibilidad]

1-7

@Juan__Gonzalez

¿Cómo modelan un auto?

• Características generales de todos los autos

• Funcionalidad común de todos los autos

Page 8: 03 Modelo Dominio [Modo de compatibilidad]

1-8

Ejemplo: la clase Auto

�La clase AUTO es el modelo abstracto del concepto de un Auto.

�La descripción de la clase Auto podría ser:� Tiene Puertas� Tiene Llantas� Tiene Motor� Tiene Ventanas� Tiene modelo

� Funcionalidad� Arranca� Frena� Se desplaza� Usa gasolina� Etc. Una clase es como

un molde o plantilla

Page 9: 03 Modelo Dominio [Modo de compatibilidad]

1-9

La clase AUTO

�A partir de la clase AUTO se pueden crear muchos objetos, o sea muchos autos, con características diferentes (color, tamaño, diseño, material, etc.), pero que pueden ser reconocidos como autos.

�Por ejemplo: un Bochito, un Audi, un BMW, un Chevy, el auto del vecino, tu auto, mi auto, etc.

�Todos estos pueden ser representadas como objetos diferentes y únicosde la clase AUTO.

Clase Auto

Objeto

Objeto

Page 10: 03 Modelo Dominio [Modo de compatibilidad]

1-10

@Juan__Gonzalez

�Un conjunto de objetos que comparten una estructura común y un comportamiento común

�Un objeto no es más que una instancia de la clase –> un objeto no es una clase

Qué es una clase y qué no es una clase

Page 11: 03 Modelo Dominio [Modo de compatibilidad]

1-11

@Juan__Gonzalez

�Una clase en una definición abstracta de un objeto� Define la estructura y comportamiento de cada objeto

en la clase� Sirve como una plantilla para crear objetos

�Un objeto es una instancia concreta de una clase (un ejemplar)� Los objetos pueden agruparse en clases

Clases v.s. Objetos

Estudiante

Clase

A. PinedaG. Rodríguez

E. Gomez

Page 12: 03 Modelo Dominio [Modo de compatibilidad]

1-12

@Juan__Gonzalez

• ¿Cuántas clases ves?

Clases v.s. Objetos

Page 13: 03 Modelo Dominio [Modo de compatibilidad]

1-13

@Juan__Gonzalez

• Modelar la clase lavadora

Ejemplo de una clase

LAVADORA

marca

modelo

capacidad

Programar

Poner ropa

Cerrar puerta

lavar

Atributos

Comportamiento

Page 14: 03 Modelo Dominio [Modo de compatibilidad]

1-14

@Juan__Gonzalez

Evaluando a los candidatos

• Todos los atributos de una clase propuesta deben aplicarse a todos los objetos de esa clase. – Si hay excepciones entonces es posible que

se mezclo una subclase• a veces será necesario dividir una clase en más

subclases especializadas.

• Igual ocurre para todos los métodos

Fuente: The essence of OOP with Java and UML

Page 15: 03 Modelo Dominio [Modo de compatibilidad]

1-15

@Juan__Gonzalez

Evaluando a los candidatos

• Cada objeto debe tener algunos datos. – Debemos estar seguros de que al menos

existen.

• Si el objeto candidato tiene un solo atributo, entonces tal vez que debe estar como un atributo de otro objeto más que un nuevo objeto. – No se recomiendan objetos con un atributo o

sin atributos.

Fuente: The essence of OOP with Java and UML

Page 16: 03 Modelo Dominio [Modo de compatibilidad]

1-16

@Juan__Gonzalez

Evaluando a los candidatos

• Un objeto debe hacer algo para justificar su existencia– Se deben identificar uno o más métodos para

el candidato objetos. • Es muy improbable que un objeto no tenga

métodos.

• El propósito de los métodos debe ser independiente del hardware o software

– Conexión especial a BD MySQL debe esperar

Fuente: The essence of OOP with Java and UML

Page 17: 03 Modelo Dominio [Modo de compatibilidad]

1-17

@Juan__Gonzalez

Clases en UML

• Se dibujan como un rectángulo dividido en tres partes.

• Pueden no incluir las secciones de atributos o operación.

Page 18: 03 Modelo Dominio [Modo de compatibilidad]

1-18

@Juan__Gonzalez

� Pensemos en las clases de su proyecto, hagan un clase� Objetos que manipulan sus tareas

� Estudiante, Curso, Profesor, Juego, Personaje, Escena, …

Actividad – Parejas de

miembros de un mismo equipo

Nombre de la clase

Atributos

comportamientos

Page 19: 03 Modelo Dominio [Modo de compatibilidad]

1-19

@Juan__Gonzalez

Atributos de la clase

• Son los pedazos de información que representan a un objeto.

• Se pueden declarar dentro del diagrama de clase en la sección de atributos, o asociando atributos con la clase como se muestra en la imagen:

Page 20: 03 Modelo Dominio [Modo de compatibilidad]

1-20

@Juan__Gonzalez

Atributos de la clase

Nombre y tipo

• El nombre puede ser cualquiera que represente la información que almacena. No puede haber dos atributos con el mismo nombre dentro de una clase.

• El tipo depende de la implementación de la clase, pero puede ser una clase (como String) o un tipo primitivo (como un int o char).

Page 21: 03 Modelo Dominio [Modo de compatibilidad]

1-21

@Juan__Gonzalez

Candidatos a Atributos

• Un atributo describe el significado de la clase– Que datos tiene (nombre, edad, P)

– Que estados soporta (isEnabled, isVisible)

– Sus conexiones con otras clases

• Al diseñar un sistemas los atributos sólo son de dos tipos– Públicos y privados

Fuente: The essence of OOP with Java and UML

Page 22: 03 Modelo Dominio [Modo de compatibilidad]

1-22

@Juan__Gonzalez

Procedimiento

• Para cada clase hacer las preguntas– ¿Cómo se describe?

– ¿Cómo se describe en el contexto del problema?

– ¿Qué debo saber para poder funcionar?

– ¿Cuáles de mis estados necesito conocer para poder funcionar?

– ¿En que estamos debo estar como miembro de esta clase?

Fuente: The essence of OOP with Java and UML

Page 23: 03 Modelo Dominio [Modo de compatibilidad]

1-23

@Juan__Gonzalez

Nombres

• Los nombres deben ser:– Semánticamente ligados con el concepto que

representan• Transmiten significado

• Útil no sólo para diseño y análisis, también para el código

Fuente: The essence of OOP with Java and UML

Page 24: 03 Modelo Dominio [Modo de compatibilidad]

1-24

@Juan__Gonzalez

Recomendaciones de Nombres

• Clases, sustantivos comunes– Sensor, Color

• Objetos, denotar claramente que son instancias de una clase– SensorPuerta::Sensor, ColorFondo::Color

• Métodos, verbos activos– activaSensor, setColor, get Color

Fuente: The essence of OOP with Java and UML

Page 25: 03 Modelo Dominio [Modo de compatibilidad]

1-25

@Juan__Gonzalez

Atributos de la clase

Multiplicidad

• La multiplicidad permite especificar que un atributo es una colección de objetos.

• Los atributos trackbacks, comments y authors son colecciones de objetos. El asterisco [*] representa que pueden contener n elementos la colección.

• El 1 sobre BlogAccount representa que existe solo 1 clase de ese tipo y el * indica que puede haber n cantidad de clases de BlogEntry

Page 26: 03 Modelo Dominio [Modo de compatibilidad]

1-26

@Juan__Gonzalez

4.4 Atributos de la clase

Multiplicidad

• Entries, trackbacks y comments tienen una propiedad que detalla la multiplicidad.– {unique}: no existe ningún elemento repetido

en la colección

– {ordered}: indica que la colección esta organizada por algún criterio de orden.

Page 27: 03 Modelo Dominio [Modo de compatibilidad]

1-27

@Juan__Gonzalez

Trabaja con tu proyecto

• Integren los atributos a sus clases– Qué las califica

Page 28: 03 Modelo Dominio [Modo de compatibilidad]

1-28

@Juan__Gonzalez

Descubre las operaciones

• Los métodos son los servicios u operaciones de una clase– Definen que implementar

• Los métodos son como un objeto – Interactúan con otros objetos en el sistema.

• Pueden ser públicos o privados

Fuente: The essence of OOP with Java and UML

Page 29: 03 Modelo Dominio [Modo de compatibilidad]

1-29

@Juan__Gonzalez

Operaciones

• Describen lo que una clase puede hacer.

• No especifican cómo lo van a hacer.

• En UML se componen de un nombre, seguidos de dos ( ) donde pueden nombrarse los parámetros necesarios para realizar su trabajo, y por último se escribe el tipo de dato que regresa (return).

Page 30: 03 Modelo Dominio [Modo de compatibilidad]

1-30

@Juan__Gonzalez

Operaciones

Parámetros

• Son los datos que requiere una operación para realizar su trabajo. Puede requerir más de un parámetro por operación.

• Ejemplo: la operación addEntry requiere un parámetrollamado newEntry, y este dato es de tipo BlogEntry (una clase).

Page 31: 03 Modelo Dominio [Modo de compatibilidad]

1-31

@Juan__Gonzalez

Operaciones

Tipos de retorno (return)

• Se refieren al tipo de objeto que va a devolver la operación.

• Se especifica después de los ( ) seguidos por dos puntos :

• No es necesario que siempre devuelvan un dato. En ese caso se le llama retorno del tipo void.

Page 32: 03 Modelo Dominio [Modo de compatibilidad]

1-32

@Juan__Gonzalez

Funciones básicas de una clase

• Toda clase debe tener el patrón CRUD– Create (Constructores) – Caso Especial

– Read (Getters)

– Update (Setters)

– Delete (Destructores)

Page 33: 03 Modelo Dominio [Modo de compatibilidad]

1-33

@Juan__Gonzalez

Actividad

• Trabajar en las operaciones

Page 34: 03 Modelo Dominio [Modo de compatibilidad]

1-34

@Juan__Gonzalez

Page 35: 03 Modelo Dominio [Modo de compatibilidad]

1-35

Herencia

�La herencia representa una jerarquía de abstracciones (clases).

�Básicamente, la herencia define una relación entre clases, el la que una clase comparte la estructura de comportamiento definida en una o más clases

�De forma simple, la herencia es el proceso mediante el cual un objeto adquiere las propiedades de otro.

Page 36: 03 Modelo Dominio [Modo de compatibilidad]

1-36

@Juan__Gonzalez

Relación de Herencia en UML

Vehículo

BicicletaCoche

es un

+ mover ()+ detener ()

+llenarGasolina()

Estas métodos se heredan

Un coche es un vehículo, pero NO todos los vehículos

son coches!!

Page 37: 03 Modelo Dominio [Modo de compatibilidad]

1-37

@Juan__Gonzalez

Herencia Simple

+Abstracta

+Concreta

A este nivel, la clase es abstracta

Page 38: 03 Modelo Dominio [Modo de compatibilidad]

1-38

@Juan__Gonzalez

� La mayoría de las veces una clase hereda de solo otra clase (herencia simple), sin embargo una misma clase puede heredar de varias clases distintas (herencia multiple).

�Esto puede ayudar a simplificar el Modelo de Analisis, pero debe usarse juiciosamente, ya que puede ser dificil de implementar en el Modelo de Diseño.

Aeroplano Helicóptero Lobo Caballo

ObjetoVolador Animal

Pájaro

Herencia

múltiple

Herencia múltiple

Page 39: 03 Modelo Dominio [Modo de compatibilidad]

1-39

@Juan__Gonzalez

�Cada vez que se especializa una clase, esta clase hereda atributos y comportamientos de su superclase; pero además se añaden nuevos comportamientos o se modifican alguno de losya heredados

�Veamos que hereda la clase leo de sus clases padre.

Herencia

CLASE QUE HEREDA

Vertebrados Espina dorsal

Mamíferos Se alimenta con leche materna

Carnívoros Al ser adulto se alimenta de carne

Leo Agrega: tipo y color de piel

Page 40: 03 Modelo Dominio [Modo de compatibilidad]

1-40

@Juan__Gonzalez

� Detectan la necesidad de herencia entre clases de su proyecto

• No olvidar que con la herencia los atributos pueden quedar en las clases superiores– Mientras más arriba mejor

– Si un atributo sirve para todas las subclases

• Esto ayuda a modificar las clases

Actividad – Parejas de

miembros de un mismo equipo

Page 41: 03 Modelo Dominio [Modo de compatibilidad]

1-41

@Juan__Gonzalez

• Polimorfismo es la habilidad que adquieren los objetos de responder en formadiferente al mismo mensaje.

• Es decir, el mismo mensaje que se envía a muchos tipos de objetos, toma “muchas formas” y de ahí viene el término polimorfismo

Polimorfismo

Page 42: 03 Modelo Dominio [Modo de compatibilidad]

1-42

@Juan__Gonzalez

�Polimorfismo es la habilidad de esconderdiferentes implementaciones tras una sola interface

Polimorfismo

Marca CMarca A

Marca B

Page 43: 03 Modelo Dominio [Modo de compatibilidad]

1-43

@Juan__Gonzalez

�Pensemos en las FigurasGeometricas. Todas las FigurasGeometricas tienen como característica el poder calcular su área. Sin embargo, cada figura puede realizar esta operación de forma distinta.

Ejemplo de Polimorfismo

Area = l*l Area= pi*r2Area=b*a2

Calcula Area

Page 44: 03 Modelo Dominio [Modo de compatibilidad]

1-44

@Juan__Gonzalez

• Tomemos Medios de Transportes:barco, avión y auto. Si les enviamos el mensaje Desplázate, cada uno de estos objetos los hará a su manera.

Otro ejemplo,

Page 45: 03 Modelo Dominio [Modo de compatibilidad]

1-45

@Juan__Gonzalez

Representación polimorfismo UML

Transporte

CoheteCaballo

+ avanzar ()+ frenar ()

En itálicas denota clase abstractas

+ avanzar ()+ frenar ()

+ avanzar ()+ frenar ()

Carro

+ avanzar ()+ frenar ()

La definición de estos métodos se heredan, pero hay redefinirlos o

sobreescribirlos

Page 46: 03 Modelo Dominio [Modo de compatibilidad]

1-46

@Juan__Gonzalez

• ¿Reflexiona sobre tus clases, tendrán polimorfismo?

• Piensen en los movimientos de sus personajes.

• Piensen en la representación visual de sus objetos

Actividad

Page 47: 03 Modelo Dominio [Modo de compatibilidad]

1-47

@Juan__Gonzalez

Visibilidad

• Una clase puede permitir el acceso a otras clases ver ciertos atributos y operaciones.

• En UML existen 4 tipos de acceso y son:

Page 48: 03 Modelo Dominio [Modo de compatibilidad]

1-48

@Juan__Gonzalez

• En una televisión, modificarVolumen() y cambiarCanal() son operaciones públicas en tanto que dibujarImagenEnPantalla() es privada.

• En un automóvil, acelerar() y frenar() son operaciones públicas, pero actualizarKilometraje() es protegida.

Page 49: 03 Modelo Dominio [Modo de compatibilidad]

1-49

@Juan__Gonzalez

4.3 Visibilidad

Public (+)

• Es accesible por :– Métodos de la

misma clase.

– Clases dentro del mismo paquete.

– Clases dentro de otro paquete.

Page 50: 03 Modelo Dominio [Modo de compatibilidad]

1-50

@Juan__Gonzalez

4.3 Visibilidad

Protected (#)

• Es accesible por :– Métodos de la

clase

– Otras clases, del mismo u otro paquete, que hereda de la clase.

• No accesible por:– Clases que no

hereden de ésta.

Page 51: 03 Modelo Dominio [Modo de compatibilidad]

1-51

@Juan__Gonzalez

4.3 Visibilidad

Package visibility (~)

• Es accesible por:– Métodos de la

misma clase

– Todos las clases dentro del mismo paquete.

• No accesible por:– Clases de otros

paquetes.

Page 52: 03 Modelo Dominio [Modo de compatibilidad]

1-52

@Juan__Gonzalez

4.3 Visibilidad

Private (-)

• Es accesible por:– Solo la clase en

donde fue declarado el atributo o método

• No accesible por:– Ninguna clase

ajena a ésta.

Page 53: 03 Modelo Dominio [Modo de compatibilidad]

1-53

@Juan__Gonzalez

Actividad

• Para tus clases cuales tienen atributos y operaciones– Publicas

– Protegidas

– Paquete

– Privadas

Page 54: 03 Modelo Dominio [Modo de compatibilidad]

1-54

RELACIONANDO CLASES

Page 55: 03 Modelo Dominio [Modo de compatibilidad]

Relaciones

� UML no se trata solo de declarar atributos y operaciones. Existen muchas operaciones especiales que hacen de UML un lenguaje de modelado extenso.� Existen varios tipos de relaciones entre clases.

� Declaración de clases abstractas.

� Interfaces que nos permiten nombrar las operaciones sin hacer alguna implementación.

� Creación de clases genéricas, que puedan usarse para cualquier tipo de dato.

� Entre otras.

Page 56: 03 Modelo Dominio [Modo de compatibilidad]

Relaciones entre clases

� Las clases generalmente trabajan en conjunto con otras, usando diferentes tipos de relaciones.

� Existen 5 tipos de relaciones en UML� Dependencia

� Asociación

� Agregado

� Composición

� Herencia

Page 57: 03 Modelo Dominio [Modo de compatibilidad]

Relaciones entre clases

Dependencia

� Esta relación declara que una clase requiere conocer

acerca de otra para usar los objetos de esa clase.

� Ejemplo: una interfaz requiere usar la información de un objeto del tipo BlogEntry para mostrarla en pantalla, usamos la flecha de dependencia.

Page 58: 03 Modelo Dominio [Modo de compatibilidad]

Relaciones entre clases

Dependencia

� La dependencia solo implica que los objetos de la clase pueden trabajar juntos. Se dice que los objetos de ambas clases son dependientes uno del otro, trabajan juntos en tiempo de ejecución.

� Es la mas débil de todas las relaciones.

Page 59: 03 Modelo Dominio [Modo de compatibilidad]

Relaciones entre clases

Asociación

� Se refiere a que la clase tendrá una referencia a uno o varios objetos de la otra clase, en forma de atributo.

� Se utiliza cuando una clase necesita trabajar con un objeto de otra clase.

� Ejemplo: se asocian 0 o varios objetos BlogEntry a una sola clase BlogAccount

Page 60: 03 Modelo Dominio [Modo de compatibilidad]

5.1 Relaciones entre clases

Agregado

� Es parecida a la asociación. Indica que una clase tiene objetos que puede compartir con otra clase. La relación significa “tiene un”.

� Se demuestra con un diamante vacío.

� Ejemplo: un autor tiene una cuenta de blogs. Puede incluso compartir una cuenta con otros autores, también tiene control total sobre sus objetos.

Page 61: 03 Modelo Dominio [Modo de compatibilidad]

�Es común que un objeto contenga objetos de otras clases, tal capacidad se llama agregación.

�Por ejemplo: Un objeto Auto tiene o esta formado por objetos de otras clases (Llantas, Motor, etc.)

�La relación que se establece entre estos objetos se llama “tiene un”, “es parte de” o “consta de”� Ejemplo: Un auto tiene un motor� Un escuela tiene alumnos

�La relación de agregación, es una relación “débil” entre los objetos, ya que estos pueden existir independientemente del “todo”. Es decir, una llanta “puede existir”, sin ser parte de un auto.

Relación de agregación

61

Page 62: 03 Modelo Dominio [Modo de compatibilidad]

Relación de Agregación: representación en UML

62

Auto

Motor

Agregación: diamante vacío

Llanta

Tiene un

1..4

1

multiplicidad

Page 63: 03 Modelo Dominio [Modo de compatibilidad]

Relación de Agregación: otro ejemplo

63

País Estado1..*

Playa

0..*

Page 64: 03 Modelo Dominio [Modo de compatibilidad]

5.1 Relaciones entre clases

Composición

� Tiene un comportamiento similar al agregado. En UML se denota con un diamante relleno.

� Ejemplo: la introducción y el cuerpo de un blog son partes individuales del mismo, no se comparte con las demás partes de BlogEntry. Si se elimina un objeto BlogEntry, todas sus partes se van con el.

Page 65: 03 Modelo Dominio [Modo de compatibilidad]

�Es una relación de composición es muy parecida a la anterior (del tipo tiene un), sólo que en este caso la relación es mas fuerte.

�La vida de los objetos incluidos como atributos es totalmente dependiente de la vida del objeto contenedor

� Por ejemplo, una cara puede ser descrita, por los elementos que la forman; es decir; una cara está compuesta por un par de ojos, una boca y una nariz

� Tanto los ojos, la boca y la nariz, son objetos de otras clases: la clase Ojo, la clase Boca y la clase Nariz; sin embargo no existen independientemente a una cara.

Relación de Composición

65

Page 66: 03 Modelo Dominio [Modo de compatibilidad]

Relación de composición:UML

66

Cara Ojo2

Boca

1

Nariz

1

Composición: diamante lleno

Tiene un

Page 67: 03 Modelo Dominio [Modo de compatibilidad]

� Identifica las relaciones entre tus clases

Actividad

67

Page 68: 03 Modelo Dominio [Modo de compatibilidad]

5.1 Relaciones entre clases

Herencia

� Se usa para describir que una clase es un tipo de otra clase. Responde a “es un”.

� Las clases de abajo heredan todos los atributos y métodos que son declarados en las clases generalizadas. Y también pueden agregar sus propios especializados métodos y atributos.

Page 69: 03 Modelo Dominio [Modo de compatibilidad]

5.1 Relaciones entre clases

Herencia – Múltiple

� UML soporta la herencia múltiple, aunque no es soportado por lenguajes modernos como Java, C#.

� Cuando se hereda de dos clases, existe la posibilidad de que se encuentren atributos o métodos repetidos. Ejemplo:

Page 70: 03 Modelo Dominio [Modo de compatibilidad]

�Cada extremo de la asociación contiene un indicador de multiplicidad

� Indica el número de objetos que participan en la relación

Indicadores de Multiplicidad

70

Sin especificar

Exactamente uno 1

Muchos (Cero o más, *

sin limite) 0..*

Uno o más 1..*

Cero o uno 0..1

Rango Específico 2..4

Varios Rangos 2,4..6,8

Page 71: 03 Modelo Dominio [Modo de compatibilidad]

�La multiplicidad responde dos preguntas

� ¿La asociación es obligatoria o es opcional?

� ¿Cuál es el mínimo y máximo número de objetos de una clase que se pueden enlazar a un objeto de la otra clase?

�Las decisiones de multiplicidad exponen muchas suposiciones escondidas acerca del problema que se está modelando

� ¿Se puede ir el maestro de licencia o tomar vacaciones?

� ¿Puede un curso tener dos maestros?

¿Qué significa la Multiplicidad?

71

CursoProfesor

1.. *1

Page 72: 03 Modelo Dominio [Modo de compatibilidad]

Actividad� Determina la multiplicidad de las relaciones

Page 73: 03 Modelo Dominio [Modo de compatibilidad]

5.3 Clases abstractas

� Cuando creamos una clase generalizada, vemos que algunos métodos de las clases especializadas van a ser implementados de diferente manera. Dichos métodos se declaran abstractos y su implementación se deja a las clases especializadas.

� En UML se declara que un método es abstracto escribiendo su nombre en cursiva. Si una parte es cursiva, el nombre de la clase también debe serlo.

Page 74: 03 Modelo Dominio [Modo de compatibilidad]

5.3 Clases abstractas - Java

� En Java esta es la forma de implementar una clase y metodos abstractos.

public abstract class Store{

public abstract void store(Article[] a);

public abstract Article [] retrieve( );

}

� No existe una implementación del método, solo declaración de los parámetros y el tipo de retorno.

Page 75: 03 Modelo Dominio [Modo de compatibilidad]

5.3 Clases abstractas - Java

� No puedes crear un objeto de una clase abstracta (Store), pero si de la que incluye la implementación del método abstracto (Blogstore).

� Para implementar métodos de clases abstractas necesitamos hacer uso de la herencia.

Page 76: 03 Modelo Dominio [Modo de compatibilidad]

5.4 Interfaces

� Si queremos declarar los métodos que una clase en concreto debe implementar, y no queremos usar clases abstractas (por el uso de la herencia), podemos utilizar interfaces.

� Son una colección de operaciones que no tienen una implementación.

Page 77: 03 Modelo Dominio [Modo de compatibilidad]

5.4 Interfaces

� En UML se escriben de dos diferentes maneras:

� Y su implementación en Java es:public interface EmailSystem {

public void send(Message m);

Page 78: 03 Modelo Dominio [Modo de compatibilidad]

5.4 Interfaces

� Para denotar la implementación de los métodos de una interfaz, se le asocia a esta con una clase.

Page 79: 03 Modelo Dominio [Modo de compatibilidad]

5.5 Clases genéricas

� Cuando se declara un parámetro genérico, se refiere a que dicha clase a la que se asigne trabajara con otra clase, no importando cual será.

� Se denota usando un rectángulo punteado que lleva dentro el tipo parametrizado, que representa a otra clase.

Page 80: 03 Modelo Dominio [Modo de compatibilidad]

5.5 Clases genéricas

� En el diagrama anterior, E no es una clase dentro del modelo; E es un sustituto para un objeto de otro tipo que no sea de la misma clase ListOfThings

� El ejemplo mostrado trata de una lista, los genéricos generalmente son utilizados para expresar listas, que pueden almacenar cualquier tipo de dato, sin tener que hacer diferentes implementaciones de listas.

Page 81: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo

Page 82: 03 Modelo Dominio [Modo de compatibilidad]

Clases

Fuente: The essence of OOP with Java and UML

Page 83: 03 Modelo Dominio [Modo de compatibilidad]

Composición

Fuente: The essence of OOP with Java and UML

Page 84: 03 Modelo Dominio [Modo de compatibilidad]

Herencia

Fuente: The essence of OOP with Java and UML

Page 85: 03 Modelo Dominio [Modo de compatibilidad]

Polimorfismo

Fuente: The essence of OOP with Java and UML

Page 86: 03 Modelo Dominio [Modo de compatibilidad]

Poniendo todo Junto

Fuente: The essence of OOP with Java and UML

Page 87: 03 Modelo Dominio [Modo de compatibilidad]

Ejercicio: el hotel –Diagrama de tareas y Clases

� El hotel Baja tiene cinco salones de eventos (numerados del 1 al 5) y 40 habitaciones (numeradas del 6 al 45). Las primeras 10 habitaciones son sencillas, mientras que las restantes son dobles. Cuando un cliente llega al hotel, éste se registra en la primera habitación disponible requerida (sencilla, doble). Se registra el nombre del cliente y el pago de la habitación ($ 600.00 pesos habitación sencilla y $1000.00 habitación doble).

� Los salones tienen una tarifa de $10 000.00 pesos. El hotel sólo tiene un equipo de presentación, así que si se renta un salón y se requiere este servicio tendrá que instalarse en el salón alquilado. El equipo siempre se queda en el salón que lo utilizó la última vez. El cliente puede elegir el salón que desee, siempre y cuando esté disponible. El cliente puede ocupar y desocupar la habitación o el salón el mismo día

Page 88: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Page 89: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 90: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 91: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 92: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 93: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 94: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 95: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 96: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Page 97: 03 Modelo Dominio [Modo de compatibilidad]

No te olvides del Prototipo� Nos da pistas de las clases para tu interfaz

Page 98: 03 Modelo Dominio [Modo de compatibilidad]

Diagramas de ObjetosTraer a la vida tus diagramas

Page 99: 03 Modelo Dominio [Modo de compatibilidad]

Diagramas de objetos

�Un Diagrama de objetos está relacionado de cerca conun diagrama de Clases, con la diferencia de que éstedescribe las instancias de los objetos de clases en unpunto en el tiempo.

�Ellos son muy útiles en la comprensión de diagramasde Clases complejos, al crear diferentes casos en losque se aplican las relaciones y las clases.

�Cubren la vista de diseño y proceso estático de unsistema

Page 100: 03 Modelo Dominio [Modo de compatibilidad]

Notación Diagrama de Objetos

� Consiste de dos elementos: objetos y uniones (links). Un objeto es una entidad real creada a partir de una clase, igual una unión es creada a partir de una asociación. Ejemplo:

J.Perez: Cliente

clientID = 24629Nombre = Javier PerezDireccion = Pino 45875

Nombre de la clase

Objeto J.Pérez del tipo Cliente

Page 101: 03 Modelo Dominio [Modo de compatibilidad]

Notación: objeto anónimo� La forma abreviada utiliza :nombre de la clase sin el

nombre del objeto.

� Se usa cuando queremos dibujar un ejemplo donde no importe el objeto específico que participa.

: Cliente

clientID = 24629Nombre = Javier PerezDireccion = Pino 45875

� Contiene hechos acerca de los atributos. Cada atributo es nombrado y se le asigna un valor. Por eso se dice que la Clase son reglas a diferencia del Objeto que son hechos.

Page 102: 03 Modelo Dominio [Modo de compatibilidad]

Comparando el diagrama de Clases y el de Objetos

Embarque

-fecha:Date = hoy-destino:Dierccion = null

Producto-desc:String = null-numSerie:String =asignado…entrega

0…1 1…*

-fecha = 12-12-08-destino = Toluca

4321:Embarque

-desc = frijol bayo-numSerie = 582364…

-desc = harina -numSerie = 563284

21:Producto

96:Producto

Page 103: 03 Modelo Dominio [Modo de compatibilidad]

Diagrama de clase Diagrama de objetos

Tiene tres compartimentos: nombre, atributos y operaciones

Tiene dos compartimentos: nombre y atributos

Solo se pone el nombre de la clase Se puede poner el nombre del objeto : y el de la clase subrayados, o solamente : y el nombre de la clase

En los atributos se definen las propiedades de los mismos

Solo se definen los valores de cada atributo para la prueba que se esté modelando

Se listan las operaciones Las operaciones no están incluidas en el objeto ya que son idénticas para cada objeto de la misma clase

Las clases se conectan con una asociación con nombre, multiplicidad, roles.

Los objetos se conectan con un link que tiene un nombre y no tiene multiplicidad.

Page 104: 03 Modelo Dominio [Modo de compatibilidad]

¿Cómo sabemos que este diagrama modela realmente el dominio del problema?

Una técnica consiste en construir diagramas de objetos usando los escenarios de casos de uso y verificando que el diagrama de objetos se ajusta al diagrama de clases.

Page 105: 03 Modelo Dominio [Modo de compatibilidad]

Ejemplo

� Supongamos el siguiente proceso:� Un agente de reservaciones de los hoteles C&H está

esperando llamadas de clientes que quieran reservar un cuarto de hotel. Suena el teléfono y es un cliente que quiere reservar para ir al hotel de Cancún en Semana Santa, el agente selecciona “Crear una Reservación” en su pantalla principal y aparece una reservación en blanco. Hasta este momento lo único que sabemos es la ubicación del hotel (Cancún).

:UbicaciónNombre=“Cancún”

Page 106: 03 Modelo Dominio [Modo de compatibilidad]

El diagrama de clases

Reservación

NumReservStatus D_llegadaD_salida

CuartoUbicación

NombreDirección

Cliente

NombreApellidoDirección Tel

NombreCapacidad

ReservarCto( )

1…* 1

1…*

1

1…* 1

Page 107: 03 Modelo Dominio [Modo de compatibilidad]

� El agente pregunta de que fecha a que fecha quiere ir e introduce las fechas en la forma.

� Se despliegan los cuartos disponibles en esa fecha y en esa ubicación y el cliente selecciona el 7120.

Reservación

NumReserv = nullStatus = verifD_llegada = 8/04/09D_salida=15/04/09

1352:Cuarto

326:Cuarto

7120:Cuarto

:Ubicación

Nombre:Cancún

Page 108: 03 Modelo Dominio [Modo de compatibilidad]

� El agente introduce los datos del cliente en el sistema y el objeto Cliente se relaciona con la reservación

Reservación

NumReserv = nullStatus = verifD_llegada = 8/04/09D_salida=15/04/09

1352:Cuarto

326:Cuarto

7120:Cuarto

:Ubicación

Nombre:Cancún

:Cliente

Nombre: “Jaime”Apellido = “López”Dirección = “xxxx”Tel = “5874587587”

Page 109: 03 Modelo Dominio [Modo de compatibilidad]

� El agente pregunta si quiere confirmar la reservaciónP.. En caso afirmativo el sistema cambia el status a “Confirmada” y le asigna un número de reservación:

Reservación

NumReserv = 4582Status = confirmadaD_llegada = 8/04/09D_salida=15/04/09

1352:Cuarto

326:Cuarto

7120:Cuarto

:Ubicación

Nombre:Cancún

:Cliente

Nombre: “Jaime”Apellido = “López”Dirección = “xxxx”Tel = “5874587587”