Está en la página 1de 21

Diagrama de Clases

Diagrama de Clases
El propsito de este diagrama es el de representar los objetos fundamentales del sistema, es decir los que percibe el usuario y con los que espera tratar para completar su tarea en vez de objetos del sistema o de un modelo de programacin. La clase define el mbito de definicin de un conjunto de objetos. Cada objeto pertenece a una clase. Los objetos se crean por instanciacin de las clases.

Diagrama de Clases
Cada clase se representa en un rectngulo con tres compartimientos:
Nombre de la clase Atributos de la clase Operaciones de la clase

Diagrama de Clases: Atributos


Tipo: puede llegar a depender del lenguaje de programacin a utilizar. utilizar. Valor inicial: valor que poseer el atributo al crear un objeto. Visibilidad: est relacionado con el encapsulamiento. Multiplicidad: determinar si un atributo debe estar o no, y si posee un nico valor o una lista de valores. Ordenamiento: especifica si el atributo determina alguna relacin de orden dentro dentro de la clase. Capacidad de cambio: permite definir atributos con valores constantes. Modificadores: un atributo puede ser de clase, derivado, voltil, transitorio. transitorio.
El atributo fecha de nacimiento es pblico.

El atributo edad es derivado (puede calcularse a partir de la fecha de nacimiento), y determina una relacin de orden entre las instancias de las personas. El atributo DNI es un atributo protegido.

El atributo coloresPreferidos representa una coleccin o conjunto de valores del tipo Color
4

Diagrama de Clases: Atributos


Visibilidad
La encapsulamiento presenta tres ventajas bsicas:
Se protegen los datos de accesos indebidos El acoplamiento entre las clases se disminuye Favorece la modularidad y el mantenimiento

Los atributos de una clase no deberan ser manipulables directamente directamente por el resto de objetos.

