miércoles, 8 de diciembre de 2010

Semana 9 - Design Patterns

Patrones de creación

Los patrones de creación proporcionan ayuda a la hora de crear objetos. Ayudan a estructurar y encapsular las decisiones. Un patrón de creación asociado a objetos delegará la instanciación a otro objeto.

Para este tipo de patron nos basaremos en el Patron Factory.

Consiste en utilizar una clase constructora abstracta con unos cuantos métodos definidos y otros abstractos: el dedicado a la construcción de objetos de  un subtipo de un tipo determinado.

Las ventajas de este patrón son:

- Separa la responsabilidad de la creación complja en objetos de apoyo cohesivos.
- Ocultan la logica de creacion potencialmente compleja.
- Permiten introducir estrategias para mejorar el rendimiento de la destión de la memoria, como objetos caché o de reciclaje.

Para este tipo de patrón encontre un video que al menos a mi me dejo muy claro el concepto:http://geeks.ms/blogs/gperez/archive/2009/08/24/patrones-de-dise-241-o-screencast-capitulo-2-patr-243-n-factory.aspx

Para aterrizar este concepto me basare en mi proyecto individual y usare la Poliza.

Actualmente se manejan 4 tipos de poliza; pero como cualquier negocio siempre esta queriendo crecer; en un futuro se quedran agregar nuevos tipos de poliza;  para no rehacer nuestra clase poliza; utilizaremos la clase Poliza abstracta.

Aqui el ejemplo:


Patrones Estructurales

Los patrones estructurales están relacionados con cómo las clases y los objetos se combinan para dar lugar a estructuras más complejas.

Para este tipo de patron nos basaremos en el Patron Composite.

El patrón Composite sirve para construir objetos complejos a partir de otros más simples y similares entre sí, gracias a la composición recursiva y a una estructura en forma de árbol..

Ventajas:

- Permite tratamiento uniforme de objetos simples y complejos así como composiciones recursivas
- Facilita añadir nuevos componentes

Para este patron me apoye en el libro:
UML y Patrones
Una Introducción al anáalisis y diseño orientado a objetos y al proceso unificado
2da Edición
Craig Larman
Pretince Hall

Para aterrizar el patrón me volvere a apoyar en la clase Poliza; pero esta vez en el precio.

