Sie sind auf Seite 1von 11

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION I – Ciclo II 2016
Conceptos de Diagramas de Clases

Atributos
Son las propiedades o características que presenta la clase. Por ejemplo, en una clase llamada
Cliente: nombre, direccion y telefono, podrían ser algunos de los atributos que podría contener.

Operaciones
Los métodos son procedimientos o tareas que realizan las clases en respuesta a un mensaje. En los
métodos es necesario mostrar parámetros y valores de retorno.

Mensajes y Operaciones
Los mensajes se muestran como flechas. Los mensajes pueden ser completos, perdidos o
encontrados; síncronos o asíncronos: llamadas o señales. Los mensajes sirven para poner en marcha
algún tipo de operación que deberá hacer el sistema. El mensaje síncrono es representado por una
punta oscura, este mensaje tiene un retorno implícito, El mensaje asíncrono es representado por una
punta de flecha en línea y por último el mensaje de retorno asíncrono representado por una línea
punteada.

Los mensajes “navegan” por las relaciones existentes entre las distintas clases.

Clases y Objetos
Los objetos y las clases son representados por un rectángulo con su respectivo nombre.

Clase
Es la unidad mínima de un objeto, en ella se encuentra la información básica necesaria para poder
modelar el entorno que se requiere para la realización del sistema.

Relaciones entre Clases


Las relaciones existentes entre las distintas clases indican cómo se comunican los objetos de esas
clases entre sí.

Existen distintos tipos de relaciones: Asociación (conexión entre clases), Dependencia (relación de
uso) y Generalización/Especialización (relaciones de herencia)

Visibilidad
Es la manera en que se manejan los atributos y métodos de una clase, estos pueden ser tres:

Privado este es el más fuerte ya que sólo la clase principal puede utilizar el atributo o método, para
indicar el nivel de privado se antecede por guión (-).
Público, este indica que está visible para todas las clases y puede ser utilizado por otras clases, es
representada por un el signo (+).
Protegido significa que sólo puede ser usado por la clase que lo contenga o una subclase de esta
clase, es representada por el símbolo (#).

1
Navegabilidad
La navegabilidad indica en qué orden fluyen los datos en el diagrama. Se indica por medio de una
flecha que se pone al final de una línea de asociación apuntando hacia la clase que recibe los datos,
esta representa una asociación unidireccional; también hay otra que es la bidireccional, la cual indica
que existe navegabilidad en ambas direcciones.

Multiplicidad
La multiplicidad es el número de instancias que tiene una clase en relación con otra clase pueden ser
de varias maneras: con un número fijo, indica que no puede ser más de lo que se indica, con un
intervalo de valores 2…5, otra forma es la de un número que indica el comienzo y al final un
asterisco, este indica que empieza con el número que se indica y el asterisco que pueden ser muchos
o infinito, sólo el asterisco indica que puede tomar cualquier valor (uno o más) , también se puede
usar la combinación de cualquier manera siempre y cuando se encuentren separados de comas.

Relación de Asociación
Una relación de asociación es cuando varios elementos se encuentran relacionados y los objetos de
estos elementos están conectados y se pueden comunicar entre sí. Es una relación estructural entre
varios elementos y se representa gráficamente con una línea continua entre los elementos
relacionados.

Una asociación es una relación estructural que describe una conexión entre objetos. Gráficamente, se
muestra como una línea continua que une las clases relacionadas entre sí.

Cliente Direccion

Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos), en
ocasiones es deseable hacerlas unidireccionales (restringir su navegación en un único sentido).
Gráficamente, cuando la asociación es unidireccional, la línea termina en una punta de flecha que
indica el sentido de la asociación:
Cuenta Dinero
-balance -nombres
Cuenta Dinero -limite
* titular 1 * titular 1 -apellidos
-fApertura -nit
-dirección

Asociación Unidireccional Asociación Bidireccional

Cuenta Dinero
* balance 1
Equivale a

2
Se ha supuesto que Dinero es un tipo de dato con el que se pueden hacer operaciones aritméticas y
se ha añadido un método adicional que permite comprobar el saldo de una cuenta.

