Ejercicios UML pepe

download Ejercicios UML pepe

of 36

description

ejercicios uml

Transcript of Ejercicios UML pepe

  • Ejercicios UML

    Juan de LaraG 46Grupo 46

    Curso 2008/09

    1

  • IndiceIndice

    zDiagramas de clases y OCLOCL.

    zDiagramas de Transicin de EstadoszDiagramas de Transicin de EstadoszDiagramas de Interaccin.

    2

  • EjercicioEjercicioz Representa mediante un diagrama de clases la siguientez Representa mediante un diagrama de clases la siguiente

    especificacin:{ Una aplicacin necesita almacenar informacin sobre

    empresas, sus empleados y sus clientes.{ Ambos se caracterizan por su nombre y edad.{ L l d ti ld b t l l d{ Los empleados tienen un sueldo bruto, los empleados que

    son directivos tienen una categora, as como un conjunto deempleados subordinados.p

    { De los clientes adems se necesita conocer su telfono decontacto.

    { L li i it t l d t d l d{ La aplicacin necesita mostrar los datos de empleados yclientes.

    3

  • EjercicioEjercicioPersonaPersona

    + mostrar()

    - nombre- edad

    + mostrar()

    - nombre- edad

    t ()

    - sueldo_bruto - nombre_empresa- telefono_de_contacto

    Empleado Clientesubordinados

    t ()

    - sueldo_bruto - telefono_de_contacto

    Empleado Clientesubordinados

    0..*

    +mostrar()

    + mostrar ()+ calcular_salario_neto()

    empleados clientes+mostrar()

    + mostrar ()+ calcular_salario_neto()

    1..*0..*

    - categoria

    DirectivoEmpresa

    b

    empleados

    - categoria

    DirectivoEmpresa

    b1

    1..*

    0..*

    4+ mostrar ()- nombre

    + mostrar ()- nombre

    Jose Fco

    Jose Fco

    Jose Fco

    Jose Fco

    Jose Fco

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros en prstamoprstamo.

    z Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos das sin pposibilidad de coger un nuevo libro.

    z Realiza un diagrama de clases y aade los mtodos necesarios para realizar el prestamo y devolucin denecesarios para realizar el prestamo y devolucin de libros.

  • LibroCopia

    - id : Identifier- estado: estadoCopia

    Libro- titulo : string- tipo: tipoLibro- editorial: string

    i t

    libro11..*

    ejemplar

    Prestamo

    0..3 prestamos - anyo: intobras1..*

    - inicio: Date- fin: Date

    0..1 lector Autorb t i

    autor1

    Lector- nSocio : Identifier- nombre: string

    - nombre: string- nacionalidad: string- fechaNacimiento: Date

    - telefono: string- direccion: string

    tipoLibro

    novelateatro

    i

    + devolver(id: Identifier, fechaAct: Date){precondition: prestamos.notEmpty()}

    1

    estadoCopia

    poesiaensayo

    Multa

    {precondition: prestamos.notEmpty()}+ prestar(id: Identifier, fechaAct: Date){precondition: multa==0}- multar(dias : int)

    0..1multa

    prestadoretrasobibliotecareparacion

    - fInicio: Date- fFin: Date

  • EjercicioEjercicioz Especificar un diagrama de clases que describa redes

    de ordenadores.z Los elementos que se pueden incluir en la red son:

    {S id PC I{Servidor, PC, Impresora.{Hub, Cable de red.

    z Los PCs pueden conectarse con un nico Hub losz Los PCs pueden conectarse con un nico Hub, losservidores con uno o varios.

    z Los Servidores y PCs pueden generar mensajes, conuna cierta longitud.

    z Los Hubs tienen un nmero de puertos, algunos de loscuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs.Tienen cierta probabilidad de perder mensajes.

    z Las impresoras pueden averiarse, con cierta7

    Las impresoras pueden averiarse, con ciertaprobabilidad, durante cierto tiempo.

  • Ejercicio Posible SolucinEjercicio. Posible Solucin.

    8Los PCs pueden conectarse con un nico Hub, los servidores con uno o variosPodemos modelarlo como una restriccin OCL, o bien aadir asociaciones desde Servidor y PC

  • OCLOCL

    Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios

    Context PCInv: cable equipo >size() 1Inv: cable_equipo->size() = 1Context ServidorInv: cable equipo->size() >= 1_ q pUn Hub no puede conectarse consigo mismo a travs de un puerto

    Conte t C bl H bContext Cable_HubsInv: Puerto_Hub.hub->asSet()->size() = 2

    9

  • EjercicioExamen Junio 2008.

    Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin debermanejar clientes (se guarda su nombre, direccin, telfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar peridicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.

    Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y(por restricciones en la distribucin) contienen un mximo de 20 unidades del(por restricciones en la distribucin) contienen un mximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos oms pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Adems slo es posiblecompuesto se paguen con cuentas del mismo cliente. Adems, slo es posiblerealizar peticiones de productos en stock.

    Existe una clase (de la cual debe haber una nica instancia en la aplicacin)responsable del cobro, orden de distribucin y confirmacin de los pedidos. Elp y pcobro de los pedidos se hace una vez al da, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el

    10

    p p p , p ) qpedido est listo para servirse, se ordena su distribucin, y una vez entregado,pasa a estar confirmado.

    Se pide un diagrama de clases de diseo. Aade las restricciones OCL necesarias.

  • Solucin

    11

  • Restricciones OCL:Restricciones OCL:

    Context Cliente::realizar pedido:Context Cliente::realizar_pedido:pre: self.cuentas->exists(c | c.disponible > 0)Context Pedido Compuesto:in self pedidos simples >c enta >cliente >asSet() >si e() 1inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1Context Pedido:inv: self.t_productos.num->sum() =num

    Context Cliente::rechazar_pedido (p:Pedido):pre: self.cuentas.disponible->sum()

  • IndiceIndice

    zDiagramas de clases

    zDiagramas de Transicin dezDiagramas de Transicin de EstadosEstados

    zDiagramas de Interaccin.

    13

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros enz Los lectores pueden tener un mximo de 3 libros en prstamo.

    z Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.

    z Realiza el diagrama de estados de la clase copiaz Realiza el diagrama de estados de la clase copia .

  • SolucionSolucion

    enCon

    Retraso

    ConRetraso yreser ado

    devolver()reservar(id) /usrRes = iden

    reparacion

    reparar()reparado()

    Retraso

    [getDate()>fp+30]

    reservado

    devolver() [getDate()>fp+30]

    enbiblioteca prestado

    prestar(id,fecha)/fp=fecha reservado

    reservar(id) /usrRes = id

    devolver()devolver()prestar(id, fecha)

    [usrRes==id]/fp=fecha

    t (2 d ) enreserva

    tm(2 days)

  • Solucion: Estados JerrquicosSolucion: Estados Jerrquicos

    enCon

    Retraso

    ConRetraso yreser ado

    reservar(id) /usrRes = iden

    reparacion

    reparar()reparado()

    Retraso

    [getDate()>fp+30]

    reservado

    [getDate()>fp+30]

    usrRes = id

    enbiblioteca prestado

    prestar(id,fecha)/fp=fecha reservado

    reservar(id) /usrRes = id

    devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en

    reservafp=fechatm(2 days)

    16

  • Mquinas de EstadosqEstado Histrico. Ejercicio.

    zModelar el comportamiento de una cadena de msica. Esta puede estar pencendida (ON) o apagada (Standby). La cadena tiene reproductor de CD Radio ycadena tiene reproductor de CD, Radio y Cinta. Se cambia de uno a otro con el botn mode Cuando se enciende labotn mode . Cuando se enciende la cadena se recuerda el ltimo estado en el que estuvo.

    17

  • Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin

    On

    Standby

    On

    CD modemodepower

    H

    Radio Tapemode

    power H

    mode

    M d l l i i t i t d hi t iModelar el mismo sistema sin usar estado histrico.

    18

  • Mquinas de EstadosqEstado Histrico. Ejercicio. Solucin (ii)

    Standby Onpower

    CD modemode

    power

    powerlastCD

    power

    Radio Tapemode

    lastRadiopower

    power

    powerlastTape power

    power

    19

  • EjercicioExamen Junio 2008.

    Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin debermanejar clientes (se guarda su nombre, direccin, telfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar peridicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.

    Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y(por restricciones en la distribucin) contienen un mximo de 20 unidades del(por restricciones en la distribucin) contienen un mximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos oms pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Adems slo es posiblecompuesto se paguen con cuentas del mismo cliente. Adems, slo es posiblerealizar peticiones de productos en stock.

    Existe una clase (de la cual debe haber una nica instancia en la aplicacin)responsable del cobro, orden de distribucin y confirmacin de los pedidos. Elp y pcobro de los pedidos se hace una vez al da, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el

    20

    p p p , p ) qpedido est listo para servirse, se ordena su distribucin, y una vez entregado,pasa a estar confirmado.

    Se pide un diagrama de transicin de estados para la clase Pedido

  • SolucinSolucin

    21

  • EjercicioEjercicioz M d l l t i t ti d l j d lz Modelar el comportamiento reactivo de un reloj de pulsera.z El valor del tiempo se debe actualizar cada segundo, incluso cuando no se

    muestra (p.ej. crono encendido).z El botn de la parte superior derecha enciende la luz que se mantienez El botn de la parte superior derecha enciende la luz, que se mantiene

    encendida tanto como el botn est apretado, una vez que se suelta, la luzest encendida durante 2 segundos ms y se apaga.

    z El botn superior izquierdo alterna entre el modo de crono y de reloj. Elsistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formatoHH:MM:SS.

    z En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC(CC son centsimas de segundo). Inicialmente el crono empieza en

    ( g ) p00:00:00. El botn inferior derecho se usa para activar el crono. ste seactualiza en incrementos de 1/100 segundos. Presionando el botn inferiorderecho pausa o continua el crono (si el reloj est en modo crono).Pulsando el botn inferior izquierdo resetea el crono a 00:00:00 si el relojq jest en modo crono y el crono ha sido pausado antes. El crono continuacorriendo (si est corriendo) o mantiene su valor (si est en pausa) inclusocuando el reloj est en un modo de display distinto (por ejemplo, cuando semuestra la hora).

    22

    muestra la hora).

  • Ejercicioz Interface provisto por el controlador:

    Ejercicio

    { getTime() : Devuelve la hora actual.{ refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. El

    visor no necesita limpiarse antes de llamar a esta funcin. Por ejemplo, si se estvisualizando el crono, se borrar antes de pintar la hora.

    { refreshChronoDisplay() : ver refreshTimeDisplay().{ resetChrono() : Resetea el crono interno a 00:00:00.{ increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se

    modificarn adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarn adecuademente, (por ejemplo, si se llama a increaseTime () a las11:59:59, la nueva hora ser 12:00:00).

    { increaseChrono () : Incrementa el crono en 1/100 segundos.{ setLight() : Enciende la luz del visor.{ unsetLight() : Apaga la luz del visor{ unsetLight() : Apaga la luz del visor.

    z Eventos de botones recibidos:{ topRightPressed.{ topRightReleased.p g{ topLeftPressed.{ topLeftReleased.{ bottomRightPressed.{ bottomRightReleased

    23

    { bottomRightReleased.{ bottomLeftPressed.{ bottomRightReleased.

  • Posible SolucinPosible Solucin.

    24

  • IndiceIndice

    zDiagramas de claseszDiagramas de Transicin de EstadoszDiagramas de Transicin de Estados

    zDiagramas de Interaccin.g

    25

  • EjercicioEjercicio

    fEspecificar el diagrama de secuencia de la operacin crearLaberinto

    public class JuegoLaberinto {public Laberinto crearLaberinto () {

    Laberinto lab = new Laberinto();Habitacion h1 = new Habitacion();Habitacion h2 = new Habitacion();Puerta puerta = new Puerta(h1, h2);lab.aadeHabitacion(h1);lab.aadeHabitacion(h2);h1.aadePuerta(puerta);return lab;

    }}

  • SolucinSolucin

    :JuegoLaberinto

    l b L b i tcrearLaberinto()

    lab:Laberinto

    h1:Habitacion

    h2:Habitacion

    puerta:Puertacreate(h1,h2)

    aadeHabitacion(h1)

    aadeHabitacion(h2)

    aadePuerta(puerta)

  • EjercicioEjercicio

    Especificar el diagrama de secuencia de la operacinEspecificar el diagrama de secuencia de la operacin crearLaberinto

    public class JuegoLaberinto {private Laberinto lab;private boolean conVentana;

    public JuegoLaberinto() {public JuegoLaberinto() {lab = new Laberinto();conVentana = true;

    }

    public void crearLaberinto () {Habitacion h;for (int i=0; i

  • SolucinSolucin

    :JuegoLaberinto lab:Laberinto

    crearLaberinto()

    h:Habitacion

    loop [for i = 1 to 10]

    v:Ventana

    opt [conVentana==true]

    aadeVentana(v)

    aadeHabitacion(h)

  • EjercicioEjercicio

    Especificar el diagrama de secuencia de la operacin realizarJugada definida en la clase Jugador, para el juego del parchsparchs

    Jugadorill A t l i t

    Dado2*

    - casillaActual: int+ realizarJugada(): void+ casillaActual(): int

    + tirar(): int

    1*

    Tablero

    + mover(int actual, int unidades):

    1

    int unidades): boolean

  • SolucinSolucin

    :Jugador d1:Dado

    realizarJugada()

    d2:Dado :Tablero

    tirar()

    n1

    par

    tirar()

    n2

    ca:=casillaActual()

    mover(ca,n1+n2)

    movRealizado

  • EjercicioEjercicioIdentificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de

    secuencia para el siguiente caso de uso, que corresponde a la realizacin de una llamada desde un telfono mvil.

    z El usuario pulsa los dgitos del nmero de telfonoz Para cada dgitog{ la pantalla se actualiza para aadir el dgito marcado{ se emite un tono por el receptor

    z El usuario pulsa el botn Enviarz El usuario pulsa el botn Enviarz El indicador en uso se ilumina en pantallaz El mvil establece conexin con la redz L d it l d d l dz Los dgitos acumulados se mandan a la redz Se establece la conexin con el nmero marcado

  • SolucinSolucin

    :Button :Dialer send:Button:Display :CellularRadio:Speaker

    digit(code)

    loop [for i = 1 to 9]

    displayDigit

    send()

    displayDigit(code) emitTone

    (code)

    send()

    connect(pno)

    inUse()inUse()

    Diagrama de colaboracinequivalente?

  • SolucinSolucin

  • Ejercicio: BibliotecaEjercicio: Biblioteca

    z Una biblioteca tiene copias de libros Estos ltimos sez Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, tipo (novela, teatro, poesa, ensayo), editorial, ao y autor.

    z Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.

    z Cada copia tiene un identificador y puede estar en laz Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparacin.

    z Los lectores pueden tener un mximo de 3 libros enz Los lectores pueden tener un mximo de 3 libros en prstamo.

    z Cada libro se presta un mximo de 30 das, por cada da p pde retraso, se impone una multa de dos das sin posibilidad de coger un libro.

    z Realiza el diagrama de colaboracin para el mtodoz Realiza el diagrama de colaboracin para el mtodo devolver()

  • SolucionSolucion

    1: devolver(id, fecha)

    1.3 [retraso>0]: multar(retraso)

    :Lector

    ( , )

    :Copiaprestamos

    1.1: dev:=remove(id)1.3.1a [multa=0]: multa:=

    lt M lt

    create(fecha,retraso)

    dev:Copia1.2: retraso:=getRetraso(fecha)multa:Multa

    {new}

    multa:Multa1.3.1b [multa0]: anyade(fecha,retraso)