Mediator (Mediador) Trabajo realizado por: Guillermo Palacios Pelayo

Slides:



Advertisements
Presentaciones similares
Pilares de la POO.
Advertisements

MODELOS ORIENTADOS A OBJETOS
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Curso de java básico (scjp)
Adapter, Bridge, Decorator.
Lenguaje Unificado de Modelado
Curso de Java Capitulo 7: Continuación Poo Profesor:
POLIMORFISMO UNIDAD 4.
Tomado de:
FACHADA.
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Fundamentos de Ingeniería de Software
Tipos de Datos Abstractos Modularidad
Introducción a la programación orientada a aspectos.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
ORIENTADO A OBJETOS ESTUDIANTE JESSICA LORENA LEAL MEDINA INGENIERIA DE SOFTWARE PROGRAMA INGENIERIA DE SISTEMAS UNIVERSIDA COOPERATIVA DE COLOMBIA NEIVA-HUILA.
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
Introducción a la programación Orientada a objetos
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
DS1 María E. Valencia Herencia La jerarquía de clases es un mecanismo a través del cual los cambios (a altos niveles) se pueden propagar inmediatamente.
Patrones de Comportamiento: Patrón de Diseño Observer
Modelado Arquitectónico
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Programación Orientada a Aspectos (POA)
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
DISEÑO DE SOFTWARE 1ª. Parte
Chain of Responsibility José Manuel Domínguez Arroyo Margarita Lozano Pérez Carlos Ignacio Mantecón Nebreda.
Patrones de Diseño: Command
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
Universidad Domingo Savio
Son la base para la búsqueda de soluciones o problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Ingeniería en Sistemas de Información
Métricas Técnicas para Sistemas Orientados a Objeto
SOFTWARE PARA PAGOS DE SUELDOS Patrones de Diseño
Modelo-Vista-Controlador Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación original fue realizada en Smalltalk.
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Aplicaciones Web de Servidor
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
Programación orientada a objetos Capítulo 6 Diseño de clases.
Patrones de Comportamiento Descripción El patrón estrategia es un patrón de comportamiento que su utiliza para definir una familia de algoritmos, encapsularlos.
Ingeniería de software
Olimpiadas 2mil Francisco Huertas Gonzalo Ortiz Alicia Pérez Laura Reyero Gabriela Ruíz Rubén Tarancón.
Diagramas de Interacción.
Programación Orientada a Objeto
PROGRAMACION ORIENTADA A OBJETOS
Modelo de 3 capas.
Clasificación de Diagramas
PATRON OBSERVADOR DEIRY ALI NIETO. El patrón observador lo podemos clasificar como un ejemplo claro de patrones de comportamiento, debido a que este posee.
Introducción a la Programación Orientada a Objetos (POO)
Indirección y Variaciones Protegidas
Ingeniería de Requisitos
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (3)
Fundamentos de Sistemas Expertos
Patrones de diseño equipo n.1
Programación orientada a objetos
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Patrón de Diseño Brigde ( Handle/Body) Calderón Márquez Jorge Alberto Posgrado de Ciencia e Ingeniería en Computación. Tecnología Orientada a Objetos.
La Programación Orientado a Objetos
Fundamentos de Ingeniería de Software
Herencias Conceptos básicos i
Conociendo el modelo Cliente-Servidor
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Transcripción de la presentación:

Mediator (Mediador) Trabajo realizado por: Guillermo Palacios Pelayo Francisco Mª Saldaña Fresnillo Juan Sánchez Amador

Índice Definición Motivación Aplicabilidad Estructura Participantes Colaboraciones Consecuencias Implementación Código Usos conocidos Patrones Relacionados

Introducción Definición: Define un objeto que encapsula cómo interactúan un conjunto de objetos. Promueve un bajo acoplamiento al evitar que los objetos se refieran unos a otros explícitamente, y permite variar la interacción entre ellos de forma independiente. Clasificación: Patrón de comportamiento

Motivación Cuando muchos objetos interactúan con otros objetos, se puede formar una estructura muy compleja, con objetos con muchas conexiones con otros objetos. En un caso extremo cada objeto puede conocer a todos los demás objetos. Objeto1 Objeto5 Objeto2 CASO EXTREMO Objeto4 Objeto3

Motivación Para evitar esto el patrón Mediator encapsula el comportamiento de todo un conjunto de objetos en un solo objeto. Los objetos envían y reciben peticiones a través del mediador, este patrón implementa el comportamiento cooperativo encaminando esas peticiones a los objetos apropiados. Objeto2 - mediador Objeto1 - mediador Objeto3 - mediador Mediador Objeto5 - medidor Objeto4 - mediador ESTRUCTURA MAS CLARA

Aplicabilidad Utilizaremos el patrón: Un conjunto grande de objetos se comunica de una forma bien definida, pero compleja. Dificultad para reutilizar objetos ya que nos referimos a varios objetos para comunicarnos El comportamiento de muchos objetos que esta distribuido entre varias clases, puede resumirse en una o varias por subclasificación.

Estructura

Participantes Mediador: define una interfaz para comunicarse con los otros objetos. Mediador concreto: Implementa el comportamiento cooperativo entre los Objetos. Conoce a los Objetos. Objetos: Cada objeto conoce su mediador, y usa a este para comunicarse con otros objetos.

Colaboraciones Los objetos envían y reciben requerimientos (requests) de un objeto mediador. El mediador implementa como se comunican los objetos.

