Edición de «Práctica de Diseño (Ingeniería I)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 1: Línea 1:
{{Back|Ingeniería de Software I}}
<div style="border: 1px solid #CECEFF; padding: 5px; background-color: #EEEEFF; margin: 0px 0px 15px 0px;">[[Image:Back.png|14px|]] [[Ingeniería de Software I|Volver a la página de la materia]]</div>


= Introducción: Sobre las herramientas de diseño =
= Introducción: Sobre las herramientas de diseño =


== Ejercicio 1 ==
== Ejercicio 1 ==
[[Image:Ing1-PracDiseno-Ej1-Enunciado.PNG|thumb|left|Diagramas del Ejercicio 1]]
Dados los siguientes diagramas, complete los nombres de las clases de tal forma que los diagramas representen algún modelo posible.
En este último diagrama de secuencias, considerar cada una de las cinco activaciones de objetos (que están expresadas en forma secuencial, una luego de otra) como independientes unas de otras.
== Ejercicio 2 ==
== Ejercicio 2 ==
Dadas las siguientes clases: DispositivoElectrico, AM-FMRadio, SonyDigitalRadio, Lavarropas, Dispositivo, DispositivoMecánico. Utilizando el conocimiento intuitivo del dominio del problema, se solicita lo siguiente:
# Determine el comportamiento esencial que los objetos, instancia de las clases dadas, tienen.
# Establecer una jerarquía de herencia de las clases.
# ¿En qué se basó para armar su jerarquía?
# Agregue más clases a la jerarquía.
== Ejercicio 3 ==
== Ejercicio 3 ==
Modele los diagramas de clases del UML de modo que cualquier diagrama pueda
ser instanciado a partir de las clases que usted modele. El modelo debe soportar
como mínimo lo siguiente:
* Clases: nombre, y si es abstracta o concreta.
* Atributos: nombre y valor inicial.
* Métodos: nombre y parámetros.
* Relaciones de dependencia, de implementación, de herencia, de asociación simple, composición, agregación. En las relaciones que corresponda deberá poder indicarse: nombre de la relación y en cada extremo: nombre del rol, navegabilidad, multiplicidad y propiedades.
* Interfaces: usos e implementaciones.
Podrá extender su modelo para soportar accesibilidad de atributos y métodos u
otras características que desee.




Línea 39: Línea 11:


