UTNianos

Versión completa: Consulta con ejercicios de finales [Nueva cátedra][+YAPA]
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a todos! Espero que anden bien!

Verán mis dudas están mayormente relacionadas con la sección Diseño de Objetos de los finales.

07-12-2013
Spoiler: Mostrar
Spoiler: Mostrar
Cita:Otro análisis posterior indica que ahora será necesario notificar a otros objetos del sistema (no
persistente
s) ante la ocurrencia de cualquier evento.
1. Plantear dos alternativas de solución, comunicando mediante prosa, (pseudo)código y
diagramas, qué cambios o agregados habría que hacer al diseño para soportar este
nuevo requerimiento.
2. Comparar las alternativas además en función de sus cualidades de diseño. Si surgieran
patrones, señalar qué aportan a esta solución.

¿En qué me modifica a mi solución si los objetos que piden ser notificados, no son persistentes, y cuál sería la forma correcta de notificar a un objeto la ocurrencia de un nuevo evento?

14-12-2013
Spoiler: Mostrar
Spoiler: Mostrar
Cita:Otro análisis posterior indica que ahora será necesario notificar al autor cuando se finaliza la edición de su libro. El mismo podrá definir los métodos de notificación que prefiera (mail, SMS, etc), además si deseara cambiar sus preferencias, deberían ser respetadas las que eligió al momento de solicitar la edición.
1. Plantear dos alternativas de solución, comunicando mediante prosa, (pseudo)código y diagramas, qué cambios o agregados habría que hacer al diseño para soportar este nuevo requerimiento.
2. Comparar las alternativas además en función de sus cualidades de diseño. Si surgieren patrones, señalar qué aportan a esta solución.

Nuevamente, me está pidiendo que notifique la ocurrencia de un evento. Cómo hago esto en objetos? Porque en SQL lo haría con un trigger y asunto solucionado.

15-02-2014
Spoiler: Mostrar
Spoiler: Mostrar
Cita: El veterinario del tambo necesita saber inmediatamente cuando una vaca, después de ser ordeñada,
produjo menos de 8 litros. Por su parte, el dueño, necesita saber inmediatamente cuando una vaca
después de ser ordeñada produjo más de 25 litros. Por último, el empleado está interesado en
conocer cuando el ordeñe produjo menos de 8 o más de 25.
 También el Dueño desea contar con un listado de las 10 vacas más productivas en un periodo a
seleccionar.

Acá se me ocurre resolverlo dentro de un método que podría ser ordeniar: unaVaca ó #Vaca >>ordeniate y que dentro de la lógica de este método, haga la evaluación de la condición arriba mencionada y si cumple, notificarlo. Lo que no me gusta de esta solución es que le estoy dando más de una función a un método, lo que me quita cohesión (?

De cualquier modo y como pregunta más importante y general, cuando me pide notificar/informar al escritor o al granjero o a quien sea, a qué se está refiriendo exactamente? A imprimir un mensaje por pantalla para que lo lea el usuario o a pasarle valores a otro objeto para que este los almacene en sus atributos?

Por último, dejo dos preguntas, la primera aparece en varios finales. Si alguien las sabe y puede responder sería buenísimo!
Cita:Arquitectura e Interfaz de Usuario

Biblex desea contar con una interfaz gráfica para asignación de imprentas o editores digitales, la cual podría ser consumida tanto desde un navegador web, como desde una PC cliente de escritorio. ¿Qué ventajas conllevaría la aplicación de las ideas de MVC en este caso concreto?

Y una pregunta del final del 01-03-2014
[attachment=10492]
Cita:Definir Requerimientos No Funcionales correspondientes al contexto de desarrollo e implementación del Dominio propuesto y el significado ó prioridad que tienen en la decisión arquitectónica.


Bueno, "eso es todo". Espero que puedan darme una mano, sería de ENORME ayuda!
Desde ya, muchas gracias!!

YAPA:
[attachment=10492]
[attachment=10493]
¿En qué me modifica a mi solución si los objetos que piden ser notificados, no son persistentes, y cuál sería la forma correcta de notificar a un objeto la ocurrencia de un nuevo evento?

Hola, no estoy segura si era el "notify" el nombre pero hay un patron para esas notificaciones que se usa en estos casos. Fijate si lo nombra en los pdfs de la catedra, para buscarlo en el gamma y sacar pros y contras. Ademas tambien muestra como queda el diagrama de objetos y el codigo, que lo tenes que hacer en el final. Pero con esto que te digo se resuelven las primeras tres dudas y cuando lo leas vas a ver que todo tiene sentido!

Las otras dos no me las acuerdo, la de requerimientos lo único que te puedo decir que a mi me corrigieron es que si decir que "imprimir por pantalla" es no funcional, esta mal. Por que ellos me dijeron que solo seria no funcional si dijera con florcitas, letras mayusculas.. eso =)
Hola! Te paso a contestar lo que me parece a mi.