Cuenta Dinero Viene a


-balance -nombres
-limite -apellidos ser lo
* titular 1
-fApertura -nit
-dirección mismo que

Un cliente puede tener varias cuentas, por lo que en la clase Cliente se ha de mantener un conjunto
de cuentas (un vector en este caso).

La multiplicidad de una asociación determina cuántos objetos de cada tipo intervienen en la relación:
es el número de instancias de una clase que se relacionan con UNA instancia de la otra clase. Cada
asociación tiene dos multiplicidades (una para cada extremo de la relación). Para especificar la
multiplicidad de una asociación hay que indicar la multiplicidad mínima y la multiplicidad máxima
(mínima..máxima)

Multiplicidad Significado
1 Uno y sólo uno
0..1 Cero o uno
N..M Desde N hasta M
* Cero o varios
0..* Cero o varios
1..* Uno o varios (al menos uno)

Cuando la multiplicidad mínima es 0, la relación es opcional.


Una multiplicidad mínima mayor o igual que 1 establece una relación obligatoria.

dirige
Profesor Departamento

1 0..1

Todo departamento tiene un director. Un profesor puede dirigir un departamento.

3
pertenece a
Profesor Departamento

* 1

Todo profesor pertenece a un departamento y a un departamento pueden pertenecer varios profesores

Relación opcional: un cliente puede o no Relación obligatoria: una cuenta ha de tener


Un cliente puede o no ser titular de una cuenta un titular como mínimo

Una relación es involutiva cuando la misma clase aparece en los dos extremos de la asociación:

Agregación – Composición
La agregación y la composición son casos particulares de asociaciones: establecen relación entre un
todo y sus partes. Gráficamente, se muestran como asociaciones con un rombo en uno de los
extremos. En la agregación, las partes pueden formar parte de distintos agregados:

4
Una composición es una agregación disjunta y estricta: las partes sólo existen asociadas al compuesto
(sólo se accede a ellas a través del compuesto):

Otros ejemplos:
Ciudad tiene un atributo Aeropuerto Un Auto debe tener motor
(puede o no tenerlo) Un libro debe tener paginas/letras/imágenes

Aeropuerto Ciudad Motor Auto

Relaciones de Herencia y Dependencia


La manera de representar una relación de herencia en UML es con una línea que conecta a la clase
padre con la clase hija al final de la línea que conecta a la clase padre se coloca un triángulo sin
rellenar que apunte a la clase padre, esto indica que la clase padre le hereda todos sus métodos y
atributos a la clase hija.

Otro tipo de relación es la de la dependencia, en este tipo de relación se da que una clase utiliza a
otra. La manera de representar esto en UML es la de una línea discontinua con una punta de flecha
sin rellenar que apunta a la clase de la que depende.

Las agregaciones son un tipo de asociación entre clases, o de otra manera seria la relación que tiene
la clase con los componentes que conforman un todo. Se representa por medio de una línea que se
conecta con un todo, por medio de un rombo sin relleno.

5
La dependencia (es más débil que una asociación) muestra la relación entre un cliente y el proveedor
de un servicio usado por el cliente. Cliente es el objeto que solicita un servicio y Servidor es el objeto
que provee el servicio solicitado. Gráficamente, la dependencia se muestra como una línea
discontinua con una punta de flecha que apunta del cliente al proveedor.
Ejemplo: resolución de una ecuación de segundo grado. Para resolver una ecuación de segundo
grado, se ha de recurrir a la función sqrt de la clase Math, para calcular una raíz cuadrada.

NOTA: La clase Math es una clase “degenerada” que no tiene estado. Es, simplemente, una colección
de funciones de cálculo matemático.

La herencia (generalización y especialización) es la relación entre una superclase y sus subclases.


Objetos de distintas clases pueden tener atributos similares y exhibir comportamientos parecidos (por
ejemplo: animales, mamíferos…)

La noción de clase está


próxima a la de
conjunto: generalización
y especialización
expresan relaciones de
inclusión entre conjuntos

Instancias: Todo coche es un vehículo.