Para obtener el precio de una poliza; existen muchas variantes:
- La compañia (cada compañía maneja distintos precios).
- Tipo de Poliza.
- Forma de Pago (en caso de ser a credito aumenta el precion=.
- Cobertura (amplia, terceros, etc.)


Patrones de Comportamiento

Estos patrones de diseño están relacionados con algoritmos y asignación de responsabilidades a los objetos. Los patrones de comportamiento describen no sólamente patrones de objetos o clases sino también patrones de comunicación entre ellos.

Para este tipo de patron nos basaremos en el Patron Strategy.

Define una familia de algoritmos, encapsula uno de ellos y los hace intercambiables. Permite que un algoritmo varie independientemente de los clientes que lo usan. Define un grupo de clases que representan un conjunto de posibles comportamientos. Estos comportamientos pueden ser facilmente intercambiados en una aplicacion, modificando la funcionalidad en cualquier instante.

Ventajas:

- Proporciona una alternativa a la creación de subclases de la clase Context para obtener una variedad de algoritmos o comportamientos
- Proporciona una variedad de implementaciones para el mismo comportamiento

Para este patrón me base en:
http://userpages.umbc.edu/~tarr/dp/lectures/StateStrategy.pdf
http://patronesdediseno.blogspot.com/2009/05/patron-strategy.html
http://www.dofactory.com/Patterns/PatternStrategy.aspx

Para aterrizar este patrón me base en la clase de usuarios y en el metódo para Ingresar al Sistema.

Dependiendo del Rol que tiene cada usuario es a la sección que accesa.
- Si es administrador General accesa a la sección de Administración de Usuarios.
- Si es administrador accesa a la sección de Administraciún de catálogos.
- Si es usuario normal; accesa a la sección de Polizas.

lunes, 6 de diciembre de 2010

Semana 8 - Presentaciones de diagramas de proyectos

Nota: La entrada pasada fue editada; se modificaron los diagramas de caso de uso por diagramas de actividad.

Presentacion de diagramas de Proyecto:

Anexo Diagramas de Caso de Uso:

lunes, 29 de noviembre de 2010

Actividad Septima Semana- Diagramas de Actividad

Modificación de Entrada: De Diagramas de Caso de Uso a Diagramas de Actividad

Diagramas de Actividad:

1- Ingresar al Sistema


2- Administración Usuarios

- Usuarios



- Alta Usuario



- Modificar Usuario


2- Administración catálogos

- Agente



- Alta de Agente



- Modificar Agente



* Nota: Los diagramas de actividad de Administracion de catalogos aplican para todos los catalogos; solo modificando Agente por el tipo de catalogo correspondiente.

3- Póliza



- Alta Poliza

- Modificar Poliza

martes, 16 de noviembre de 2010

Actividad sexta semana - Diagrama de clases

Los Tutoriales de UML en los que me apoye:

http://www.objectmentor.com/resources/articles/umlClassDiagrams.pdf
http://atlas.kennesaw.edu/~dbraun/csis4650/A&D/UML_tutorial/use_case.htm
http://www.dcc.uchile.cl/~psalinas/uml/modelo.html

Utilice la herramienta Umbrello.

Diagrama de Clase: Administración de Usuarios



Diagrama de Clase: Poliza

Poliza
View more documents from OfeCarrera.

jueves, 21 de octubre de 2010

Documentación y herramientas de desarrollo

Me tome la libertad de cambiar a Epydoc ya que quiero aprender Python.

Liga de descarga:
Ligas a Tutoriales:
Para realizar el ejemplo utilice la clase Usuario que ya había estado manejando; del sistema de Mensajería Instantánea.
Pequeño ejemplo sobre la clase Usuarios.


Prueba de la clase:


Creación de documentación Epydoc:


Documentación Epydoc:


martes, 5 de octubre de 2010

Herencia y polimorfismo: modularidad y reutilización de código


Herencia
Herencia en la programación orientada a objetos es la habilidad de extender una funcionalidad existente definiendo una nueva clase que hereda funcionalidad de una clase existente. Lo cual nos ahorrara mucho tiempo a los programadores.
Si contamos con una clase que se acerca a lo que necesitamos; no es necesario crear una clase desde cero. Podemos aprovecharla y extenderla para crear nuestra nueva clase. Esta nueva clase se llamara subclase y la clase que ya teníamos se llamara superclase.
La subclase heredara todos los atributos y los métodos que fueron definidos en la clase padre. Si necesitamos cambiar algún método, se puede sobrescribir el comportamiento en nuestra subclase; utilizando el mismo nombre y los mismos argumentos del método que se encuentra en la subclase. O bien si se requiere crear un nuevo método lo podemos incluir en nuestra subclase.
Una clase puede heredar atributos por dos superclases (clases padres). La herencia múltiple puede ser usada para agrupar atributos y métodos de distintas clases en una sola.

Ejemplo:


 

Fuente
-        http://en.kioskea.net/contents/poo/heritage.php3
 Seleccione esta fuente porque de las que encontré es donde te dan una explicación más específica y todo lo aterrizan a ejemplos lo cual me hizo mas fácil comprender el concepto. 
-       http://www.math.bas.bg/~nkirov/2005/oop/deitel/cpphtp4_09.pdf
 El ejemplo lo saque de esta fuente. vienen muchos ejemplos de herencia.

Aplicado al tema "Sistema de mensajería instantánea tipo MSN".
Aplicaciones de herencia:
• Superclase: Contacto
Subclases: Admisión
                   Sin Admisión


• Superclase: Status
Subclase:      Conectado
                   Desconectado
                   Ausente
                   No disponible
                   etc.  


Polimorfismo
Significa literalmente muchas formas. En programación orientada a objetos es una tecnica para optimizar la funcionalidad basada en tipos particulares.
La diferencia entre herencia y polimorfismo es que herencia está relacionada con clases y polimorfismo con métodos.

Existen 3 tipos de polimorfismo:
- Sobrecarga:
 Es cuando existen funciones con el mismo nombre, con funcionalidad similar; en clases que son completamente independientes una de la otra.
- Paramétrico:
Existen funciones con el mismo nombre pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se mande.
-Inclusión:
 Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.

Ejemplo:

Fuente:  -http://en.kioskea.net/contents/poo/polymorp.php3#overloading
 Me base en esta fuete porque es donde te lo explicaban de una manera mas basica y  explicita.
 -http://www.youtube.com/watch?v=nxwD7hGmIDQ&feature=related
  Este video me ayudo mas a entender el concepto.

 Aplicado al tema "Sistema de mensajería instantánea tipo MSN".
Aplicaciones de polimorfismo

• En el método Modificación de usuario pueden variar los parámetros.
Por ejemplo:
 -ModificacionUsuario(idusuario,username)
 -ModificacionUsuario(idusuario,username,Imagenparamostrar)
 - ModificacionUsuario(idusuario,contraseña)

• En el método Modificación del contacto.
Por ejemplo:
 -ModificacionContacto(IdUsuario,IdContacto,GrupoId)
 -ModificacionContacto(IdUsuario,IdContacto, Admisión)