== Ejercicio 4 ==
== Ejercicio 4 ==
Eustaquio, un burrero viejo, saluda al canillita de la esquina de su casa,
compra la sexta y parte rumbo al hipódromo de Palermo.
Antes que la carrera comience, Eustaquio se acerca a la ventanilla 7, siempre apuesta en la misma por cábala, y le indica al cajero que desea apostar $1 a la yegua “O Primera o Mortadela” al primer lugar, $2 al caballo “Lole” al segundo lugar y $4 al caballo “Checho Batista” al tercer lugar. El cajero anota las apuestas de Eustaquio y recibe el dinero del apostador. A continuación guarda el dinero en la caja y el ticket de apuesta en el fichero de apuestas pendientes. Luego, el cajero le entrega el recibo a Eustaquio, tanto el recibo como el ticket tienen el mismo número de apuesta.
Finalizada la carrera, Eustaquio se acerca a la ventanilla en busca de sus ganancias (“O Primera o Mortadela” salió afortunadamente primera). El cajero recibe el recibo del apostador, lo compara contra et ticket en el fichero de apuestas pendientes y se fija los resultados de la carrera. Por último, tras corroborar que todo está en orden marca el ticket de apuesta como pagado, lo guarda en el fichero de apuestas pagadas y le paga a Eustaquio el monto correspondiente.
* Modele mediante diagramas de secuencias la situación planteada, utilice la cantidad de diagramas que considere necesarios.
* Construya diagramas de clases, completando atributos, métodos y visibilidad en cada clase.
* Explique brevemente cómo modelaría el hecho de que todos los caballos que participan en una carrera, reciban al menos una apuesta.
'''Respuesta:'''
El ejercicio ya fue [[Media:Ing1-Diseno-Eustaquio.pdf|resuelto]] en el segundo cuatrimestre del 2006.
== Ejercicio 5 ==
== Ejercicio 5 ==
Se solicita diseñar la clase Boolean, que modele las constantes booleanas con sus operaciones básicas (negación, conjunción y disyunción). Diseñarlas de dos formas distintas. ¿Qué analogías/diferencias posee esta clase de diseño con su equivalente del modelo conceptual?
== Ejercicio 6 ==
== Ejercicio 6 ==
Modele un semáforo.
# Modele un semáforo vehicular mediante un diagrama de clases.
# Idem anterior, pero un semáforo para peatones. ¿Surgieron nuevas entidades? ¿Y nuevos mensajes?
# Modele mediante un diagrama de secuencias el estado de las luces del semáforo peatonal.
# Modele mediante un diagrama de secuencias cómo los objetos colaboran para lograr que un peatón pueda cruzar una avenida sin ser atropellado. Suponer que el peatón se encuentra parado en la vereda con el semáforo (para el peatón) en rojo (una avenida tiene típicamente 4 semáforos).
# ¿Encuentra todas las restricciones del modelo representables con estas técnicas? Si no, utilice OCL para completar el modelo.
Tip 1: Justifique todo lo que considere necesario respecto al dominio del
problema.
Tip 2: No realizar suposiciones sobre el dominio. Limitarse a los escenarios
descriptos.
== Ejercicio 7 ==
== Ejercicio 7 ==
Esta es la historia de Pablito, el que cumple con sus impuestos en la
localidad de "Todus Ponens", un pueblo que poco tiene que ver con la lógica.
Resulta que Pablito llega a su casa y se encuentra que por debajo de la
puerta, le llegaron dos boletas de impuestos y servicios (agua y gas) para pagar. Todas las facturas son enviadas a los abonados por la empresa concesionaria del servicio.
En la boleta de agua (como todos los servicios no medidos) figura el importe a abonar, pero en la boleta del gas (como todos los servicios medidos) figura además del importe a abonar, el valor consumido. El ente regulador de servicios públicos sugiere (en realidad impone) que antes de pagar un servicio medido, hay que fijarse en el medidor correspondiente si el valor consumido para ese bimestre coincide con el que figura en la boleta correspondiente, y si no coincide, hay que quejarse al ente. Para los servicios no medidos, se asume que el importe siempre será el correcto.
Lamentablemente, las buenas costumbres del pueblo dicen que para pagar
un impuesto o servicio, hay que ir al ente (al mismo que el de antes) para consultar en qué banco del pueblo se puede pagar un impuesto/servicio para ese bimestre. Por suerte para Pablito, ambos impuestos los podía pagar en el Banco Municipal "Su dinero en nuestras manos". Entonces va a ese banco y paga ambos servicios en efectivo (el pago en los bancos municipales se realiza en efectivo).
Al otro día, le llegan otros dos servicios no medidos (cable y luz). Para
pagar, hace lo mismo que el día anterior, y el ente le dice que el cable lo puede pagar en el mismo banco municipal del día anterior, pero la luz la tiene que pagar en el banco provincial "Todos para uno". Los bancos provinciales exigen que para pagar un impuesto, tienen que tener una cuenta en ese banco (no más de una), lo que representaría internamente una transferencia del importe de la cuenta personal a la concesionaria del servicio. Para realizar estos pagos, tiene que haber suficiente dinero en la cuenta, y si no, hay que realizar un depósito previo. No se permiten realizar extracciones en la cuenta. Como Pablito no tenía cuenta en este banco, se crea una con un depósito inicial de $100.
Al tercer día, le llega la boleta del teléfono, y cansado de tanto pagar, Pablito no paga. Al llegar el inicio del día de vencimiento, la empresa telefónica concesionaria (como cualquiera a quien no paga su servicio) le corta el teléfono (como a cualquiera que no haya pagado), y Pablito aprende a hacer señales de humo para comunicarse con sus vecinos...
Se adjunta abajo el modelo conceptual sugerido de todo el texto aquí detallado:
[[Image:Ing1-PracDiseno-Ej7-Enunciado.PNG]]
A partir del texto anterior y del detalle del diagrama de clases del modelo
conceptual, se solicita lo siguiente:
# Reconocer los escenarios más representativos, y expresarlos en diagramas de secuencias.
# Realizar el diagrama completo de clases de diseño que sea consistente con las secuencias expresadas en el punto anterior.
# ¿Qué decisiones de diseño propiamente dichas podrían tomarse que no están comentadas en el texto? Dé algunos ejemplos e indique cómo estas decisiones cambian a los diagramas ya realizados.
# ¿Cómo cambiaría sus diagramas de clases y secuencias si se llegara a permitir otro tipo de entidad intermediaria recaudatoria para realizar los pagos (incluso algo completamente distinto a un banco)? ¿Y si algunas de ellas pueden contener “productos de crédito” de naturaleza muy distinta a las cuentas bancarias?
'''Resolucion:'''
Los sisguientes serian los diagramas de secuencias correspondientes a algunos de los escenarios más importantes.
El primero corresponde a recibir las boletas y verificar la medicion contra la del medidor. Corresponderia al metodo ''agregarFacturas([FacturaAgua, FacturaGas])'' de Pablito.
[[Image:Ing1-PracDiseno-Ej7-RecibirFactura.PNG]]
El siguiente corresponde a realizar el pago de las dos facturas, ''pagarFacturas ([FacturaAgua, FacturaGas])'' de Pablito.
[[Image:Ing1-PracDiseno-Ej7-PagarMunic.PNG]]
El último es el pago de las otras dos facturas, de las cuales una tiene que ser pagada en el banco provincial.
[[Image:Ing1-PracDiseno-Ej7-PagarProv.PNG]]
El archivo UML hecho con [http://staruml.sourceforge.net/en/ StarUML] que contiene los diagramas anteriores puede bajarse [[Media:PracticaDiseno.uml|aquí]].
== Ejercicio 8 ==
== Ejercicio 8 ==
Se solicita realizar el diseño del manejo de ascensores en un edificio, planteando secuencias y su correspondiente diagrama de clases, con las  iguientes variantes:
# Que en el edificio exista un único ascensor no automático.
# Que en el edificio existan dos ascensores no automáticos, donde en cada piso el botón de llamada a los ascensores llame al ascensor que no esté ocupado que esté ubicado más próximo al piso llamador.
# Que en el edificio existan dos ascensores automáticos, donde en cada piso existen dos botones -uno para subir y el otro para bajar-. Considerar además que pueden existir varias estrategias de administración de ascensores automáticos (que siempre hay una activa, aunque ésta puede cambiar en cualquier momento por otra).
Analizar el impacto en el diseño que se produce al cambiar de una variante a otra.
== Ejercicio 9 ==
== Ejercicio 9 ==
Se solicita realizar el diseño del problema relacionado con el [[Práctica de Casos de Uso (Ingeniería I)#Ejercicio 12|ejercicio 12 de la práctica de casos de uso]] (mensajería instantánea). Construir escenarios para reflejar la interacción entre los objetos, para luego expresar el diagrama de clases de diseño.
No diseñar cuestiones relacionadas con la transmisión real de los mensajes del usuario origen al destino (relacionadas con la implementación de los protocolos de comunicación respecto a posibles servidores de mensajería).
== Ejercicio 10 ==
== Ejercicio 10 ==
Se solicita realizar el diseño del problema relacionado con el [[Práctica de FSM (Ingeniería I)#Ejercicio 04|ejercicio 4 de la práctica de FSM]] (máquina de venta de gaseosas). Construir escenarios para reflejar la interacción entre los objetos, para luego expresar el diagrama de  clases de diseño.
== Ejercicio 11 ==
== Ejercicio 11 ==
Se solicita realizar el diseño del problema relacionado con el [[Práctica de FSM (Ingeniería I)#Ejercicio 05|ejercicio 5 de la práctica de FSM]] (comportamiento de un proceso industrial). Construir escenarios para reflejar la interacción entre los objetos, para luego expresar el diagrama de clases de diseño.
Tener en cuenta (sólo a los efectos del diseño), que existen dos tipos de máquinas para procesar materias primas, que son máquinas chinas y máquinas alemanas. Ambas comparten las características de ser procesadoras de materia, aunque sus naturalezas puedan ser diferentes.
== Ejercicio 12 ==
== Ejercicio 12 ==
Se solicita realizar el diseño del problema relacionado con el [[Práctica de FSM (Ingeniería I)#Ejercicio 09|ejercicio 9 de la práctica de FSM]] (horno a microondas). Construir escenarios para reflejar la interacción entre los objetos, para luego expresar el diagrama de clases de diseño.
== Ejercicio 13 ==
== Ejercicio 13 ==
Se solicita realizar el diseño del problema relacionado con el [[Práctica de Modelo Conceptual (Ingeniería I)#Ejercicio 02|ejercicio 2 de la práctica de MC]] (lotes de drogas). Construir escenarios para reflejar la interacción entre los objetos, para luego expresar el diagrama de clases de  diseño.




Línea 163: Línea 25:


== Ejercicio 14 ==
== Ejercicio 14 ==
== Ejercicio 15 ==
== Ejercicio 15 ==


Línea 216: Línea 77:
* ¿Cómo se le ocurre solucionar el problema que nos plantea Eustaquio?
* ¿Cómo se le ocurre solucionar el problema que nos plantea Eustaquio?
* ¿Violamos algún principio de diseño en nuestra primera solución?
* ¿Violamos algún principio de diseño en nuestra primera solución?
* ¿Cuánto le cuesta a su solución propuesta en 1) permitir comparar también caballos por altura?
* ¿Cuánto le cuesta a su solución propuesta en 1) permitir comparar
también caballos por altura?


'''Respuesta:'''
'''Respuesta:'''
Línea 250: Línea 112:
* La strategy también lo cumple, agregando estrategias nuevas sin tener que modificar los algoritmos preexistentes.  
* La strategy también lo cumple, agregando estrategias nuevas sin tener que modificar los algoritmos preexistentes.  


* El pattern observer provee una forma mediante la cual el subject puede notificar a distintos objetos sin modificar su comportamiento. En cuaquier momento pueden aparecer nuevos observadores que también podrán ser notificados por el subject sin cambiar nada, o sea, es extensible.
* Al observer no le veo relación alguna.


* El signleton mucho menos.
* El signleton mucho menos.
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: