Está en la página 1de 38

19/05/2013

Diagramas de Clases

Curso: Tecnologa de la Programacin II. Docente: Mg. Zoraida Yanet Vidal Melgarejo.
CLASE 06

Introduccin

Son los diagramas ms comunes en el modelado de sistemas orientados a objetos.

El diagrama de clase representa clases, sus partes y la forma en la que las clases de los objetos estn relacionados con otro.

Son importantes no slo para visualizacin, especificacin y documentacin de modelos estructurales, sino tambin para construir sistemas ejecutables.

19/05/2013

Ejemplo de un diagrama de clases

Los diagramas de clases proporcionan una perspectiva esttica del sistema (representa su diseo estructural)

Pasos para el diagrama de clases


Identificar las clases. Mostrar los atributos y operaciones (posteriormente). Dibujar asociaciones. Etiquetar asociaciones y en caso necesario los roles. Indicar multiplicidad.

Dibujar flechas de direccin.

19/05/2013

Partes de un Diagrama de Clases

Clases:
Atributos Mtodos

Relaciones: Asociacin Composicin Agregacin Dependencia Generalizacin

Clase

Una clase describe un conjunto con un rol o roles equivalentes en un sistema. Los objetos y su divisin en clases a menudo derivan de una de las siguientes fuentes: Cosas tangibles o del mundo real: libro, copia, curso. Roles: socio, estudiante, director de estudios. Eventos: llegada, salida, peticin. Interacciones: encuentro, interseccin. Estas categoras se solapan, y las dos primeras son fuentes de objetos y de clases mucho ms comunes que las dos ltimas. Por el contrario, si se han identificado objetos que entran dentro de las dos primeras categoras, las otras dos pueden ayudar a encontrar y nombrar asociaciones entre ellos.
6

19/05/2013

Clase

Es importante recordar que los objetos son realmente cosas dentro de un programa de computador; que cuando se habla sobre libros y copias, por ejemplo, realmente nos referimos a la representacin de estas cosas dentro de nuestro sistema. Las consecuencias de esto son que hay que tener cuidado: De no almacenar informacin que es definitivamente irrelevante para nuestro sistema. De no perder la visin del hecho de que los objetos son el sistema!

Clase

El ltimo punto es particularmente interesante. Un error clsico es inventarse una clase, a menudo llamada [Cualquier_cosa], que implementa todo el comportamiento interesante del sistema. Pero en Orientacin a Objetos todo el negocio es el sistema; este es el tema! Es fcil dejarse llevar hacia un diseo monoltico donde hay un nico objeto que conoce y hace todo. Esto est mal porque tales diseos son muy difciles de mantener: tienden a tener presunciones sobre cmo ser utilizado el sistema.

19/05/2013

Clase
Identificacin de clases y objetos. La construccin de un modelo de clases incluye la identificacin de las clases que deberan existir en nuestro sistema: sta es una parte fundamental del trabajo de disear un sistema orientado a objetos.

Hay dos objetivos que se pretenden alcanzar: Construir, lo ms rpido y barato posible, un sistema que satisfaga nuestros requisitos actuales. Para ello: Cada comportamiento que requiera el sistema debe ser proporcionado por los objetos de las clases que elijamos.

Clase
Identificacin de clases y objetos. Construir un sistema que sea fcil de mantener y adaptar a futuros requisitos. Para lograrlo: Un buen modelo de clases est formado por mdulos encapsulados, con acoplamiento dbil (pocas dependencias entre mdulos) y cohesin fuerte (los mdulos poseen interfaces que proporcionan al desarrollador lo necesario que debe conocer para utilizarlos).

10

19/05/2013

Clase
Identificacin de clases y objetos. En la prctica, es probable que al construir un modelo de clases no lo haga correctamente la primera vez. La coleccin de clases en su modelo de diseo, es una de las cosas que probablemente cambiar a los largo y dentro de las iteraciones de desarrollo. Normalmente identificar primero y ms fcilmente las clases ms importantes de los objetos del dominio, es decir, aquellas que pertenecen de manera obvia al problema, en vez de aquellas que se introducen para resolverlo; las otras clases, que se corresponden con menos claridad con los objetos del dominio, son ms difciles de identificar con seguridad.
11

