Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
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
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”