¿En qué me modifica a mi solución si los objetos que piden ser notificados, no son persistentes, y cuál sería la forma correcta de notificar a un objeto la ocurrencia de un nuevo evento?
Lo que te esta pidiendo es que uses un Observer. Eso que no sea persistente parece para simplicidad y que no te vuelvas loco.

Nuevamente, me está pidiendo que notifique la ocurrencia de un evento. Cómo hago esto en objetos? Porque en SQL lo haría con un trigger y asunto solucionado.
Lo mismo que el anterior. Aca hay un apunte con el ejemplo de Listas de correo. Lista de correo

De cualquier modo y como pregunta más importante y general, cuando me pide notificar/informar al escritor o al granjero o a quien sea, a qué se está refiriendo exactamente? A imprimir un mensaje por pantalla para que lo lea el usuario o a pasarle valores a otro objeto para que este los almacene en sus atributos?
Creo que es igual que los otros, con la diferencia que te pide notificar dos cosas, osea podrian ser dos listas de Observers, una para los que quieren ser notificados por menos de 8 litros y otra para los de mas de 25.
En cuanto a imprimir el mensaje creo que es indistinto. Lo que quieren evaluar es otra cosa.

Biblex desea contar con una interfaz gráfica para asignación de imprentas o editores digitales, la cual podría ser consumida tanto desde un navegador web, como desde una PC cliente de escritorio. ¿Qué ventajas conllevaría la aplicación de las ideas de MVC en este caso concreto?
Aca esta bien explicado: Decisiones de diseño para construir aplicaciones
(pag 13) se pueden definir diferentes vistas para un mismo modelo sin tener que modificar los objetos de negocio (de otra manera hay que desarrollar dos vistas similares copiando y pegando, con las consecuencias que esto implica)

Espero que te sirva y éxitos!
Muchas gracias SayNoMore. Ya rendí el final el sábado y lo aprobé pero está bueno saberlo porque me puede servir en muchos aspectos, ya sea dentro o fuera de la facu y además muy probablemente le sirva a otros usuarios.

Aclaraciones clave para quienes tengan que preparar el final:

Ponganle su mayor énfasis en estudiar los patrones de diseño! y de estos lo más importante es saber cuando es recomendable usarlos (teoría) y obviamente, saber aplicarlos (práctica)!
Sepanse lo mejor posible: Strategy, Composite (el final de la última fecha se basaba en composite), Decorator, State y Observer.

No aclaro que hay que saber el Template Method porque desde mi punto de vista uno implícitamente ya lo sabe al conocer el paradigma de objetos y el concepto de herencia.
Si me olvido de algún otro patrón clave, por favor avisen!

Ahora tambien: Interfaces entrantes y salientes, Componentes Externos y Patrones de comunicación.

