38
Introducción a UML 1 • Significa notaciones, técnicas y métodos para producir varios modelos de un sistema en diferentes niveles de abstracción y granularidad basados en los principios de: – Objetos – Clases de objetos – Encapsulamiento – Herencia – Polimorfismo La orientación a objetos (OO)

Diagrama Clase

Embed Size (px)

Citation preview

Page 1: Diagrama Clase

Introducción a UML 1

• Significa notaciones, técnicas y métodos para producir varios modelos de un sistema en diferentes niveles de abstracción y granularidad basados en losprincipios de:

– Objetos– Clases de objetos– Encapsulamiento– Herencia– Polimorfismo

La orientación a objetos (OO)

Page 2: Diagrama Clase

Introducción a UML 2

(1,3)

(2,2)

(2,1)

(5,2.5)

Vehículo

Punto

Figura

Animal

Page 3: Diagrama Clase

Introducción a UML 3

Característicascolorpesoformaetc.,….

Funcionalidadesencendido del motorlimpia parabrisasfrenaretc.,……

Vehículo

Abstraídos en

Page 4: Diagrama Clase

Diagramas en UML

Introducción a UML 4

El bloque de construcción básico de UML es un “Diagrama”

Page 5: Diagrama Clase

Diagrama de Clase • Diagrama estático que describe la estructura de un sistema

mostrando sus clases, atributos y las relaciones entre ellas. • Se utilizan en el proceso de análisis y diseño de los sistemas,

donde se crea el diseño conceptual de la información que se manejará en el sistema, los componentes que se encargaran del funcionamiento y la relación entre uno y otro.

• Describe gráficamente las especificaciones de las clases de software y de las interfaces (por ejemplo, las de Java) en una aplicación.

• Contiene la siguiente información:– Clases, asociaciones y atributos.– Interfaces, con sus operaciones y constantes.– Métodos.– Información sobre los tipos de los atributos.– Navegabilidad.– Dependencias.

Introducción a UML 5

Page 6: Diagrama Clase

Diagrama de Clase

Para elaborar un diagrama de clases orientado al diseño:

• Identifique todas las clases que participan en la solución del software.

• Dibújelas en un diagrama de clases.• Identifique los atributos provenientes de los conceptos asociados

del modelo conceptual.• Agregue los nombres de los métodos.• Incorpore la información sobre los tipos a los atributos y a los

métodos.• Agregue las asociaciones necesarias para dar soporte a la

visibilidad requerida de los atributos.• Agregue flechas de navegabilidad a las asociaciones para indicar

la dirección de la visibilidad de los atributos.

Introducción a UML 6

Page 7: Diagrama Clase

Diagrama de Clases

• Clase: Descripción de un conjunto de objetos que comparten los mismos atributos, operaciones y relaciones.

• Se representa mediante un rectángulo con hasta tres compartimentos:– nombre de la case– lista de atributos– lista de métodos

Introducción a UML 7

Page 8: Diagrama Clase

Introducción a UML 8

Ejemplo de Clase

Objetos bicicletas

Abstraídos en

Clase Bicicleta

Atributos

Tamaño de frameTamaño de llantaMaterial ...

Métodos

CambioMoverFrenar...

Page 9: Diagrama Clase

Diagrama de Clase: Atributos• Atributo: valores que corresponden a un objeto, como color,

material, cantidad, ubicación. Información detallada del objeto. Suponiendo que el objeto es una persona, sus propiedades serían: nombre, edad, sexo, etc.

• Tipo: Puede llegar a depender del lenguaje de programación a utilizar (public, protected, private).

• Valor inicial: valor que poseerá el atributo al crear un objeto.• Visibilidad: Está relacionado con el encapsulamiento.• Multiplicidad: Determinar si un atributo debe estar o no, y si posee

un único valor o una lista de valores.– 1-> El atributo debe tener un único valor.– 0..1-> El atributo puede o no tener un valor.– 0..* -> El atributo puede tener varios valores o ninguno.– 1..*-> El atributo puede tener varios valores, pero debe tener al

menos uno– * -> El atributo puede tener varios valores.– M..N ->El atributo puede tener entre M y N valores.

Introducción a UML 9

Page 10: Diagrama Clase

Diagrama de Clase: Atributos• Visibilidad• El encapsulamiento presenta las siguientes ventajas básicas:

– Se protegen los datos de accesos indebidos– Favorece la modularidad y el mantenimiento

• Los atributos de una clase no deberían ser manipulables directamente por el resto de objetos.

• Niveles de encapsulamiento:• (-) Privado: Es el más fuerte. Esta parte es totalmente invisible

desde fuera de la clase (excepto para clases friends en terminología C++).

