Mostrando entradas con la etiqueta uml. Mostrar todas las entradas
Mostrando entradas con la etiqueta uml. Mostrar todas las entradas

martes, 30 de noviembre de 2010

Patrones de diseño

Un patrón de diseño es una solucion repetida generalmente aplicada a un problema comunmente ocurrente en el diseño de software.

Un patrón de diseño no es una solucion final absoluta que puede transformarse directamente a código, es una descripción o plantilla de como resolver un problema que puede usarse en muchas situaciones diferentes.

Los patrones de diseño pueden acelerar el proceso de desarrollo, al proporcionar paradigmas que muchas veces han sido probados útiles.

Patrones de creación

Estos patrones de diseño tratan acerca de la instanciación de clase. Esta clase puede dividirse en patrones de creación de clases y patrones de creación de objetos. Los patrones de creación de clases usan herencia en el proceso de instanciación y los patrones de creación de objetos usan la delegación para realizar el trabajo.

  • Abstract Factory
Provee una interfaz para crear familias de objetos relacionados o dependientes, sin especificar sus clases concretas.



  • Builder
Separa la construcción de un objeto complejo de su representación de tal manera que el mismo proceso de construcción pueda crear distintas representaciones.



  • Factory Method
Define una interfaz para crear un objeto, pero deja que las subclases decidan que clase instanciar. Permite que una clase delegue la creación de objetos a sus subclases.




  • Object Pool
Evade costosa adquisición y gasto de recursos, mediante el reciclado de objetos que no se encuentran en uso.




  • Prototype
Especifica el tipo de objetos a crear, usando una instancia prototipo y creando nuevos objetos copiando este prototipo.


  • Singleton
Garantiza que una clase sólo tenga una instancia y provee de un punto de acceso global a ella.






Patrones estructurales

Estos patrones de diseño tratan sobre la composicion de clases y objetos. Estos patrones usan herencia para componer interfaces. Definen maneras de componer un objeto para obtener nuevas funcionalidades.

  • Adapter
Transforma la interfaz de una clase en una interfaz que el cliente espera. Este patron permite que distintas clases trabajen en juntas.






  • Bridge
Desempareja la abstraccion de un objeto de su implementacion de tal manera que las dos puedan variar independientemente.



  • Composite
Compone objetos en estructuras tipo árbol para representar jerarquías de parte completa. Permite tratar objetos individuales y composiciones de objetos uniformemente.



  • Decorator
Agrega responsabilidades a un objeto dinámicamente. Provee de una alternativa flexible a subclasificación para extender la funcionalidad.



  • Facade
Provee de una interfaz unificada de un conjunto de interfaces en un subsistema. Define una interfaz de alto nivel para hacer un subsistema fácil de usar.



  • Flyweight
Usa el compartir para soportar grades números de objetos "de grano fino" de manera eficiente.



  • Private Class Data
Controla el acceso de escritura a los atributos de una clase.



  • Proxy
Proporciona un representante de otro objeto para controlar el acceso al objeto que está siendo representado.









Patrones de comportamiento

Estos patrones tratan acerca de la comunicacion entre objetos y conjuntos de estos.

  • Chain of responsibility
Evita emparejar el objeto que envía una petición con el objeto que recibe esa petición, al permitir que mas de un objeto pueda tomar la responsabilidad de la petición enviada. Encadena los objetos que podrán recibir la petición y pasa la petición a lo largo de la cadena hasta que un objeto acepte la petición.




  • Command
Transforma una peticion en un objeto de tal manera que puedas catalogar clientes con diferentes peticiones, mantener un registro de las peticiones y soportar el deshacer operaciones.



  • Interpreter
Permite definir una representación de la gramática de un lenguaje para usarla en un interprete del lenguaje.



  • Iterator
Provee de una manera de acceder secuencialmente a los elementos de una colección sin exponer su representación interna.



  • Mediator
Crea un objeto mediador que encapsula el cómo un conjunto de objetos interactúan. Mediator promociona la organización de como interactúan los objetos, sin necesidad de que entre ellos mismos se referencíen.



  • Memento
Sin violar el principio de encapsulación, captura y externaliza el estado interno de un objeto de manera que el objeto pueda regresar al estado después.







  • Null Object
Encapsula la ausencia de un objeto al proveer de una alternativa que ofrece un comportamiento predefinido de "hacer nada". Permite que el comportamiento de hacer nada, sea el valor predefinido de un objeto.




  • Observer
Define una dependencia de uno a muchos entre objetos de tal manera que cuando un objeto cambie su estado, todas las dependencias del objeto sean notificadas y actualizadas automáticamente.



  • State
Permite que un objeto cambie su comportamiento al cambiar su estado. El objeto parecerá que cambio de clase.



  • Strategy
Crea un conjunto de algoritmos encapsulados intercambiables. Permite que un algoritmo varíe independientemente de los clientes que los usan.



  • Template method
Otorga el derecho a subclases de re definir ciertos pasos o procedimientos de un algoritmo sin cambiar la estructura de tal algoritmo.


  • Visitor
Permite definir una operación nueva sin cambiar las clases de los elementos en los cuales opera.



Bibliografía (e imágenes tomadas de):

UML (Unified Modeling Language)

UML es un lenguaje estandarizado de propósito general para el modelado de software. Fue creado y es mantenido por Object Managment Group.

Es usado para especificar, visualizar, modificar, construir y documentar elementos o componentes de un sistema de software orientado a objetos, ya sean procesos o valores.

En UML se pueden representar:


  • Actividades.
  • Actores.
  • Procesos de negocio.
  • Esquemas de bases de datos.
  • Componentes lógicos.
  • Componentes reusables.

UML tiene catorce tipos de diagramas, cada uno representando un elemento o componente en particular, se dividen en diagramas de estructura y diagramas de comportamiento.

Diagramas de estructura

Se refiere a los elementos que deben de estar presentes en el sistema.

Los diagramas de este tipo son:


  1. Diagrama de clases.
  2. Diagrama de componentes.
  3. Diagrama de objetos.
  4. Diagrama de estructura compuesta.
  5. Diagrama de despliegue.
  6. Diagrama de paquetes.
  7. Diagrama de perfil.
Diagramas de comportamiento

Le importa que es lo que tiene que suceder en el sistema.

Los diagramas de este tipo son:


  1. Diagrama de actividades.
  2. Diagrama de casos de uso.
  3. Diagrama de estados.

Diagramas de interacción

Pertenecen a los diagramas de comportamiento, éstos se 
comunican acerca del flujo de control y datos en el sistema.

Los diagramas de este tipo son:


  1. Diagrama de secuencia.
  2. Diagrama de comunicación.
  3. Diagrama de tiempos.
  4. Diagrama global de interacciones.

Ejemplo simple de UML.







Clase flightVehicule, subclase airplane hereda de flightVehicule.