Está en la página 1de 4

Resumen Sintaxis UML para Diagramas de Clase

1. Representación de una clase

• Una clase se representan como un rectángulo dividido en tres partes (tres compartimentos).

• En el compartimento superior, centrado, va el nombre de la clase.

• El segundo compartimento contiene los atributos, en la forma:


visibilidad nombreAtributo: tipo

• El tercer compartimento contiene los métodos, en la forma:


visibilidad nombreMétodo(parámetros): tipoRetorno.

• Los parámetros van separados por comas y sólo se especifica el tipo.

• Los constructores no tienen tipo de retorno.

• La visibilidad, de atributos y métodos, puede ser:


- privado
+ público
# protegido
~ de paquete

Ejemplo:
Carro

# marca: String
- modelo: int
- cantidadGasolina: double

+ Carro(String, String)
~ getModelo():String
+ tanquear(double):void

• Es posible representar una clase usando sólo el compartimento del nombre, o el compartimento
del nombre y uno de los dos siguientes (atributos o métodos). Cuando se representa una clase
de esta forma no es posible deducir nada de los compartimentos faltantes.

Ejemplo:

Avión ReproductorCD Muñeca

- marca: String + vestir(vestido:Vestido)


- modelo: int

2. Modificadores

• Los atributos y métodos estáticos se subrayan, así:


ClaseConElementosEstáticos

- cantidadTotal: int
- nombre: String

+ setCantidadTotal(valor : int):void
+ getNombre():String

• Para indicar que una clase es abstracta o final se debe colocar un comentario en la parte superior
del rectángulo, debajo del nombre de la clase. Este comentario va entre llaves, como se muestra
en el ejemplo:
FiguraGeométrica
{abstract}

- nombre:String

• Los métodos abstractos también llevan un comentario al final, como se ilustra a continuación.
FiguraGeométrica
{abstract}

+ área( ):double {abstract}

• Los atributos y métodos final llevan el comentario “frozen”, Ejemplo:

Imagen

- largo: double {frozen}


- archivo: File

- área(): double {frozen}

3. Paquetes

• Un paquete se representa de la siguiente forma:

NombrePaquete

• La relación de un paquete con las clases que contiene se representará como se ilustra a
continuación:
• En un diagrama de clases, cuando se desea incluir una clase de otro paquete se escribe, en el
compartimento correspondiente al nombre de la clase, el nombre del paquete seguido de dos
puntos. Por ejemplo:

modelo::base::Casa
corejava::Day
- estilo:String
- metrosCuadrados: int

4. Herencia

• La herencia se representa con una línea continua que va de la clase hija a la clase padre, y que
termina en un triángulo vacío. Ejemplo:

FiguraGeométrica

+ área():double
+ perímetro():double

Cuadrado

+ área():double

En el ejemplo anterior la clase Cuadrado es hija de la clase FiguraGeométrica y hereda todos sus
atributos y métodos. En este caso sólo es necesario mostrar los métodos que se sobrescriben. Es decir,
Cuadrado sobrescribe el método área, pero no el método perímetro, aunque tiene ambos métodos.

5. Asociación

• Una asociación (relación entre dos clases) se representa como una línea continua entre dos
clases, y puede tener el nombre de la relación sobre esta línea. Ejemplo:

conducir
Avión Piloto

En el ejemplo anterior cada Avión tiene una relación con Piloto, pero también cada Piloto tiene
relación con Avión. Esta es una relación en ambos sentidos.
• Para mostrar que la relación sólo tiene un sentido se muestra con una flecha que indica el sentido
de la relación. Ejemplo:
viajar
Avión Pasajero

En este ejemplo un Pasajero conoce el Avión (o aviones) con el cual viaja, pero el Avión no tiene
ninguna relación con los Pasajeros.

• Para determinar cuántos objetos de cada clase participan en una relación (multiplicidad), se
escribe el rango de la forma: límiteInferior..límiteSuperior. Por ejemplo:

0..1 Cero o uno (indica una relación opcional)


8-10 De ocho a diez
1 Exactamente uno
* Cero o muchos

• La multiplicidad se muestra en el extremo “destino” de la relación, ejemplo:

Avión Piloto
Aerolínea 1 * * 1..3
- nombre:String
+ volar():void

En este caso las relaciones son:


- Un Piloto tiene relación con cero o más aviones.
- Un Avión tiene relación con uno, dos o tres pilotos.
- Una Aerolínea tiene relación con cero o muchos aviones.
- Un Avión tiene relación con una Aerolínea.

Aunque estas relaciones se traducirán en atributos en las clases, estos atributos no se muestran en el
diagrama de clases.

6. Interfaces

• Una interfaz se puede representar como una clase. En el primer compartimento del rectángulo
debe ir la palabra “interfaz” encerrada en símbolos de << y >>. En los otros compartimientos, se
trabaja igual que con las clases.

Ejemplo:
<<interfaz>>
Descriptible

+ descripción(líneas:int):String

• Para mostrar que una clase implementa una interfaz, se utiliza una línea punteada desde la clase
hacia la interfaz, que termina en un triángulo vacío. Ejemplo:

<<interfaz>> Empleado
Serializable
- cédula: String

También podría gustarte