• (~) Package: Sólo es visible dentro del mismo package.• (#) Los atributos/métodos protegidos están visibles para las clases

friends y para las clases derivadas de la original.• (+) Los atributos/métodos públicos son visibles a otras clases.

Introducción a UML 10

Page 11: Diagrama Clase

Diagrama de Clase: Métodos

• Un método (operación) es la implementación de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre un comportamiento. Una operación es una abstracción de algo que se puede hacer a un objeto y que es compartido por todos los objetos de la clase.

• Para cada método debe especificarse:

– Tipo devuelto: Puede llegar a depender del lenguaje de programación a utilizar.

– Parámetros: Especificación del tipo de datos y la información que determina el funcionamiento de la clase.

– Visibilidad: Está relacionada con el encapsulamiento (-, #, +).

Introducción a UML 11

Page 12: Diagrama Clase

Introducción a UML 12

Ejemplo de Clase

UML

Java

Alumno

-nombre:: String -domicilio : String

+Alumno (n:String, d:String)+setNombre(n:String):void+getNombre():String

public class Alumno { private String nombre; private String domicilio;

public Alumno(String n, String d) {} public void setNombre (String n) {} public String getNombre() {}}

Page 13: Diagrama Clase

Introducción a UML 13

Instancia

Una instancia es un objeto creado a partir de una clase.

La clase describe la estructura de la instancia (información y comportamiento), mientras que el estado actual de la instancia es definido por las operaciones ejecutadas.

Page 14: Diagrama Clase

Introducción a UML 14

Instancia

Alumno alumno3 = new Alumno(“Jose Lopez”, “Centenario”); alumno3: Alumno

nombre = Jose Lopezdomicilio = Centenario

alumno2: Alumno

nombre = Abel Garcíadomicilio = Los ceibos

alumno1: Alumno

nombre = Juan Perezdomicilio = Las Peñas

Alumno

-nombre:: String -domicilio : String

+Alumno (n:String, d:String)+setNombre(n:String):void+getNombre():String

Creación de instancias u objetos a partir de la clase Alumno:

Alumno alumno1 = new Alumno(“Juan Perez”, “Las Peñas”);

Alumno alumno2 = new Alumno(“Abel Garcia”, “Los ceibos”);

Page 15: Diagrama Clase

Introducción a UML 15

Constructor

Método especial con el mismo nombre de la clase.

Es llamado automáticamente cuando un objeto de una clase es creado.

Se encarga inicializar las variables del objeto.Puede tomar argumentos pero no pueden

retornar un valor.Se puede tener más de un constructor en una

clase.

Page 16: Diagrama Clase

Introducción a UML 16

Permite instanciar objetos de la clase

Alumno

-nombre:: String -domicilio : String

+Alumno (n:String, d:String)+setNombre(n:String):void+getNombre():String

Page 17: Diagrama Clase

Introducción a UML 17

Ejemplo de Constructor

public class Count { private int count; public Count( ) { count = 0; } public Count (int number) { count = number; }}Count contador = new Count( );

Page 18: Diagrama Clase

Diagrama de Clase: Relaciones entre Clases• En un diagrama de clases los vínculos entre clases se representan

por líneas, dependiendo del tipo de relación.• Relaciones entre clases:

– Asociación: Es una relación estructural que describe una conexión entre objetos. La multiplicidad de una asociación determina cuántos objetos de cada tipo intervienen en la relación.

– Agregación (“es parte de …”): Es una asociación especial, una relación del tipo “todo/parte” dentro de la cual una o más clases son partes de un conjunto.

– Generalización (herencia): “es un caso particular de …”.

Introducción a UML 18

Page 19: Diagrama Clase

Introducción a UML 19

ES UN: Herencia

Es un mecanismo para compartir atributos y métodos entre clases.

Por la herencia se forman jerarquías de clases (superclases y subclases).

Las subclases heredan los atributos y métodos de las superclases.

Relación “es un”.Permite la reutilización de código. Superclase

Subclase

Page 20: Diagrama Clase

Introducción a UML 20

Mamífero

Perro Gato

PoodlePastorAlemán

# colorOjo:String

+ getcolorOjo():String

# frecLadrido:int+ ladrar():void

# frecMaullido:int+maullar():void

+ esAleman():void

+ esFrances():void

Ejemplo

Page 21: Diagrama Clase

Introducción a UML 21

Page 22: Diagrama Clase

Introducción a UML 22

Herencia

AutomaxFuelmaxNroDePasajerosmodelovelocidad

acelerar()desacelerar()doblarAIzq()doblarADcha()

Avion

maxAltitudmaxFuelmaxNroDePasajerosvelocidadnroDeMotores

acelerar()desacelerar()descender()ascender()

ANTES DESPUES

VehiculomaxFuelmaxNroDePasajerosvelocidad

acelerar()desacelerar()

Avion

maxAltitudnroDeMotores

descender()ascender()

Auto

modelo

doblarAIzq()doblarADcha()

superclase

subclases

Page 23: Diagrama Clase

Introducción a UML 23

Herencia

Vehiculo

Auto Avion

public class Vehiculo { }

public class Auto extends Vehiculo{

}

public class Avion extends Vehiculo{

}

JavaUML

Page 24: Diagrama Clase

Ejemplo: Sistema de Alquiler de Vehículos• Se pretende desarrollar un sistema de gestión para una empresa de

alquiler de vehículos cuyas principales funcionalidades y características son las que a continuación se describen:

• La empresa se dedica al alquiler vehículos. Dentro de los automóviles, la empresa distingue entre automóviles de lujo y básicos.

• Un cliente puede realizar reservas de automóviles desde Internet. Para ello accederá a la opción “Realizar Reservas” y el sistema le pedirá su login y password. Si no ha sido cliente anteriormente el usuario deberá acceder a la opción “Registrarse”, en la que el sistema le solicitará sus datos personales. Una vez finalizado el registro podrá realizar la reserva. Para ello el sistema le preguntará si desea un automóvil de lujo o básico, y una vez que el cliente le ha indicado lo que desea, el sistema le pedirá las fechas inicial y final para las que desea el alquiler, así como las ciudades de recogida y devolución del vehículo. Después le mostrará la relación de automóviles (marca, modelo, motor y precio diario) disponibles en esas fechas, entre las que el cliente escogerá uno. La reserva queda realizada e identificada con un código del que el cliente debe tomar nota. El cliente podrá, posteriormente, acceder al sistema para consultar o cancelar su reserva, previa identificación en el sistema.

Introducción a UML 24

Page 25: Diagrama Clase

Ejemplo: Sistema de Alquiler de Vehículos

• Para recoger el vehículo el cliente debe presentarse en las oficinas de la empresa para firmar el contrato de alquiler del vehículo. Un empleado será el encargado de registrar ese contrato en el sistema, y se considera imprescindible que quede registrado qué empleado ha realizado cada contrato. El empleado accederá a la parte de “Contratos” y, si existe reserva previa (no siempre tiene por qué haberla) introducirá el código de reserva que debe de facilitarle el cliente.

• El sistema comprueba la existencia de la reserva y genera un contrato tipo para el tipo de vehículo reservado.

• El gerente de la empresa accede al sistema para realizar diversas consultas e informes sobre cuestiones como alquileres realizados, vehículos disponibles, contratos firmados por empleados, etc. Por último existe un administrador, que es el encargado de registrar y mantener la información de los usuarios y de los vehículos de la empresa.

Introducción a UML 25

Page 26: Diagrama Clase

Diagrama de Clases: Sistema de Alquiler de Vehículos

Vehiculo

marca : stringmodelo : stringmotor : stringprecio_float

Reserva

fecha_inicio : fechafecha_fin : fechaciudad_entrega : stringciudad_devolucion : string

1..*

1..1

1..*

1..1

Cliente_

nombre : stringdirección : stringtelefono : stringcedula : string

1..*1..1 1..*1..1

Realiza

Tiene

Empleado_

nombre : stringdireccion : stringtelefono : stringcedula : string

Contrato

id_contrato : stringtipo_contrato1..11..* 1..11..*

Tiene

1..1

1..1

Registra

1..1

1..1

DIAGRAMA DE CLASES: SISTEMA DE ALQUILER DE VEHICULOS

Introducción a UML 26

Page 27: Diagrama Clase

Introducción a UML 27

Diseñe un sistema para calcular el área de diversas figuras geométricas utilizando polimorfismo y guiado por el siguiente diagrama en UML.

Page 28: Diagrama Clase

Introducción a UML 28

Una empresa desea un sistema capaz de calcular el salario semanal de sus empleados de acuerdo a la cantidad de horas trabajadas, el sueldo por hora y tomando en cuenta los siguientes criterios:• Si las horas trabajadas son más de 40, entonces el excedente se considera hora extra.• Si las horas trabajadas están entre el rango de 41 a 45, entonces cada hora extra se paga doble.• Si las horas trabajadas son más de 45, entonces cada hora extra se paga triple.

Page 29: Diagrama Clase

Introducción a UML 29

Defina una clase llamada Circunferencia que tenga como atributo el radio de tipo real y los siguientes métodos: Calcular el área. Calcular el perímetro. Propiedad para modificar el radio Propiedad para consultar el valor del radio

Page 30: Diagrama Clase

Introducción a UML 30

Defina una clase denominada Rectángulo que tenga las siguientes especificaciones: Atributos: Largo Ancho Métodos: CalcularArea() CalcularPerimetro()

Page 31: Diagrama Clase

Introducción a UML 31

Define la clase Fecha, de acuerdo con las siguientes especificaciones:Atributos: Día, Mes y Año.Constructores: Que inicialice los atributos con la fecha del sistema Que reciba como parámetro los valores para inicializar la fechaMétodos públicos: Que permita modificar el valor de la fecha Que muestre en la pantalla la fecha usando el formato dia / mes / año Que muestre en la pantalla la fecha poniendo el mes con palabras Que permita verificar si una fecha es válida; este método debe ser utilizado por el constructor y el método que modifica el valor de la fecha, si el usuario trata de inicializar con una fecha inválida se inicializará con el valor fijo que el programador haya definido.

Page 32: Diagrama Clase

Introducción a UML 32

Definir una clase para manejar los artículos de un supermercado cuyos atributos son: Clave numérica, Descripción, Precio y Cantidad en existencia

Y defina los siguientes métodos: Constructor con parámetros. Método para modificar los valores de los atributos y que reciba los 4 parámetros. Una propiedad para modificar cada atributo. Una propiedad para consultar cada atributo.

Page 33: Diagrama Clase

Introducción a UML 33

Diseñar una clase para controlar los datos de los vuelos en una aerolínea con los siguientes datos: Número de vuelo Fecha Hora de despegue Duración del vuelo (minutos)

Y con la que pueda realizar las siguientes operaciones: Fijar tiempo de demora en minutos Obtener la fecha y hora de aterrizaje

Page 34: Diagrama Clase

Introducción a UML 34

Un equipo de futbol debe controlar las estadísticas de sus jugadores y para ello requiere un sistema computacional orientado a objetos con relaciones de herencia. Los datos de cada jugador son el número de uniforme, nombre y su posición (portero, defensa, medio y delantero). Además, el equipo desea almacenar la cantidad de goles anotados por cada jugador (excepto el portero) y los minutos jugados. Defina las clases con sus relaciones de herencia de la manera más apropiada para modelar este sistema e impleméntelas

Page 35: Diagrama Clase

Introducción a UML 35

Un equipo de beisbol se compone de tres tipos de jugadores: pitchers, jugadores de posición y bateadores designados. Los datos de cada jugador son: el número de uniforme, nombre y su posición. En esta liga, los pitchers lanzan, participan a la defensiva pero no batean. Los bateadores designados no lanzan y no participan a la defensiva (sólo batean). Los jugadores de posición no lanzan, pero participan a la defensiva y batean.Modele un sistema orientado a objetos con clases heredadas con el que controle los ponches recetados por los pitchers, los hits bateados por los otros jugadores y los errores cometidos por quienes participan a la defensiva.

Page 36: Diagrama Clase

Introducción a UML 36

Un banco requiere controlar las cuentas de sus clientes y para ello las clasifica en dos: Cheques y Ahorros. Todas las cuentas del banco tienen los siguientes datos: Número de cuenta (entero). Nombre del cliente (cadena). Saldo (numérico real).Además se realizan las siguientes operaciones con ellas: Consultar datos: A través de sus propiedades. Depositar: Incrementa el saldo con la cantidad de dinero que se deposita. Retirar: Antes de hacer el retiro, se debe verificar la suficiencia de saldo y en caso de aprobarlo, se disminuye el saldo.Las cuentas de ahorros presentan las siguientes características: Fecha de vencimiento. Porcentaje de interés mensual. Método para depositar los intereses el primer día de cada mes. Solamente se puede retirar dinero el día de la fecha de vencimiento.Las cuentas de cheques presentan las siguientes características: Comisión por uso de chequera. Comisión por emisión de cheques con saldo insuficiente, la cual se descuenta directamente del saldo.Elabore el diagrama de clases en UML e implemente dicho sistema con un proyecto.

Page 37: Diagrama Clase

Introducción a UML 37

En un taller mecánico los clientes llevan sus autos a reparación. El taller elabora una orden de trabajo con los datos del cliente como su nombre, dirección y teléfono de contacto, e incluye también los datos del auto que será reparado: Marca, modelo, color, número de las placas. La orden de trabajo tiene un identificador numérico único.

Page 38: Diagrama Clase

Introducción a UML 38

Para una empresa es importante controlar los datos de las personas relacionadas a ella, como lo son sus clientes y sus empleados. Los datos de cada persona son el nombre y su domicilio; sin embargo, también es importante administrar el límite de crédito de sus clientes y el salario de sus empleados. Modele este sistema diseñando el diagrama de clases en UML y estableciendo las relaciones de herencia pertinentes. Agregue un constructor a cada clase para inicializar sus datos e invoque el constructor de la clase base desde el constructor de cada clase derivada. Instancie cada una de las clases y asígnele sus respectivos datos mediante sus propiedades. Posteriormente despliegue los datos suministrados.