Algunos vehículos son coches.
Propiedades: Un coche tiene todas las propiedades de un vehículo.
Algunas propiedades del coche no las tienen todos los vehículos.
Las clases se organizan en una estructura jerárquica formando una taxonomía. El comportamiento de
una categoría más general es aplicable a una categoría particular. Las subclases heredan
características de las clases de las que se derivan y añaden características específicas que las
diferencian.
6
En el diagrama de clases, los atributos, métodos y relaciones de una clase se muestran en el nivel más
alto de la jerarquía en el que son aplicables.

Existen dos técnicas para crear clases: la herencia simple y la múltiple. Se entiende por herencia
simple cuando una Clase A (clase padre) hereda todos sus métodos y atributos a una Clase B (clase
hija); mientras que, si una Clase 3 (clase hija) toma ciertos métodos y atributos tanto de la Clase 1
(clase padre) como de la Clase 2 (clase padre), entonces se dice que goza de herencia múltiple (más
de una clase padre):

Clase A Clase 1 Clase 2

Clase B
Clase 3

Herencia Simple (C#, Java) Herencia Múltiple (C++)

Los LOO (Lenguajes Orientados a Objetos) modernos como C# y Java no soportan la herencia
múltiple, sólo la simple. Con esto se logran resultados más rápidos en la programación. Sin embargo,
en algunas ocasiones, puede ser necesario contar con una clase originada por dos o más padres;
para estos casos, se utilizan las interfaces. Por ejemplo: la clase Automovil puede heredar atributos y
métodos tanto de la clase Motor como de la clase Frenos, así:

Motor Frenos

Automovil
Una interfaz permite crear a partir de dos o más clase, una sola clase. Con ello, se puede utilizar
herencia múltiple en un LOO, como C#, que no la soporta.
La relación de herencia simple, se especifica en C# con el uso de “:”

public class PizzaPepperoni : PizzaCapas

la línea de código anterior especifica que PizzaPepperoni hereda de la clase abstracta PizzaCapas

public abstract class PizzaCapas : Pizza

la línea de código anterior especifica que la clase abstracta PizzaCapas hereda de la interface Pizza

Una línea de código como la siguiente, NO SERIA VALIDA en C#, debido a que no soporta herencia
múltiple:
public class PizzaPepperoni : Pizza, PizzaCapas

En caso de ser válida, la línea de código anterior especificaría que la clase PizzaPepperoni hereda
tanto de la interface Pizza como de la clase abstracta PizzaCapas

Interfaz
Una interfaz es una colección de operaciones que representan servicios ofrecidos por una clase o
componente. Especifica una especie de contrato que la clase se compromete a respetar.

La clase realiza (o suministra una realización de) una o varias interfaces.

Es un mecanismo que permite a los LOO con herencia lineal o simple a acceder a la semántica
(significado) de los LOO con herencia múltiple, apostando funcionalidad a las clases.

Son como contratos que obligan a las clases a definir métodos funcionales y pueden instanciar (crear
objetos). Las que no cumplen el trato son abstractas y no pueden instanciar objetos.

Por ejemplo, el timón de un barco no se sabe cómo lo hace pero gira el barco. La interfaz es la razón
por la que cuando se gira el timón, el barco también gira. Se generaliza: girar un barco da el
aprendizaje para girar cualquier otro barco.

La interfaz Pizza (de la Guía de Laboratorio 01) impone dos propiedades (atributos):

string Ingredientes
float Precio

Una interfaz es una clase completamente abstracta (una clase sin implementación).

En suma, la interfaz es la que contiene una colección de operaciones y es utilizada para especificar
los servicios de una clase, esta se conecta al componente que la implementa a través de una relación
de realización, y al componente que utiliza sus servicios con una dependencia.

8
Clase Abstracta
No puede instanciar y se usa únicamente para definir subclases (engloba objetos de distintos tipos
para usar polimorfismo):

Figura Clase abstracta:


Figura
-coordX
-coordY

+área()
Las clases Cuadrado y
Circulo, definen area

Cuadrado Circulo
-lado -radio
+área() +área()

Eliminando coordX y coordY, Figura es una interface

Las clases deben implementar todos los métodos definidos en la interfaz.

Es el medio a través del cual se puede obtener el conjunto reutilizable de operaciones de una o varias
clases.

Padre class Padre

Hija class Hoja extends Padre

Una interfaz sólo tiene constantes y métodos abstractos (no definidos), sin código escrito en ellos. La
clase implementa (le define código) a los métodos de la interfaz.

Class Clase implements Pizza //implements define métodos (pone código)

Interface
Pizza Clase

9
Por ejemplo, la clase Automovil posee el método acelerar y la clase Moto, también puede poseer el
mismo método; PERO la forma de acelerar de una moto no es la misma de un automóvil. Entonces,
para poder solucionar este “conflicto” ambas clases pueden ser hijas de una misma clase abstracta
padre, llamada Vehiculo con un método acelerar que puede ser redefinido en cada una de las clases
(polimorfismo):
Vehiculo

+acelerar()

Automovil Moto

+acelerar() +acelerar()

El método se llama igual en ambas clases, pero su definición es diferente (polimorfismo).

Las clases abstractas permiten redefinir los métodos heredados. Es decir, adecuarlos para cada clase

Otro ejemplo, la clase Prestamo posee el método calcularPagos, según el tamaño de la empresa
(grande, pequeña o mediana) a la que se le otorgan los préstamos, dicho cálculo puede variar,
dependiendo del cálculo de intereses, seguros y comisiones u otros factores propios de cada caso:

Prestamo

+calcularPagos()

Grande Mediana Pequeña

+calcularPagos() +calcularPagos() +calcularPagos()

Clase Sellada
No es lo mismo que la clase abstracta. Sólo coinciden en el hecho que ambas no pueden instanciar.
No permite herencia, sealed establece un límite de herencia.

La clase sellada no se puede heredar ni modificar, es como secreta. Debería ser la última clase a
definir porque hasta allí se llegará. Se puede usar pero no se puede generar otra clase.

No se puede hacer uso de ella para crear instancias (otras clases). No permite instanciar.
override extiende el método de la clase base (padre). Modifica la implementación original.

10
Diagrama de Clases (DC)
Representación gráfica de las clases de un sistema y cómo se relacionan entre sí, en ella se
muestran los atributos y métodos de cada una de las clases que lo componen. Su objetivo es mostrar
cómo interactúa el sistema y dar a conocer el funcionamiento del sistema.

VS Community 2015 sólo permite crear DC. Las versiones pagadas, permiten crear todos los
diagramas UML.

Casos de Uso (CU)


Es la interacción típica de un usuario y un sistema de cómputo, también se puede definir como un
fragmento de la funcionalidad de sistema que tiene un resultado importante para el usuario. Se
obtienen entrevistando a los usuarios y analizando las distintas cosas que se desea hacer con el
sistema.

Diagramas de Casos de Uso (DCU)


Son aquellos que sirven para proporcionar y especificar la comunicación y el comportamiento que
tendrá un sistema durante la interacción que tendrá un usuario y/o máquina con el sistema; es decir,
muestra la relación que existe entre los actores y los casos de uso del sistema. Se utilizan para
ilustrar los requerimientos del sistema y las reacciones que tendrá cuando ocurra un proceso o
evento.

Los DC permiten la comunicación entre un conjunto de programadores. Por ejemplo: el equipo de


trabajo para desarrollar la Tarea Ex Aula. Mientras que los DCU propician la comunicación entre
todos los involucrados en el desarrollo del sistema; tanto programadores como usuarios.

Actores
Son los usuarios que interactúan con el sistema, ya sean internos o externos. Pueden ser personas,
dispositivos, hardware u otro sistema que esté interactuando con el sistema. Los actores se
comunican con el sistema a través del envío y recepción de mensajes. Los casos de uso son
realizados por los actores, un caso de uso puede ser realizado por varios actores y así de manera
contraria un actor puede realizar muchos casos de uso.

11

Das könnte Ihnen auch gefallen