Niveles de encapsulamiento:
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible desde fuera de la clase (excepto para clases friends en terminologa terminologa C++). (~) Package : Slo es visible dentro del mismo package. (#) Los atributos/operaciones protegidos estn visibles para las clases friends y para las clases derivadas de la original. (+) Los atributos/operaciones pblicos son visibles a otras clases (cuando se trata de atributos se est transgrediendo el principio principio de encapsulamiento).
5

Diagrama de Clases: Atributos


Multiplicidad
1 0..1 0..* 1..* * M..N El atributo debe tener un nico valor. El atributo puede o no tener un valor. El atributo puede tener varios valores o ninguno. El atributo puede tener varios valores, pero debe tener al menos uno El atributo puede tener varios valores. El atributo puede tener entre M y N valores.

Modificadores
De clase o esttico: el atributo se aparece subrayado. No es necesario contar con un objeto para ejecutarlo. Derivado: es calculable a partir de otros atributos. Transitorio: tendr valor slo durante una porcin de la ejecucin. Voltil: no se persiste.

Diagrama de Clases: Operaciones


Una operacin es un servicio que una instancia de la clase puede realizar.
Tipo devuelto: puede llegar a depender del lenguaje de programacin a utilizar. utilizar. Parmetros: adems del tipo, puede especificarse si son In, Out o InOut. Visibilidad: est relacionado con el encapsulamiento. Modificadores: una operacin puede ser de clase, abstracta, query o constructor. constructor.

La operacin calcularEdad es privado y no devuelve nada.

El mtodo pblico calcularHorasTrabajadas es abstracto, las subclases de la clase Persona deber implementarlo para utilizarlo.

Diagrama de Clases
Relaciones entre Clases Una asociacin es una conexin estructural simple entre clases. Las instancias de las clases implicadas en una asociacin estarn probablemente comunicndose en el momento de ejecucin. Los enlaces entre de objetos pueden representarse entre las respectivas clases Formas de relacin entre clases:
Asociacin y Agregacin (vista como un caso particular de asociacin) Generalizacin/Especializacin
8

Diagrama de Clases: Asociacin


La asociacin expresa una conexin bidireccional entre objetos. Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos.

Enlace

Diagrama de Clases
Relaciones entre Clases
Multiplicidad
1 0..1 0..* 1..* * M..N Un elemento relacionado. Uno o ningn elemento relacionado. Varios elementos relacionados o ninguno. Varios elementos relacionados pero al menos uno. Varios elementos relacionados. Entre M y N elementos relacionados.

10

Diagrama de Clases: Asociacin


Rol Identificado como un nombre a los finales de la asociaci asociacin, describe la sem semntica de la relaci relacin en el sentido indicado. Cada asociaci asociacin tiene dos roles; cada rol es una direcci direccin en la asociaci asociacin.

11

Diagrama de Clases: Asociacin


Se asume que una asociacin es bidireccional, es decir que se puede navegar desde cualquiera de clases implicadas a la otra, pero es posible indicar que la navegacin ocurrir en una sola direccin.

12

Diagrama de Clases: Agregacin


Es una asociacin especial, una relacin del tipo todo/parte dentro de la cual una o ms clases son partes de un conjunto.

13

Diagrama de Clases: Composicin


La composicin es una forma fuerte de agregacin. Se diferencian en:
En la composicin tanto el todo como las partes tienen el mismo ciclo de vida. Un objeto puede pertenecer solamente a una composicin.

14

Diagrama de Clases: Asociacin Calificada


Un calificador es un atributo (o tupla de atributos) de la asociacin cuyos valores sirven para particionar el conjunto de objetos enlazados a otro. Un calificador se representa como un pequeo rectngulo conectado al final de una asociacin y a la clase. El rectngulo del calificador es parte de la asociacin, y no parte de la clase.

fila: fila: int columna: columna: int

15

Diagrama de Clases: Asociacin nn-arias


Son asociaciones que se establecen entre m ms de dos clases Una clase puede aparecer varias veces desempe desempeando distintos roles. Las asociaciones nn-arias se representan a trav travs de rombo que se une con cada una de las clases. clases.
La relaciones nn-arias pueden ser usadas para impedir inconsistencias en el modelo.

16

Diagrama de Clases: Generalizacin


Una generalizacin se refiere a una relacin entre una clase general (superclase o padre) y una versin ms especfica de dicha clase (subclase o hija).

17

Diagrama de Clases: Generalizacin


Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada. Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre estn disponibles en sus clases hijas. La especializacin es una tcnica muy eficaz para la extensin y reutilizacin.
Restricciones predefinidas en UML: Overlapping Disjoint Complete Incomplete
18

Diagrama de Clases: Generalizacin


Particionamiento del espacio de objetos Clasificacin Esttica Particionamiento del espacio de estados de los objetos Clasificacin Dinmica En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas Usando discriminadores se pueden tener varias especializaciones de una misma clase padre

Discriminador

19

Diagrama de Clases: Generalizacin


La herencia mltiple debe manejarse con precaucin. Algunos problemas son el conflicto de nombre y el conflicto de precedencia. precedencia. Se recomienda un uso restringido y disciplinado de la herencia. Permite modelar jerarquas alternativas.

20

Diagrama de Clases: Clase de asociacin


Es una asociacin y una clase simultneamente. Hay que tener en cuenta dnde se colocan los atributos.

21

Diagrama de Clases: Dependencia


Una dependencia es una relacin de uso en la que un cambio en uno de los trminos -por ejemplo, una claseclasepuede afectar a otro (otra clase)

22

Diagrama de Clases: Dependencia


Posibles dependencias entre clases use: use: el funcionamiento del origen depende de la presencia del destino instantiate: instantiate: el origen crea instancias del destino derive: derive: el origen puede calcularse a partir del destino refine: refine: el origen est est un grado de abstracci abstraccin m ms detallado. bind(): bind(): derivaci derivacin gen genrica de una plantilla friend: friend: visibilidad caracter caracterstica de C++

23

Diagrama de Clases: Estereotipos


Un estereotipo representa el principal mecanismo de extensin de UML. Ofrece una forma de extender una metaclase, creando un nuevo elemento de metamodelo.

24

Diagrama de Clases: Interfaces


Una interfaz es una coleccin de operaciones que representan servicios ofrecidos por una clase o componente. Por definicin, todas estas operaciones tendrn una visibilidad pblica. La interfaz especifica algo similar a un contrato que la clase se compromete a respetar. La clase realiza (o suministra una realizacin de) una o varias interfaces. UML define dos tipos de interfaces: interfaz suministrada e interfaz requerida.
25

Diagrama de Clases: Interfaces


La interfaz suministrada es aquella que una clase efectivamente implementa.

26

Diagrama de Clases: Interfaces


Las interfaces requeridas son aquellas que necesita una clase para realizar su cometido. El smbolo utilizado para representarla es un semicrculo.

27

Ejemplo
Cmo interpretara lo siguiente?

28

Modelo de Dominio vs. Modelo de Diseo


El diagrama de clases puede utilizarse con distintos fines en distintas etapas del proceso de desarrollo. Durante la etapa de anlisis, el modelo de dominio es encargado de mostrar el conjunto de clases conceptuales del problema y las relaciones presentes entre s. Durante la etapa de diseo, el modelo de diseo determina las futuras componentes de software (clases) y sus relaciones entre s.
29

Modelo de Dominio
Es una representacin de las cosas, entidades, idea, clases conceptuales u objetos del mundo real o dominio de inters, no de componentes de software. Muestra clases conceptuales significativas en un dominio del problema. Se usa como base para el diseo de los objetos de software.

30

Modelo de Dominio
Es el artefacto ms importante del anlisis. Podra se considerado como un diccionario visual de abstracciones de clases conceptuales, vocabulario e informacin del dominio. No es absolutamente correcto o incorrecto, su intenci intencin en ser til sirviendo como una herramienta de comunicaci comunicacin.

31

Modelo de Dominio
Otros nombres: modelo conceptual, modelo de objetos del dominio y modelo de los objetos de an anlisis. Seg Segn el punto de vista, tiene puntos en com comn con el Diagrama de Entidad Relaci n . Relaci Usando UML, el MD se representa con un conjunto de diagramas de clases. Se puede mostrar: objetos del dominio o clases conceptuales asociaciones entre las clases conceptuales atributos de las clases conceptuales NO SE DEFINE NINGUNA OPERACI OPERACIN. La asignaci asignacin de responsabilidades de los objetos no forma parte de este modelo.
32

Modelo de Dominio: Clases Conceptuales


Es v vlido lido
Tener clases conceptuales sin atributos. Tener clases conceptuales para las cuales no haya requerimientos de informaci informacin a registrar. Tener clases conceptuales con rol de comportamiento, en lugar de informaci informacin.

Estrategias para identificar


Utilizar lista de categor categoras de clases conceptuales. Identificar frases nominales (sustantivos o frases).

33

Modelo de Dominio: Clases Conceptuales

34

Modelo de Dominio: Clases Conceptuales


Identificar frases nominales (sustantivos o frases) Se intenta identificar sustantivos o frases nominales en el vocabulario y descripciones del dominio del problema. Esta t tcnica pr prctica no puede ser aplicada mec mecnicamente sino que hay que usar el sentido com comn y capturar las abstracciones adecuadas puesto que el lenguaje natural es ambiguo y los conceptos relevantes no siempre se encuentran de manera expl explcita.

35

Ejemplo
Un posible modelo de dominio para el caso del local de venta de electrodom electrodomsticos sticos

36

Diagrama Entidad Relacin


No pertenece a UML Nacido para describir bases de datos relacionales (Chen). 2 conceptos: entidades y relaciones.
Entidades: conjuntos de individuos que poseen atributos. Relaciones entre individuos especificando cardinalidad y opcionalidad.
Cliente
ordena

Proyecto
trabaja_en

Empleado

37

Modelo de Diseo A diferencia del Modelo de Dominio, el modelo de diseo se encuentra ms cerca de la solucin buscada. Refleja decisiones en cuanto a asignacin de responsabilidades entre los objetos (operaciones). Toma como base el Modelo de Dominio, donde algunas entidades se promovern a Clases.
38

Modelo de Diseo Muestra cmo se relacionan componentes de software para resolver el problema planteado. Es el paso previo a la implementacin. Es posible aplicar patterns segn el tipo de problema.

39

Objetos

40

Preguntas?

41

También podría gustarte