Consecuencias Ventajas e inconvenientes del patrón Mediator: Reduce herencia :con una subclase llamada Mediador cambiamos el comportamiento, que de otra manera estaría distribuido en varios objetos. Desacopla a los objetos: el patrón Mediator promueve bajar el acoplamiento entre objetos. Se puede variar y rehusar objetos y mediadores independientemente. Simplifica la comunicación entre objetos: Los objetos que se comunican de la forma "muchos a muchos" puede ser remplazada por una forma "uno a muchos" que es menos compleja y más elegante. Además esta forma de comunicación es más fácil de entender. Abstrae como los objetos cooperan: Haciendo a la mediación un concepto independiente y encapsulándolo en un objeto permite enfocar como los objetos interactúan. Esto ayuda a clarificar como los objetos se relacionan en un sistema. Centraliza el control: El mediador es el que se encarga de comunicar a los objetos, este puede ser muy complejo, difícil de entender y modificar

Implementación Importante seguir los siguientes detalles para la implementación de este patrón: Omitir la clase abstracta Mediator. No es necesario crear una clase abstracta Mediador cuando los objetos solo trabajan con un mediador. El acoplamiento abstracto de dicha clase permite que los objetos trabajen con diferentes subclases Mediator y viceversa. Comunicación Objeto y Mediador. Los objetos se comunican su mediador cuanto tiene lugar un evento. Las clases de objetos cada vez que cambian su estado envían notificaciones al mediador. El mediador responde propagando los efectos de dichos eventos a los otros objetos. Otra forma define al Mediador una interfaz de notificación especializada que permite a los objetos ser mas directos en su comunicación. (AÑADIR ALGO MAS DE smalltalk<7)

Código

Código using System; using System.Collections; namespace DoFactory.GangOfFour.Mediator.Structural {   // Mainapp test application   class MainApp   {     static void Main()     {       ConcreteMediator m = new ConcreteMediator();       ConcreteColleague1 c1 = new ConcreteColleague1(m);       ConcreteColleague2 c2 = new ConcreteColleague2(m);       m.Colleague1 = c1;       m.Colleague2 = c2;       c1.Send("How are you?");       c2.Send("Fine, thanks");       // Wait for user       Console.Read();     }   }  

Código abstract class Mediator   {     public abstract void Send(string message,       Colleague colleague);   }   // "ConcreteMediator"  class ConcreteMediator : Mediator   {     private ConcreteColleague1 colleague1;     private ConcreteColleague2 colleague2;     public ConcreteColleague1 Colleague1     {       set{ colleague1 = value; }     }     public ConcreteColleague2 Colleague2     {       set{ colleague2 = value; }     }     public override void Send(string message,       Colleague colleague)     {       if (colleague == colleague1)       {         colleague2.Notify(message);       }       else       {         colleague1.Notify(message);       }     }   }

Código abstract class Colleague   {     protected Mediator mediator;     // Constructor     public Colleague(Mediator mediator)     {       this.mediator = mediator;     }   }   // "ConcreteColleague1" class ConcreteColleague1 : Colleague   {     // Constructor     public ConcreteColleague1(Mediator mediator)       : base(mediator)     {     }     public void Send(string message)     {       mediator.Send(message, this);     }     public void Notify(string message)     {       Console.WriteLine("Colleague1 gets message: "         + message);     }   }

Código // "ConcreteColleague2"   class ConcreteColleague2 : Colleague   {     // Constructor     public ConcreteColleague2(Mediator mediator)       : base(mediator)     {     }     public void Send(string message)     {       mediator.Send(message, this);     }     public void Notify(string message)     {       Console.WriteLine("Colleague2 gets message: "         + message);     }   } } Output  Colleague2 gets message: How are you? Colleague1 gets message: Fine, thanks

Usos conocidos La arquitectura de Smalltalk/V para Windows usan objetos parecidos a mediadores entre los útiles de los dialogos. Una aplicación consiste en un objeto Windows que contiene un objeto de paneles. La biblioteca contiene varios objetos Pane predefinidos; ejemplos de éstos son TextPane, ListBotton… Estos paneles se puede utilizar sin necesidad de heredar de ellos. Un desarrollador de aplicaciones solo hereda de WievManager, una clase que es capaz de organizar la coordinación entre paneles, como el mediador. Cada panel solo conoce a su gestor de vistas, considerándolo como el propietario del panel. Los paneles no se comunican directamente uno con otros. Smalltalk/V usa un mecanismo de eventos para la comunicación Pane-ViewManager. Un panel genera un evento cuando quiere obtener información del mediador o si quiere informar a este de que a ocurrido algo significativo. Un evento define un símbolo que lo identifica. El gestor de vistas registra un selector del método con el panel para manejar el evento. Otra aplicación es coordinar actualizaciones complejas. Un ejemplo de esto es el GestorDeCambios que se menciona en le patrón Observer. También aperece otra aplicación en el framework de dibujo Unidraw.

Patrones relacionados Un patrón muy parecido a éste es el Facade que se diferéncia en que abstrae un sistema de objetos proporcionado una interfaz mas conveniente, utilizando un protocolo unidireccional (Fachada realiza solo peticiones a las clases del subsistema pero no a la inversa), mientras que el Mediator usa un protocolo mutidireccional. Con el patrón Observer los objetos pueden comunicarse con el mediador.

Bibliografía Patrones de diseño – Elementos de software orientado objetos reutilizables Enciclopedia libre - Wikipedia http://www.dofactory.com/Patterns/PatternMediator.aspx#_self2