03 modelo dominio [modo de compatibilidad]juan.gonzalez/temp/modelo dominio.pdf · actividad –...

Post on 29-Sep-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Tópicos Selectos

Dr. Juan Manuel González Calleros

Benemérita Universidad Autónoma de Puebla

Email: juan.gonzalez@cs.buap.mxTwitter: @Juan__GonzalezFacebook: Juan Glez Calleros

Reuniones pedir cita

1-2

DIAGRAMAS DE CLASE

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.

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

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

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.

1-7

@Juan__Gonzalez

¿Cómo modelan un auto?

• Características generales de todos los autos

• Funcionalidad común de todos los autos

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

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

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

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

1-12

@Juan__Gonzalez

• ¿Cuántas clases ves?

Clases v.s. Objetos

1-13

@Juan__Gonzalez

• Modelar la clase lavadora

Ejemplo de una clase

LAVADORA

marca

modelo

capacidad

Programar

Poner ropa

Cerrar puerta

lavar

Atributos

Comportamiento

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

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

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

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.

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

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:

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).

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

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

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

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

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

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.

1-27

@Juan__Gonzalez

Trabaja con tu proyecto

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

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

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).

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).

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.

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)

1-33

@Juan__Gonzalez

Actividad

• Trabajar en las operaciones

1-34

@Juan__Gonzalez

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.

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!!

1-37

@Juan__Gonzalez

Herencia Simple

+Abstracta

+Concreta

A este nivel, la clase es abstracta

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

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

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

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

1-42

@Juan__Gonzalez

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

Polimorfismo

Marca CMarca A

Marca B

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

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,

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

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

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:

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.

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.

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.

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.

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.

1-53

@Juan__Gonzalez

Actividad

• Para tus clases cuales tienen atributos y operaciones– Publicas

– Protegidas

– Paquete

– Privadas

1-54

RELACIONANDO CLASES

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.

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

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.

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.

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

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.

�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

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

62

Auto

Motor

Agregación: diamante vacío

Llanta

Tiene un

1..4

1

multiplicidad

Relación de Agregación: otro ejemplo

63

País Estado1..*

Playa

0..*

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.

�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

Relación de composición:UML

66

Cara Ojo2

Boca

1

Nariz

1

Composición: diamante lleno

Tiene un

� Identifica las relaciones entre tus clases

Actividad

67

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.

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:

�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

�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

Actividad� Determina la multiplicidad de las relaciones

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.

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.

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.

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.

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);

5.4 Interfaces

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

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.

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.

Ejemplo

Clases

Fuente: The essence of OOP with Java and UML

Composición

Fuente: The essence of OOP with Java and UML

Herencia

Fuente: The essence of OOP with Java and UML

Polimorfismo

Fuente: The essence of OOP with Java and UML

Poniendo todo Junto

Fuente: The essence of OOP with Java and UML

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

Ejemplo de Codificación

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

Ejemplo de Codificación

Fuente: The essence of OOP with Java and UML

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

Diagramas de ObjetosTraer a la vida tus diagramas

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

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

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.

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

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.

¿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.

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”

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

� 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

� 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”

� 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”

top related