Diseño OOP en Java: Diagrama de clases y casos de uso para una agencia de alquiler de autos
1. DISEÑO OOP EN JAVA
DIAGRAMA DE CLASES
Y CASOS DE USO
Mg. Richard E. Mendoza G.
2.
3.
4.
5.
6.
7. Describe la definición de cada uno de los posibles objetos
pertenecientes al sistema. Usamos el diagrama de clases para
modelar la estructura estática de un sistema. Muestra las clases del
sistema, sus atributos, operaciones (o métodos), y las relaciones
entre los objetos
DIAGRAMA DE CLASES
Clases: Escriben un conjunto de objetos con
propiedades y comportamientos comunes.
Relaciones: Enlaces entre los distintos
elementos de los diagramas.
Interfaces: Conjunto de operaciones de una
clase o paquete visibles desde otras clases o
paquetes.
8. Una clase en lenguaje de programación Java se puede entender
como un prototipo que define las variables y los métodos comunes
a un cierto tipo de instancias.
Clase
Nombre con
que se
identifica la
clase dentro
del sistema
NOMBRE
ATRIBUTOS
Son el conjunto
de atributos
que describen
la clase, estos
dependen del
nivel de
visibilidad
establecido
OPERACIONES
Representan
las
operaciones
que mas
tarde se
convierten en
métodos y se
representan
una a la
vez, una por
línea
Operaciones: Visibilidad+nombre+parametros:tipo devuelto.
//EN JAVA
class Persona{}
#EN PYTHON
class Persona:
9. En un diagrama de clases, un atributo tiene al menos un nombre.
El tipo de atributo se puede especificar después del nombre
usando: Tipo.
Atributos
//EN JAVA
class Persona{
String nombre = "";
}}
#EN PYTHON
class Persona:
nombre=""
Tipo de datos: Debemos especificar el
conjunto de posibles valores que puede
tomar cada atributo. UML nos proporciona
los siguientes tipos de datos primitivos:
Integer, String, Boolean y UnlimitedNatural.
10. En un diagrama de clases, un atributo tiene al menos un nombre y
tipo de atributo. El nombre de la operación va seguido de una lista
de parámetros entre paréntesis.
Operaciones
//EN JAVA
class Persona{
String nombre = "";
void caminar() {
System.out.println("Caminar
");
}}
#EN PYTHON
class Persona:
nombre=""
def caminar():
print("caminar")
Firma de los métodos: Los métodos pueden
recibir parámetros y devolver un resultado. .
Valores predeterminados: Es posible dar
valores predeterminados a los atributos y a
los parámetros de los métodos.
Atributos y métodos de clases: Se
representan igual que los atributos de los
objetos, pero subrayados.
11. Las asociaciones sirven para representar los vínculos que existen
entre objetos. La asociación tiene un nombre, y se representa
mediante una línea que une las dos clases vinculadas.
Asociaciones entre Objetos
//EN JAVA
class Persona{
String nombre = "";
void caminar() {
System.out.println("Caminar
");
}}
#EN PYTHON
class Persona:
nombre=""
def caminar():
print("caminar")
Importante: Para señalar el
sentido de lectura del nombre de
la asociación con respecto al
nombre de las clases, éste puede
precederse del signo < o seguirse
del signo >.
Los extremos de una asociación
también pueden recibir un
nombre, que representará la
función que desempeñan en la
asociación los objetos.
En las funciones podemos
especificar su tipo de
encapsulamiento.
12. Las cardinalidades se ponen en los extremos de la asociación. La
cardinalidad situada a la derecha indica a cuántos objetos de la
clase de la derecha está vinculado un objeto de la clase de la
izquierda.
Cardinalidad de la Asociación
Importante: Las cardinalidades las
podemos representar mediante
un valor o con un intervalo,
especificando la cardinalidad
mínima y la máxima. Tenemos las
siguientes opciones, con su
especificación:
0..1 Cero o una instancia
1 Una instancia
* De cero a varias instancias
1..* De una a varias instancias
M..N Entre M y N instancias
N N instancias
13. • Bidireccional con multiplicidad 0..1 o 1
Aunque las asociaciones suelen ser bidireccionales (se pueden
recorrer en ambos sentidos.
Tipos de Asociaciones
public class Cliente
{
private String nombre;
public CuentaCliente cuenta;
}
public class CuentaCliente
{
private double saldo;
public Cliente duenio;
}
14. • Direccional con multiplicidad 0..1 o 1
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:
Tipos de Asociaciones
public class Cliente
{
private String nombre;
public Clave clave;
}
public class Clave
{
private int codigo;
}
19. La Composición o Composición fuerte es una relación entre clases
similar a la agregación, pero en la que las clases que componen a la
principal no tienen sentido sin dicha clase principal.
Composición
Se representa mediante un rectángulo de color negro
20. Agregación
Una clase puede ser puede estar relacionada por un conjunto de
clases que la representen y, sin las cuales, no tenga sentido. A esta
relación se le llama Agregación o Composición débil, y se
representa mediante un rombo blanco
21. Herencia
Como se ha dicho, las instancias de una clase son también
instancias de su superclase. Por consiguiente, heredan los
atributos y métodos definidos en la superclase, además de los
atributos y métodos introducidos en la clase.
22. Interfaz
Una interfaz es una clase abstracta, es decir, una clase que no tiene
atributos, y sus métodos no contienen ninguna implementación.
Las interfaces se utilizan
para especificar los
métodos de una clase. Sólo
contiene las cabeceras de
éstos, no su
implementación.
23. Diagrama de Casos de Uso
El diagrama de casos de uso muestra
los casos de uso representados en
forma de elipses y a los actores en
forma de personajes. También indica
las relaciones de comunicación que
los vincula.
El sistema que responde al caso de
uso puede representarse mediante
un rectángulo en cuyo interior
aparece el caso.
24. Actor
Un usuario externo al sistema puede
desempeñar diferentes funciones en
relación con el sistema. Una pareja
(usuario, función) constituye un
actor específico designado en UML
únicamente por el nombre de la
función.
Se diferencian dos categorías de
actores:
• Los actores primarios son los que
inician el caso de uso.
• Los actores secundarios son los
que participan en el caso de uso.
25. Casos de Uso
Los casos de uso describen en forma de
acciones y reacciones el
comportamiento del sistema, estudiado
desde el punto de vista del usuario.
Definen los límites del sistema y sus
relaciones con el entorno.
Los casos de uso explicitan los requisitos
funcionales del sistema relativos a uno
de los objetivos del usuario. Éstos se
denominan también, de manera más
precisa, casos de uso con objetivo
usuario.
26. Relación de Inclusión
La relación de inclusión sirve para
enriquecer un caso de uso con otro. El
caso de uso incluido existe únicamente
con ese propósito, ya que no responde a
un objetivo de un actor primario. Estos
casos de uso son subfunciones.
La inclusión sirve para compartir una
funcionalidad común entre varios casos
de uso.
En el diagrama de casos de uso estas
relaciones se representan mediante una
flecha discontinua acompañada del
estereotipo <<include>>.
27. Relación de Extensión
Al igual que la relación de inclusión, la
relación de extensión enriquece un caso
de uso mediante un caso de uso
subfunción. El enriquecimiento es
análogo al de la relación de inclusión, no
obstante, es opcional. Como ocurre con
la inclusión, la extensión sirve para
estructurar un caso de uso o para
compartir un caso de uso de subfunción.
En el diagrama de casos de uso, esta
relación se representa mediante una
flecha discontinua acompañada del
estereotipo <<extend>>.
30. Una biblioteca tiene copias de libros. Estos últimos se caracterizan por su
nombre, tipo (ingeniería, literatura, informática, historia ...), editorial, año y
autor.
• Los autores se caracterizan por su nombre, nacionalidad y fecha de
nacimiento.
• Cada copia tiene un identificador, y puede estar en la biblioteca,
prestada, con retraso o en reparación.
• Los lectores pueden tener un máximo de 3 libros en préstamo.
• Cada libro se presta un máximo de 30 días, y por cada día de retraso, se
impone una “multa” de dos días sin posibilidad de coger un nuevo libro.
Realiza un diagrama de clases y añade los métodos necesarios para realizar
el préstamo y devolución de libros.
Realiza un diagrama de casos de usos.
Ejercicio Completo
32. Ejercicio Completo
Se desea hacer un sistema para una agencia de alquiler de autos. Para determinar los requerimientos
que se entrevistó al dueño de la agencia, al empleado de atención al público y al encargado de autos.
El dueño de la agencia que fue quien impulso el proyecto, está especialmente interesado en tener
control sobre los gastos de la empresa. Le interesa poder obtener del sistema, información del tipo
en un intervalo de tiempo y todas las reparaciones realizadas por un monto superior al que el
imponga. El Empleado de Atención al Público nos contó que por cada nuevo alquiler actualiza la ficha
registro del cliente En caso de tratarse de un nuevo cliente abre una nueva ficha con los siguientes
datos: apellido y nombre, dirección personal, localidad, provincia, tipo y número de documento,
profesión y número de licencia de conductor De acuerdo con las restricciones que impone el cliente
busca si existe un vehículo disponible Una vez que el cliente seleccionó un coche actualizará la ficha
con el nuevo alquiler fecha del alquiler, cantidad de días por los que se alquila, importe del alquiler y
kilometraje del vehículo al momento de ser alquilado Debe ser cuidadoso en no autorizar alquileres a
clientes que no devolvieron en término o en buen estado el vehículo que se les presto.
El Encargado de Autos es el único autorizado a actualizar la ficha de registro de cada auto Cada
vehículo tiene su propia información: código, descripción, marca, modelo y estado (alquilado,
disponible para alquilar o en reparación) Por cada vehículo lleva nota de todas las reparaciones que
recibió. De cada reparación mantiene la fecha, motivo costo de la reparación y cantidad de días que
el auto no estuvo disponible También atiende a los clientes que traen los vehículos. Controla que el
mismo se entregue en buen estado y en buen término, si no es así le informa al encargado de
atención al público para que no autorice nuevos alquileres a ese cliente.