Beruflich Dokumente
Kultur Dokumente
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.
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
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.
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)
dirige
Profesor Departamento
1 0..1
3
pertenece a
Profesor Departamento
* 1
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
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.
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 B
Clase 3
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 “:”
la línea de código anterior especifica que PizzaPepperoni hereda de la clase abstracta PizzaCapas
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.
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):
+área()
Las clases Cuadrado y
Circulo, definen area
Cuadrado Circulo
-lado -radio
+área() +área()
Es el medio a través del cual se puede obtener el conjunto reutilizable de operaciones de una o varias
clases.
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.
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()
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()
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.
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