DISEÑO OOP EN JAVA
DIAGRAMA DE CLASES
Y CASOS DE USO
Mg. Richard E. Mendoza G.
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.
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:
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.
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.
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.
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
• 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;
}
• 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;
}
• Bidireccional con multiplicidad *
Tipos de Asociaciones
• Direccional con multiplicidad *
Tipos de Asociaciones
• Con mas de una relación
Tipos de Asociaciones
• Asociación con Recursividad
Tipos de Asociaciones
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
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
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.
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.
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.
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.
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.
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>>.
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>>.
Universidad
-NIT
+Crearuniversidad()
+Modificar()
+Buscar()
Profesor
-Id profesor
+Crear()
+Modificar()
+Eliminar()
Tiene 1..*
Estudiante
-Id estudiante
+Crear()
+Modificar()
+Eliminar()
Asignatura
-Id asignatura
+Crear()
+Modificar()
+Eliminar()
Tiene 1..*
Tiene 1..*
Ejemplo Diagrama de Clases
Ejemplo de Casos de Uso
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
Ejemplo 1
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.
Ejercicio Completo
Clases Atributos Tipo Dato Métodos
Ejercicio Completo
Plantilla Caso de Uso
Diagrama de Casos de Uso
“The task of the software
development team is to engineer
the ilusión of simplicity".
Grady Booch

Semana 4 Diagrama de Clases y Casos de Uso

  • 1.
    DISEÑO OOP ENJAVA DIAGRAMA DE CLASES Y CASOS DE USO Mg. Richard E. Mendoza G.
  • 7.
    Describe la definiciónde 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 enlenguaje 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 diagramade 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 diagramade 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 sirvenpara 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 seponen 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 conmultiplicidad 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 conmultiplicidad 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; }
  • 15.
    • Bidireccional conmultiplicidad * Tipos de Asociaciones
  • 16.
    • Direccional conmultiplicidad * Tipos de Asociaciones
  • 17.
    • Con masde una relación Tipos de Asociaciones
  • 18.
    • Asociación conRecursividad Tipos de Asociaciones
  • 19.
    La Composición oComposició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 puedeser 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 hadicho, 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 esuna 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 Casosde 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 externoal 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 Loscasos 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 Larelació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 Aligual 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>>.
  • 28.
    Universidad -NIT +Crearuniversidad() +Modificar() +Buscar() Profesor -Id profesor +Crear() +Modificar() +Eliminar() Tiene 1..* Estudiante -Idestudiante +Crear() +Modificar() +Eliminar() Asignatura -Id asignatura +Crear() +Modificar() +Eliminar() Tiene 1..* Tiene 1..* Ejemplo Diagrama de Clases
  • 29.
  • 30.
    Una biblioteca tienecopias 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
  • 31.
  • 32.
    Ejercicio Completo Se deseahacer 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.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
    “The task ofthe software development team is to engineer the ilusión of simplicity". Grady Booch