Clase
Tcnica: Identificacin de nombres. Se procede en dos etapas: Identifica las clases candidatas seleccionando todos los nombres y locuciones nominales de la especificacin de requisitos del sistema (considrelos en forma singular y no incluya frases que contengan o como candidatas). Descarte las candidatas que son inapropiadas por cualquier razn, renombrando las clases restantes si es necesario.

12

19/05/2013

Clase
Tcnica: Identificacin de nombres. Las razones por las que se podra decidir que una clase candidata es inapropiada incluyen que es: 1. Redundante, donde a la misma clase se le ha dado ms de un nombre. Es, sin embargo importante recordar que los objetos parecidos no tienen que se completamente iguales: una de las cosas que hay que decidir es si las clases son los suficientemente diferentes para considerarlas clases distintas. Por ejemplo, se incluyen aqu pares como prstamo y prstamo a corto plazo: son diferentes, pero probablemente slo en los valores de los atributos. Elija un nombre para la clase que abarque todas las descripciones que quiera que incluya.
13

Clase
Tcnica: Identificacin de nombres. 2. Impreciso, donde no se puede indicar de forma no ambigua lo que significa un nombre. Obviamente hay que eliminar la ambigedad antes de poder decir que se trata de una clase. 3. Un evento u operacin, donde el nombre hace referencia a algo que se hace para, por o en el sistema. A veces tales cosas estn bien modeladas en una clase, pero no es lo normal. Pregntese si la instancia del evento u operacin tiene estado, comportamiento e identidad. Si no, descrtelo. El estado de un objeto lo constituyen todos los datos (atributos) que encapsula en un momento determinado.

14

19/05/2013

Clase
Tcnica: Identificacin de nombres. El comportamiento es la manera como acta y reacciona un objeto, en funcin de sus cambios de estado y el paso de mensajes. La identidad es que a los objetos se les hace referencia por un nombre (el valor de una variable en un programa cliente) pero el nombre del objeto no es lo mismo que el objeto, porque un mismo objeto puede tener varios nombres diferentes. 4. Metalenguaje, donde el nombre forma parte de la manera en que se definen las cosas. Se utilizan los nombres requisitos y sistema, por ejemplo, como parte del lenguaje de modelado, en vez de representar objetos en el dominio del problema.
15

Clase
Tcnica: Identificacin de nombres. 5. Fuera del alcance del sistema, donde el nombre es relevante para describir cmo funciona el sistema pero que no hace referencia a algo. 6. Un atributo, donde est claro que un nombre hace referencia a algo sencillo, sin un comportamiento interesante, que es un atributo de otra clase.

En general, si se duda si mantener una clase, una buena prctica sera mantener dos listas, una con los candidatos ms firmes y otra con los ms dudosos. Con ello se evita perder informacin mientras se est distinguiendo todava las cosas de las que se est seguro, de las cosas que tienen que ser fijadas todava.
16

19/05/2013

Clase

Es la unidad bsica que encapsula toda la informacin de un Objeto (un objeto es una instancia de una clase). A travs de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.). En ellos se ponen el nombre, los atributos, las operaciones y adems se pueden usar para anotar otras propiedades del modelo como son (reglas del negocio, responsabilidades, excepciones, etc.)

17

Clase: Notacin Grfica

En UML, una clase es representada por un rectngulo que posee tres divisiones:

NombreClase // Lista de atributos visibilidad nombreAtributo: tipo [= valorIinicial] // Declaracin de mtodos visibilidad nombreMtodo(lista_argumentos): tipoRetorno

18

19/05/2013

Ejemplo

La clase automvil que posee como caracterstica: Matrcula Color Velocidad Puede realizar las operaciones de: Arrancar Acelerar Frenar

19

Ejemplo

El diseo asociado es:


Automovil
- matricula: String - color: String - velocidad: double + arrancar(): boolean + acelerar(): boolean + frenar(): boolean

20

10

19/05/2013

Nombre

Cada clase debe tener un nombre que la distinga de otras clases.

Un nombre es una cadena de texto


