Resumen Patrones de Diseño

Embed Size (px)

Citation preview

  • 8/18/2019 Resumen Patrones de Diseño

    1/20

    Paradigma Orientado a Objetos

    Orientación a Objetos: paradigma de computación que define y organiza el softwarebasándose en entidades denominadas objetos. Los objetos combinan datos,comportamiento e identidad.

    Ámbitos del paradigma:• Programación• ases de datos• Procesos de desarrollo• !rquitectura• "omunicaciones• #tc.

    Elementos del paradigma

    $ecanismos que permiten abstracción, encapsulación, modularización y jerarquización.

    • %bjetos y clases• $ensajes y m&todos• #stado y atributos• 'erencia y polimorfismo

    Objetos y Clases

    "lase: descripción de los datos (atributos) y de las operaciones que describen elcomportamiento de un cierto conjunto de elementos *omog&neos.

    • +esultado del proceso de abstracción.• $olde- de infinitos objetos con ciertas caractersticas para crear en el

    dominio de la computadora un reflejo del mundo real.

    Principio de encapsulación: /istas.•  Pública o 0nterfaz: comportamiento1 establece a qu& operaciones responden los objetos

    de esta clase.•  Privada  o 0mplantación: establece las estructuras de datos de la clase y cómo los

    manipulan las operaciones.

    %bjeto: instancia de una clase que responde al comportamiento definido por lasoperaciones de la misma. Proyección de parte del dominio del problema en lacomputadora.

    "aractersticas:• Pueden ser: 2angibles (libros) o 0ntangibles (deudas).• 3e identifican un/ocamente.• 2ienen unos datos propios (atributos) y un comportamiento determinado.

    Mensajes y métodos

  • 8/18/2019 Resumen Patrones de Diseño

    2/20

    $ensaje: in/ocación de una operación sobre un objeto.

    4n objeto es el agente acti/o que lanza el mensaje y otro objeto es el agente pasi/oque recibe el mensaje. #ste 5ltimo debe contemplar dic*a operación entre las definidaspor la clase a la que pertenece.

    Puede /erse como la solicitud de un ser/icio a un objeto, que de/uel/e siempre unobjeto como respuesta.

    $&todo: definición de una operación de una clase.

    6escripción formal del comportamiento asociado a un objeto o ser/icio que &steofrece.

    2ipos:• producen un cambio en el estado del objeto sobre el que se ejecuta el m&todo.•

    calculan cierto valor.• m&todos especficos para la inicialización y finalización de la vida de un objeto

    (constructores y destructores).

    Permiten la colaboración entre objetos.

    Estado y atributos

    !tributo: cada uno de los datos de una clase.

    +epresentan las caractersticas de un objeto y son definidas en su clase.

    #stado: conjunto de los /alores de los atributos que tiene un objeto, por pertenecer a unaclase, en un instante dado.

    Herencia y polimorfismo

    'erencia: forma de estructurar tipos7clases seg5n su comportamiento mediante lacreación de una jerarqua de clasificación.

    Propiedades:• 0ntuiti/amente fácil de comprender.• 4na subclase e8tiende- las propiedades de su superclase.• 4na subclase es una forma restringida de la superclase.• 4n objeto de una subclase puede acceder a campos y m&todos declarados en su

  • 8/18/2019 Resumen Patrones de Diseño

    3/20

    superclase.

    Propósitos:•  Especificación

    •  Especialización: las subclases pueden redefinir los m&todos.

    •  Extensión: la subclase a9ade nue/a funcionalidad pero no modifica ni altera lo*eredado.

    • Combinación múltiple: se *ereda de /arias clases.

    eneficios:• +eusabilidad del 3oftware• $ayor fiabilidad• "onsistencia de interfaces• Prototipado rápido• %cultación de información

    #jemplos:

    Polimorfismo: posibilidad que tienen distintos objetos de actuar de una manera diferente

    (desencadenar operaciones distintas) en respuesta a un mismo mensaje (una mismallamada a función).

  • 8/18/2019 Resumen Patrones de Diseño

    4/20

    2ipos:• !d *oc- o estático:

    o 3obrecargao "oerción: con/ersión de objetos de una clase a otra (cast)

    • 4ni/ersal

    ases:•  Herencia: se aplica a clases que *ereden de otras.•  Instanciación dinámica: una referencia a un objeto ! puede *acer referencia a distintos

    objetos deri/ados de la clase.

    eneficios:•  Abstracción: no es necesario conocer toda la jerarqua de clases deri/adas.

    •  Extensibilidad: aumentar la funcionalidad del programa7sistema sin tener que modificarel código ya escrito.

    Principios básicos del paradigma

    Procesos a tener en cuenta.

    • !bstracción• #ncapsulación u %cultamiento• $odularidad• erarqua

    Abstracción

    Proceso mental de e8tracción de las caractersticas esenciales (requisitos ofunciones) de algo, ignorando los detalles superfluos-.

    ;o es posible manejar todos los aspectos de un sistema al mismo tiempo. #sfundamentalmente subjeti/a.

    Punto de /ista del cliente- (usuario)

  • 8/18/2019 Resumen Patrones de Diseño

    5/20

    0mplementación en %%: "lases

    Encapsulación u ocultamiento

    Proceso por el que se ocultan los detalles del soporte de las caractersticas

    esenciales de una abstracción (cómo se realizan las funciones)-.Punto de /ista del desarrollador- (sistema)

  • 8/18/2019 Resumen Patrones de Diseño

    6/20

    =a/orece la extensibilidad: facilidad con la que los productos software pueden seradaptados a cambios incrementales de especificaciones.

    Para a9adir una nue/a funcionalidad, *ay que identificar qu& clase la soportará. #lprocedimiento óptimo es crear una subclase que define las diferencias entre la clasee8istente y la nue/a abstracción. 6e esta forma la clase e8istente no resulta afectada yno *ay código repetido.

    "E#$ME%

  • 8/18/2019 Resumen Patrones de Diseño

    7/20

    &ntroducción a Ay'OO

    $M() Lenguaje de $odelado 4nificado.#s una notación esquemática en su mayor parte con la que se construyen sistemas

    por medio de conceptos orientados a objetos.

    Preguntas importantes para dise9ar un sistema:• >"ómo deberan asignarse las responsabilidades a las clases de objetos?• >"ómo deberan interactuar &stos?• >@u& papel debe destinársele a cada clase?

    Patrones: soluciones probadas y eficaces de problemas de dise9o

    La *abilidad más importante en el análisis y dise9o orientado a objetos es asignareficientemente las responsabilidades a los componentes del software.

    Lo segundo más importante es la obtención de los objetos o las abstraccionesadecuadas.

    *+ué es análisis y dise,o-

    Para crear una aplicación *ay que describir el problema y los requerimientos.

    #l análisis se centra en la in/estigación del problema, no en la manera de definiruna solución.

    #l dise9o pone de relie/e una solución lógica: cómo el sistema cumple con losrequisitos. 4na descripción detallada y de alto ni/el de cómo satisface a losrequerimientos y las restricciones.

    *+ué son el análisis y el dise,o orientado a objetos-

    "onsiste en situar el dominio de un problema y su solución lógica dentro de laperspecti/a de los objetos.

    6urante el análisis orientado a objetos se procura ante todo identificar y describirlos objetos dentro del dominio del problema.

    6urante el dise9o orientado a objetos se procura definir los objetos lógicos del

    software que se /an a implementar en el lenguaje de programación orientado a objetos.Los objetos tienen m&todos y atributos.

  • 8/18/2019 Resumen Patrones de Diseño

    8/20

    La di/isión entre análisis y dise9o es poco clara, el trabajo de ambos e8iste en uncontinuo. ;o *ay una definición rgida de qu& constituye un paso del análisis y qu& deldise9o. 3in embargo, es importante distinguir entre in/estigación (análisis) y solución(dise9o) porque es necesario definir la naturaleza del problema antes de buscar lamanera de crear una solución.

    Principales pasos del Ay'OO

    ./ 'efinición de Casos de $so

    "aso de uso: descripción narrati/a de los procesos del dominio.

    Los diagramas de "aso de 4so no son un especficamente un elemento del análisisorientado a objetos, pero constituyen un paso preliminar muy 5til.

  • 8/18/2019 Resumen Patrones de Diseño

    9/20

    0/ 'efinición de un Modelo Conceptual

    Para descomponer el dominio del problema *ay que identificar los conceptos, losatributos y las asociaciones del dominio que se juzgan importantes, esto puede sere8presado en un $odelo "onceptual, que muestra gráficamente en un grupo dediagramas que describen los conceptos (objetos).

    #l modelo conceptual no es una descripción de los componentes del software,representa los conceptos del dominio del problema en el mundo real.

    1/ 'efinición de 'iagramas de Colaboración

    4n paso esencial de la fase de dise9o es la asignación de responsabilidades entre losobjetos y mostrar cómo interact5an a tra/&s de mensajes, e8presados a tra/&s del6iagrama de "olaboración, que presentan el flujo de mensajes entre las instancias y lain/ocación de m&todos.

    2/ 'efinición del 'ise,o de Clases

    Para definir una clase *ay que analizar:

  • 8/18/2019 Resumen Patrones de Diseño

    10/20

    • >"ómo se conectan unos objetos a otros?• >"uáles son los m&todos de una clase?

    6iagrama de 6ise9o de "lases: muestra las definiciones de clases que *an deimplementarse en el software.

    #ste diagrama no muestra conceptos del mundo real, sino que describe 5nicamentelos componentes del software.

    Comparación con los dise,os orientados a funciones

    #n el análisis y dise9o estructurado los problemas se descomponen

    fundamentalmente por funciones o procesos (no por objetos). #sto da lugar a unadi/isión jerárquica de procesos constituidos por subprocesos.

  • 8/18/2019 Resumen Patrones de Diseño

    11/20

    'iagramas del $M(

    #l 4$L está compuesto por di/ersos elementos gráficos que se combinan paraconformar diagramas. 3u finalidad es presentar di/ersas perspecti/as de un sistema, alas cuales se les conoce como modelo (representación simplificada de la realidad). #l

    modelo 4$L describe lo que *ará un sistema, no cómo implementarlo.

    'iagrama de Clases

    6escriben la estructura estática de un sistema.

    "lase: categora o grupo de cosas que tienen atributos (propiedades) y accionessimilares. 3e representa con un rectángulo di/idido en tres áreas: la superior contiene elnombre de la clase, la central contiene los atributos y la inferior las acciones.

    6iagrama de clases: formado por /arios rectángulos (clases) conectados por lneasque representan las asociaciones.

    !sociaciones: representan las relaciones estáticas entre las clases. #l nombre de laasociación /a sobre la lnea que la representa. 4na flec*a rellena indica la dirección de

    la relación. Los roles (representan la manera en que dos clases se /en entre ellas) seubican cerca del final de una asociación. 3i es calificada, el s"mbolo correspondiente secoloca al final de la asociación.

    $ultiplicidad: se coloca cerca del final de una asociación. 0ndica el n5mero deinstancias de una clase /inculadas a una de las instancias de la otra clase.

  • 8/18/2019 Resumen Patrones de Diseño

    12/20

    !sociación 2ripartita

    "omposición y !gregación

    !gregación: relación de 2odo- y Parte-, donde el 2odo- juega un rol másimportante que la Parte-, pero las dos clases son dependientes una de otra. 3e graficacon un rombo diamante /aco contra la "lase 2odo-.

    "omposición: denota una fuerte posesión del 2odo-, a la Parte-. 3e grafica conun rombo diamante relleno contra la clase que representa el todo.

    Aeneralización: *erencia. +elación entre dos clases donde una "lase #specfica-es una especialización de la "lase Aeneral-.

  • 8/18/2019 Resumen Patrones de Diseño

    13/20

    'iagrama de Objetos

    Pueden ser /istos como una instancia de un diagrama de clases. 6escriben laestructura estática de un sistema en un momento particular y son usados para probar laprecisión de los diagramas de clases.

    "ada objeto es representado como un rectángulo, que contiene el nombre del objetoy su clase subrayadas y separadas por dos puntos. Los atributos se listan en el áreainferior y deben tener un /alor asignado.

    'iagrama de Casos de $so

    "aso de uso: descripción de las acciones de un sistema desde el punto de /ista delusuario. 3e representa con un ó/alo y una etiqueta que indica la función.

    6iagramas de caso de uso: modelan la funcionalidad del sistema usando actores

    (usuarios) y casos de uso.

    3istema: sus lmites se representan con un rectángulo que contiene los casos de uso.Los actores se ubican fuera de los lmites.

    +elaciones entre un actor y un caso de uso: se dibujan con una lnea simple.

    +elaciones entre casos de uso: flec*as etiquetadas incluir- (un caso de uso esnecesitado por otro para poder cumplir una tarea) o e8tender- (indica opcionesalternati/as para un cierto caso de uso).

  • 8/18/2019 Resumen Patrones de Diseño

    14/20

    'iagrama de Estados

    #n cualquier momento, un objeto se encuentra en un estado particular. #l diagramade estados captura esa realidad.

    #stado: representa situaciones durante la /ida de un objeto. 3e representa con unrectángulo con puntas redondeadas.

    2ransición: pasaje entre diferentes estados de un objeto. 3e representa con una

    flec*a etiquetada con el e/ento que lo pro/oca y la acción resultante.

    #stado 0nicial

    #stado =inal

    'iagrama de #ecuencias

    $uestra la mecánica de la interacción los objetos entre s, con base en tiempos.

    +ol de la "lase: describe la manera en que un objeto se /a a comportar en elconte8to.

  • 8/18/2019 Resumen Patrones de Diseño

    15/20

    "uadro de !cti/ación: representan el tiempo que un objeto necesita para completaruna tarea.

    $ensajes: flec*as que representan comunicaciones entre objetos.

    Lneas de

  • 8/18/2019 Resumen Patrones de Diseño

    16/20

    6estrucción de %bjetos: los objetos pueden ser eliminados tempranamente usandouna flec*a etiquetada BBdestruirCC- que apunta a una D.

    Loops: es representado como un rectángulo. La condición de salida se coloca en laparte inferior entre corc*etes E F.

    'iagrama de Acti3idades

    0lustra la naturaleza dinámica de un sistema mediante el modelado del flujoocurrente de acti/idad en acti/idad. 3on utilizados para modelar el flujo de trabajo

    interno de una operación.

    !cti/idad: operación en alguna clase del sistema que resulta en un cambio en elestado del sistema.

    #stados de !cción: representan las acciones no interrumpidas de los objetos.

    =lujo de la !cción: representados con flec*as, ilustran las relaciones entre losestados de acción.

  • 8/18/2019 Resumen Patrones de Diseño

    17/20

    =lujo de %bjetos: creación y modificación de objetos por parte de acti/idades.• 4na flec*a de flujo de objeto, desde una acción a un objeto, significa que la acción está

    creando o influyendo sobre dic*o objeto.• 4na flec*a de flujo de objeto, desde un objeto a una acción, indica que el estado de

    acción utiliza dic*o objeto.

    #stado 0nicial

    #stado =inal

    +amificación: un rombo representa una decisión con caminos alternati/os. Lassalidas alternati/as deben estar etiquetadas con una condición.

    3incronización: una barra de sincronización ilustra la ocurrencia de transicionesparalelas, representada acciones concurrentes.

  • 8/18/2019 Resumen Patrones de Diseño

    18/20

    $arcos de +esponsabilidad: agrupan acti/idades relacionadas en una mismacolumna.

    'iagrama de Colaboraciones

    6escribe interacciones entre objetos en t&rminos de mensajes secuenciados.+epresentan una combinación de información tomada de los diagramas de clases, desecuencias y de casos de uso, describiendo el comportamiento, tanto de la estructuraestática, como de la estructura dinámica de un sistema.

    +ol de la "lase: describe cómo se comporta un objeto.

    +ol de las !sociaciones: describe cómo se /a a comportar una asociación en unasituación particular. 3e usan lneas simples etiquetadas con un estereotipoG. (/er al finaldel documento)

    $ensajes: se numeran en orden de ejecución, y la numeración puede anidarse. Lacondición se suele colocar entre corc*etes. Para indicar un loop se usa G despu&s de lanumeración.

    'iagrama de Componentes

  • 8/18/2019 Resumen Patrones de Diseño

    19/20

    6escribe la organización de los componentes fsicos de un sistema.

    "omponente: bloque de construcción fsica del sistema.

    0nterface: describe un grupo de operaciones usada o creada por componentes.

    6ependencias: se grafican usando flec*as de puntos.

    'iagrama de 'istribución

    $uestra la arquitectura fsica de un sistema informático. Puede representar a losequipos y a los dispositi/os, y tambi&n mostrar sus intercone8iones y el software que seencontrará en cada máquina.

    ;odo: recurso fsico capaz de ejecutar componentes de código.

    !sociación: cone8ión fsica entre los nodos.

  • 8/18/2019 Resumen Patrones de Diseño

    20/20

    "omponentes y ;odos

    Otras caracter!sticas

    Pauetes

    Permiten organizar los elementos de un diagrama en un grupo. 3e representa poruna carpeta tabular.

    %otas

    Permite realizar aclaraciones de por qu& un elemento del diagrama está all o lamanera en que trabaja. 2iene una esquina doblada y se adjunta al elemento del diagramaconectándolo mediante una lnea punteada.

    Estereotipos

    !lgunos sistemas requieren de elementos *ec*os a medida que no se encuentran enel 4$L. Los estereotipos permiten tomar elementos propios del 4$L y con/ertirlos enotros que se ajusten a las necesidades. 3e representan como un nombre entre dos pares

    de par&ntesis angulares.