Persistencia / Modelo de datos: -para quienes hayan aprobado GdD todo lo que es persistencia no debería implicar muchas complicaciones-
*Hay que saber armar un DER
*Conocer el Modelo relacional (PK, FK)
*Estrategias de mapeo de herencia (yo me guié por esto)
*Normalización (1era forma, 2da forma, 3era forma)
*Estrategias de Desnormalización (?

Respecto a los patrones o diseños arquitectónicos, por lo que vi el único que evalúan es el MVC, así que eso sepanselo también, sobre todo las ventajas que brinda; muchas veces acá enchufan con interfaz del usuario.

Sepan también los ciclos de vida de desarrollo de un proyecto:
*Cascada
*Incremental
*Evolutivo
*Prototipado
*Espiral (Iterativo)
(ventajas, desventajas, cuando es recomendable y cuando no)

Y por último, estos son el resto de conceptos que vi que evalúan casi siempre (además de los ya mencionados)
*RUP/UP: Unified Process (Proceso Unificado)
Metodologías ágiles:
*TDD: Test Driven Development (Desarrollo Dirigido por Pruebas)
*XP: eXtreme programming (pair programming, etc)
*Scrum


La intención de esto es que sepan qué estudiar y qué no (lo que no está en la lista, por lo que vi, no se evalúa, corríjanme si me equivoco por favor) y tengan un marco de referencia/guía. Espero que les sea de utilidad. Desde mi punto de vista, esta información que acabo de proporcionarles es CLAVE.

Saludos!
Agrego:
Hay que saber crear un DER a partir de un diagrama de objetos, o a partir de un enunciado; e indicar sus componentes.
DarkCrazy pretendo rendir el proximo sabado, quizás puedas darme una mano con el examen que diste, acá comparti mi resolución http://www.utnianos.com.ar/foro/tema-apo...21-02-2015 si podes echarle un ojo te agradeceria !!! roll
(25-02-2015 12:18)rod77 escribió: [ -> ]Agrego:
Hay que saber crear un DER a partir de un diagrama de objetos, o a partir de un enunciado; e indicar sus componentes.
Pedón! Sí! Me comí toda la parte de Persistencia! Ahí edito. Gracias!

(26-02-2015 01:40)reLlene escribió: [ -> ]DarkCrazy pretendo rendir el proximo sabado, quizás puedas darme una mano con el examen que diste, acá comparti mi resolución http://www.utnianos.com.ar/foro/tema-apo...21-02-2015 si podes echarle un ojo te agradeceria !!! roll
Dale, cuando llego a casa te digo más o menos lo que hice. De cualquier modo lo que más les importaba en ese final, y por MUCHO, era que plantees COMPOSITE para el Diagrama de clases y que lo hagas bien... jaja
Todo el resto de los puntos te diría que los dejan en 3er plano (ni segundo) porque yo había hecho todo y por no tener muy bien el diagrama de clases casi me desaprueban. Tuve que defenderlo y me saqué/pusieron 4

Todos los demás puntos me parecían fáciles, no presentaban ningún desafío (o al menos eso pensé, tal vez me equivoqué en pensar así y por eso me saqué 4(? )
Excelente el resumen de temas. Como patrones faltarían el Command, y los patrones creacionales (aunque éstos últimos no vi que los evalúen en los exámenes, sí en el TP). Está el ejercicio del microprocesador en los que da ejemplos Microprocesador-Command y Microprocesador-Creacionales.
¿En qué me modifica a mi solución si los objetos que piden ser notificados, no son persistentes, y cuál sería la forma correcta de notificar a un objeto la ocurrencia de un nuevo evento?
Lo que te esta pidiendo es que uses un Observer. Eso que no sea persistente parece para simplicidad y que no te vuelvas loco.
Que no sean persistentes, es que no lo vas a tener en cuenta cuando hagas el punto de DER.
Y usas un observer, los observadores se suscriben.. y cuando ocurre dicho evento todos se ven notificados


De cualquier modo y como pregunta más importante y general, cuando me pide notificar/informar al escritor o al granjero o a quien sea, a qué se está refiriendo exactamente? A imprimir un mensaje por pantalla para que lo lea el usuario o a pasarle valores a otro objeto para que este los almacene en sus atributos?
Creo que es igual que los otros, con la diferencia que te pide notificar dos cosas, osea podrian ser dos listas de Observers, una para los que quieren ser notificados por menos de 8 litros y otra para los de mas de 25.
En cuanto a imprimir el mensaje creo que es indistinto. Lo que quieren evaluar es otra cosa.
No, la lista de observers es solo una. Vos vas a tener un "notificarMas25" y "notificarMenos8". Si a dueño no le interesa cuando la vaca da menos de 8 lts de leche, no hace nada cuando recibe el msj y cuando recibe el de mas de 25 hara algo (QUE no sabes, pq no lo dice)
Como dijo DarkCrazy: "Ponganle su mayor énfasis en estudiar los patrones de diseño, y de estos lo más importante es saber cuando es recomendable usarlos (teoría) y obviamente, saber aplicarlos (práctica)".

De todos los patrones existentes, ¿cuáles estudiar?

Luego de preguntar (y repreguntar) tanto acá como a compañeros en la facu, llegué a la conclusión que los patrones más importantes son:
1) Strategy (entra en el 95% de los finales).
2) Observer, Composite y Decorator (le siguen en orden de ser los más tomados en finales).
3) State, Template Method, Adapter y Command (los menos tomados, pero suelen aparecer).

Yo estudié a full esos ocho patrones de diseño estructurales y de comportamiento.

En forma teórica, estudié los creacionales: Singleton, Prototype, Factory Method y Builder.

Concentrarse en los diagramas de clases, y en los problemas que tratan de resolver más que en el código. Así resulta más fácil identificarlos o saber cuándo conviene aplicar cada uno.

Para preparar el final, empecé primero estudiando patrones de diseño (viendo videos en YouTube), recomiendo los siguientes:

https://www.youtube.com/playlist?list=PL...OxnWWjc4Tv

https://www.youtube.com/playlist?list=PL...613515968F

https://www.youtube.com/playlist?list=PL...06175C7E07

Subo, también, los apuntes que considero que son los más importantes para estudiar!

PD_1: Subo finales de la cátedra de la profesora Paula Zanetti.

PD_2: Como no hay finales resueltos, yo estudié de los parciales resueltos del site DDS (cátedra nueva).
Para la parte de patrones de diseño (1er parciales) estudié: "Fuente de los Deseos", "Politics 2.0", "Jaloguin" y "Analizador de Facebook".
Para la parte de persistencia ORM y DER (2do parciales) estudié: "Empresa de Seguros" y "Descargas Musicales".

Saludos!
URLs de referencia