Un nombre solo se conoce como Nombre simple. Una Ruta nombre es el nombre de clase precedido del nombre del paquete en que vive la clase.

21

Atributos
El sistema que se construye consistir en una coleccin de objetos, que interactan para completar los requisitos del sistema. Es necesario identificar los atributos y los mtodos que cada clase debera tener. Algunos sern obvios; otros aparecern cuando se consideren las responsabilidades de los objetos y las interacciones entre ellos.
1.

Atributos. Atributos de clase: son aquellos que representan valores comunes a todas las instancias de una clase. Pueden tener un valor inicial. Por ejemplo: private static double promedioEdades; private static int numeroAlumnos = 0;

22

11

19/05/2013

Atributos
2.

Atributos de instancia: son aquellos que representan valores propios de un solo objeto que lo diferencia de otros elementos de su misma clase. Pueden tener un valor por defecto. Por ejemplo: private String nombre; private int numeroPuertas = 4; Constantes: son definidas por el modificador final y representan valores inmutables en tiempo y espacio. El nombre de las constantes debe escribirse totalmente en maysculas. Por ejemplo: public final int MAX = 20; public static final double PI = 3.1415;

3.

23

Atributos

Un atributo es una propiedad de una clase que describe un rango de valores que la propiedad puede conservar.

Una clase puede tener cualquier nmero de atributos o carecer de ellos.


Son descripciones de caractersticas, se usan para modelar informacin asociada con una entidad. Sintaxis:
visibilidad nombreAtributo[multiplicidad]:tipo [= valorInicial]

La multiplicidad es opcional e indica el nmero de atributos por instancia de la clase.


24

12

19/05/2013

Ejemplo: Especificacin de un atributo


Elemento Nombre del atributo Tipo de dato Valor de default (si hay) Restricciones Caracteres compaa compaa: character compaa: character = espacios compaa: character = espacios {1 a 30} compaa: character = espacios{1 a 30 alfabticos, espacios, puntuacin, no especiales} Ejemplo

Visibilidad

- compaa: character = espacios {1 a 30 alfabticos,


.

25

Mtodo u Operacin
1.

Mtodos de clase: son acciones que no requieren de un objeto especfico para su realizacin. Los mtodos de clase slo tienen acceso a los atributos de clase. Por ejemplo: public static int sumar(int x, int b) { int suma = 0; suma = x + y; return suma; }

26

13

19/05/2013

Mtodo u Operacin
2.

Mtodos de instancia: son acciones que requieren de un objeto especfico. Los mtodos de instancia tienen acceso a todos los miembros de la clase, tanto atributos de clase como atributos de instancia. Por ejemplo: public String getNombre( ) { return nombre; }

27

Mtodo u Operacin

Un mtodo es la implementacin de un servicio que puede ser solicitado desde cualquier objeto de la clase para afectar el comportamiento. Una clase puede tener cualquier nmero de mtodos o carecer de ellas. Un nombre de mtodo es un verbo o frase verbal que representa algn comportamiento.

28

14

19/05/2013

Mtodo u Operacin

En un mtodo se puede establecer su firma abarcando el nombre, tipo y valor de omisin de todos los parmetros y tipo de regreso. Sintaxis:
visibilidad nombreMtodo(parmetros: tipo): tipoRetorno

29

Ejemplo: Especificacin de un mtodo


Elemento Nombre Definir argumentos/ Parmetros, corresponden a una instancia de Order Definir el tipo de dato de retorno Identificar y describir restricciones Visibilidad Ejemplo totalOrderCantidad totalOrderCantidad (order: Integer)

totalOrderCantidad (order: Integer): Double totalOrderCantidad (order: Integer) : {El total es la suma de cada item (p.u. x cantidad)} + totalOrderCantidad (order: Integer) : {El total es la suma .

30

15

19/05/2013

Visibilidad

public (+) : Cualquier clase externa puede usar la caracterstica. protected (#) : Cualquier descendiente de la clase usa la caracterstica. private (-) : Slo la clase misma puede usar la caracterstica.

31

Diagrama de Clases

El Diagrama de Clase es el diagrama principal de anlisis y diseo de un sistema. En l se especifica la estructura de clases del sistema, con relaciones entre clases y estructuras de herencia. Su objetivo vara en anlisis y diseo: Durante el anlisis del sistema, el diagrama se desarrolla buscando una solucin ideal. Durante el diseo, se usa el mismo diagrama, y se modifica para satisfacer los detalles de las implementaciones.

32

16

19/05/2013

Relaciones entre Clases

Las relaciones existentes entre las distintas clases nos indican cmo se comunican los objetos de esas clases entre si. Los mensajes navegan por las relaciones existentes entre las distintas clases. Existen distintos tipos de relaciones: - Asociacin (Conexin entre clases). - Dependencia (relacin de uso). - Generalizacin/especializacin (relaciones de herencia).

33

Elementos Adicionales de una Relacin

Rol Identifica con nombres a los elementos que aparecen en los extremos de la lnea que denota la relacin, dicho nombre describe la semntica que tiene la relacin en el sentido indicado. Por ejemplo, la asociacin entre Persona que Trabaja Para una Empresa, recibe el nombre de trabajador y empleador como rol en ese sentido.

Rol
34

Rol

17

19/05/2013

Elementos Adicionales de una Relacin

Multiplicidad

Indica la cardinalidad de la relacin. En el ejemplo se utilizan 1 y *, como indicadores de multiplicidad.


Relacin Multiplicidad Multiplicidad

Rol
35

Rol

Tipos de Relaciones
1.- Relacin de Asociacin 1.1.- Asociacin de Agregacin 1.2.- Asociacin de Composicin 2.- Relacin de Dependencia 3.- Relacin de Generalizacin

36

18

19/05/2013

Asociacin

Una asociacin en general es una lnea que une dos o ms smbolos. Pueden tener varios tipos de adornos, que define su semntica y caractersticas. Los tipos de asociaciones entre clases presentes en un diagrama esttico son: asociacin binaria, asociacin reflexiva, asociacin n-aria, agregacin, composicin. La asociacin expresa una conexin bidireccional entre objetos. Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos. Puede determinarse por la especificacin de multiplicidad (mnima...mxima)

37

Multiplicidad

Determina cuantos objetos de cada tipo intervienen en la relacin. El nmero de instancias de una clase que se relacionan con UNA instancia de la otra clase Cada Asociacin tiene dos multiplicidades (una para cada extremo de la relacin): cuando la multiplicidad mnima es CERO, la relacin es opcional; y una multiplicidad mnima mayor o igual que UNO establece una relacin obligatoria.

38

19

19/05/2013

Tipos de Multiplicidad

39

Ejemplos de Multiplicidad

40

20

19/05/2013

Direccin

La direccin en las flechas de la asociacin determinan en que direccin puede recorrerse una asociacin en el momento de la ejecucin. Una asociacin sin flechas significa que se puede ir de un objeto a otro y viceversa. En el ejemplo siguiente el tipo de flecha en la asociacin implica que desde el objeto Reservacin puedes recuperar (dirigirte hacia) el objeto Cliente. Tambin implica que del objeto Cliente puede recuperar el juego de reservaciones para ese cliente.

41

Asociacin Binaria

Una asociacin binaria se representa mediante una lnea slida que une dos clases, se trata de una relacin entre las dos clases no muy fuerte, es decir, no se exige dependencia existencial ni encapsulamiento.

42

21

19/05/2013

Asociacin Reflexiva

Una clase puede asociarse con s misma. Una clase Empleado puede relacionarse consigo misma a travs del rol jefe/Jefe De. No significa que una instancia est relacionada consigo misma, sino que una instancia de la clase est relacionada con otra instancia de la misma clase.

43

Asociacin Reflexiva

Una instancia de Empleado puede ser el jefe de otras instancias de Empleado. Como el rol subordinado tiene una multiplicidad de 0*, significa que puede tener o no tener otros empleados a quien dirigir. Una instancia de Empleado tiene un slo jefe o ninguno (en caso de ser el mismo jefe).

44

22

19/05/2013

Asociacin Reflexiva

45

Asociacin N-aria

Es una forma de expresar una relacin entre tres o ms clases. La clase de asociacin es dependiente en existencia de las otras clases.

46

23

19/05/2013

Asociacin N-aria

47

Asociacin de Composicin

Es un tipo de relacin fuerte, el objeto agregado no puede existir de forma independiente. Agregacin disjunta y estricta: Las partes slo existen asociadas al compuesto (slo se accede a ellas a travs del compuesto).

48

24

19/05/2013

Asociacin de Composicin

Grficamente, se muestra con un rombo lleno en uno de los extremos (compuesto).

49

Asociacin de Composicin

50

25

19/05/2013

Asociacin de Agregacin

Es un tipo de relacin dbil, el objeto agregado puede existir de forma independiente. Las partes pueden forma parte de distintos agregados. Grficamente, se muestra con un rombo vaco en uno de los extremos.

51

Asociacin de Agregacin

52

26

19/05/2013

Dependencia

Relacin (ms dbil que una asociacin) que muestra la relacin entre un cliente y el proveedor de un servicio usado por el cliente: Cliente es el objeto que solicita un servicio. Servidor es el objeto que provee el servicio solicitado. Un cambio en un elemento (el elemento independiente) puede afectar a la semntica del otro elemento (elemento dependiente).

53

Dependencia

Grficamente, la dependencia se muestra como una lnea discontinua con una punta de flecha que apunta del cliente al proveedor.
Clase dependiente Clase independiente

Video ... ... Grabar(c : canal) Canal

Televisin ... ... cambiar(c : canal)

54

27

19/05/2013

Dependencia

55

Generalizacin

Es una relacin entre dos clases en donde una de ellas, llamada subclase o clase hija, hereda los atributos y el comportamiento de otra, llamada superclase o clase padre. En una generalizacin no hay multiplicidad ni roles. Las subclases heredan caractersticas de las clases de las que se derivan y aaden caractersticas especficas que las diferencian. La visibilidad protected permite que slo objetos de la misma clase subclase vean el elemento.
56

28

19/05/2013

Generalizacin: Representacin grfica


Clase hija Clase Padre

Vehculo

Terrestre

Areo

camin

auto

avin

helicptero

57

Generalizacin: Representacin grfica

58

29

19/05/2013

Paquete

Es un elemento organizador que proporciona UML al dividir el sistema en paquetes que lo hace ms fcil de entender. Un paquete es una forma de agrupar clases (u otros elementos en otro tipo de diagramas) en modelos grandes. Pueden tener asociaciones de dependencia o de generalizacin entre ellos. Un ejemplo puede ser el siguiente

59

Interfaces

Una interface no es una clase. Una clase tiene una instancia de su tipo, mientras que una interface debe tener al menos una clase para implantarla. En UML, una interface es considerada como una especializacin de una clase. Una interface se dibuja como una clase, pero en el compartimento superior del rectngulo aparece un texto una inicial que indica que se trata de una interface y no de una clase. Se representan como clases pero con el estereotipo <<interface>>. Solo contienen operaciones pblicas.
60

30

19/05/2013

Interfaces: Ejemplo

En el diagrama anterior las clases Professor y Student implementan a la interface Person y no heredan de sta, podemos deducirlo a partir de: 1) El objeto Person de acuerdo a la simbologa del diagrama est como una interface y Professor y Student estn como clases. 2) No se trata de herencia ya que la lnea con la flecha est punteada y no slida.
61

Clase Abstracta

Una clase abstracta se denota con el nombre de la clase y de los mtodos con letra "itlica". Esto indica que la clase definida no puede ser instanciada pues posee mtodos abstractos (an no han sido definidos, es decir, sin implementacin). La nica forma de utilizarla es definiendo subclases, que implementan los mtodos abstractos definidos.

62

31

19/05/2013

Clase Parametrizada

Se denota con un subcuadro en el extremo superior de la clase, en donde se especifican los parmetros que deben ser pasados a la clase para que esta pueda ser instanciada. El ejemplo ms tpico es el caso de un Diccionario en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genricos. La genericidad puede venir dada de un Template (como en el caso de C++) o bien de alguna estructura predefinida (especializacin a travs de clases).

63

Clase Parametrizada

En el ejemplo no se especificaron los atributos del Diccionario, pues ellos dependern exclusivamente de la implementacin que se le quiera dar.

64

32

19/05/2013

Ejemplo 1:
En una empresa de Ventas, un cliente (Natural o Jurdico) realiza un pedido que es atendido por un Personal. Dicho personal tiene a su cargo a otro personal, el cual ocupa un puesto especfico en la empresa. En un pedido se puede consignar la venta de varios productos. As tambin un producto puede estar relacionado con varios pedidos. Un producto se encuentra relacionado con una sola categora, a la cual pueden pertenecer varios productos Realizar un Diagrama de Clases que grafique las relaciones existentes.
65

Ejemplo 1:

66

33

19/05/2013

Ejemplo 2:
Se desea disear un diagrama de clases sobre la informacin de las reservas de una empresa dedicada al alquiler de automviles, teniendo en cuenta que un determinado cliente puede tener hechas, en un momento dado, varias reservas. De cada cliente se desea almacenar su DNI, nombre, direccin y telfono. Adems los clientes se diferencian por un cdigo nico. Cada cliente puede ser avalado por otro cliente de la empresa. Una reserva la realiza un nico cliente pero puede involucrar varios coches.

67

Ejemplo 2:
Es importante registrar la fecha de inicio y final de la reserva, el precio del alquiler de cada uno de los coches, los litros de gasolina en el depsito en el momento de realizar la reserva, el precio total de la reserva y un indicador de si el coche o los coches han sido entregados. Todo coche tiene siempre asignado un determinado garaje que no puede cambiar. De cada coche se requiere la matricula, el modelo, el color y la marca. Cada reserva se realiza en una determinada agencia.

68

34

19/05/2013

Ejemplo 2:

69

Ejemplo 3:
La Polica quiere crear una base de datos sobre la seguridad en algunas entidades bancarias. Para ello tiene en cuenta: Que cada entidad bancaria se caracteriza por un cdigo y por el domicilio de su Central. Que cada entidad bancaria tiene ms de una sucursal que tambin se caracteriza por un cdigo y por el domicilio, as como por el nmero de empleados de dicha sucursal. Que cada sucursal contrata, segn el da, algunos vigilantes que se caracterizan por un cdigo y su edad. Un vigilante puede ser contratado por diferentes sucursales (incluso de diferentes entidades), en distintas fechas y es un dato de inters dicha fecha, as como si se ha contratado con arma o no.
70

35

19/05/2013

Ejemplo 3:
Por otra parte, se quiere controlar a las personas que han sido detenidas por atracar las sucursales de dichas entidades. Estas personas se definen por una clave (cdigo) y su nombre completo. Alguna de estas personas estn integradas en algunas bandas organizadas y por ello se desea saber a qu banda pertenecen, sin ser de inters si la banda ha participado en el delito o no. Dichas bandas se definen por un nmero de banda y por el nmero de miembros. As mismo, es interesante saber en qu fecha ha atracado cada persona una sucursal. Evidentemente, una persona puede atracar varias sucursales en diferentes fechas, as como que una sucursal puede ser atracada por varias personas.
71

Ejemplo 3:
Igualmente, se quiere saber qu Juez ha estado encargado del caso, sabiendo que un individuo, por diferentes delitos, puede ser juzgado por diferentes jueces. Es de inters saber, en cada delito, si la persona detenida ha sido condenada o no y de haberlo sido, cunto tiempo pasar en la crcel. Un Juez se caracteriza por una clave interna del juzgado, su nombre y los aos de servicio. NOTA: En ningn caso interesa saber si un vigilante ha participado en la detencin de un atracador

72

36

19/05/2013

Ejemplo 3:

73

Ejemplo 4:
Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, ao y autor. Un libro est relacionado con una categora (novela, teatro, poesa, ensayo) as como tambin con una editorial. Los autores se caracterizan por su nombre y fecha de nacimiento. Se considera que el autor slo tiene una nacionalidad. Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparacin.
74

37

19/05/2013

Ejemplo 4:
Los lectores pueden tener un mximo de 3 libros en prstamo. Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos das sin posibilidad de coger un nuevo libro. Realizar un diagrama de clases para realizar el prstamo y devolucin de libros.

75

Ejemplo 4:

76

38

También podría gustarte