01 conceptos de diseño

857 views
760 views

Published on

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
857
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

01 conceptos de diseño

  1. 1. 1-Conceptos de Diseño<br />Dr. Ricardo Quintero<br />
  2. 2. La Metáfora de la Célula<br />Alan Kay utiliza la metáfora del Sistema Biológico para para explicar lo que deben ser los Objetos Software.<br />Como las células, los Objetos Software no saben que es lo que sucede internamente en cada objeto, pero secomunican y trabajanen conjunto para realizar tareas complejas.<br />En contraste, un Software Monolítico, es como un reloj mecánico que contiene innumerables engranes que funcionan sin inteligencia y en relación únicamente con los engranes adyacentes.<br />“Cuando construyes un reloj de engranes, eventualmente alcanzas un nivel de complejidad que pone límites en si mismo” dice Alan Kay.<br />
  3. 3. La Metáfora de la Célula<br />Un Objeto Software puede ser como una máquina que:<br />Toma decisiones.<br />Hace cosas.<br />Conoce cosas.<br />Colabora con muchos otros objetos potenciales.<br />Viviendo en una máquina encerrada:<br />Es un Todo en un nivel.<br />Y una Parte en otro.<br />El comportamiento del objeto está estrictamente limitado a aquello para lo que se le diseñó.<br />Pero el comportamiento dinámico del Sistema Software surge a partir de las interacciones de muchos objetos (cada uno contribuyendo y jugando un rol responsable).<br />
  4. 4. La Maquinaria de Objetos<br />Una Aplicación Software debe estar construida a partir de partes (los objetos).<br />Estas partes interactúan enviando mensajes para solicitar alguna informacióno acción de otras partes.<br />A lo largo de su tiempo de vida, cada objeto se mantiene responsable de responder a un conjunto fijo de solicitudes.<br />Para atender estas peticiones, los objetos encapsulan respuestas y la información en la que se basan para estas respuestas.<br />
  5. 5. El objeto encapsulando respuestas e información …<br />Ejecuta Servicios<br />Conoce información<br />Un Objeto<br />Toma decisiones<br />(para hacer lo correcto)<br />Mantiene conexiones (a otros objetos)<br />
  6. 6. Pregunta clave…<br />¿Cómo inventamos estas Máquinas Software?<br />
  7. 7. Respuesta clave …<br />Construir una Aplicación Orientada a Objetos significa inventar la maquinaria apropiada en la cual representamos:<br />Información del mundo real.<br />Procesos.<br />Interacciones.<br />Relaciones.<br />Errores<br />Objetos que no existen en la realidad (damos vida a cosas inanimadas).<br />Descomponemos en objetos simples a objetos complejos (y difíciles de entender).<br />
  8. 8. Respuesta clave …<br />La medida del éxito es: que tan claramente inventamos la realidad del software que satisface los requisitos de la aplicación (y no que tanto se asemeja al mundo real).<br />Al conectarse los objetos entre sí deben trabajar en concierto para construir máquinas muy complejas.<br />Para manejar la complejidad, debemos repartirlos comportamientos del sistema en objetos que jueguen roles bien definidos.<br />
  9. 9. Perspectivas complementarias para el diseño de aplicaciones<br />Enfocados en el comportamiento, es posible diseñar una aplicación usando varias perspectivas complementarias:<br />Una Aplicación = Un conjunto de objetos que interactúan<br />Un Objeto = Una implementación de uno o más roles<br />Un Rol = Un conjunto de responsabilidades relacionadas<br />Una Responsabilidad = Una obligación para realizar una tarea o conocer una información<br />Una Colaboración = Una interacción de objetos o roles (o ambos)<br />Un Contrato = Un acuerdo enmarcando los términos de la colaboración.<br />
  10. 10. Roles<br />Dentro de la maquinaría cada objeto tiene un propósito específico (el rol que juega dentro de un cierto contexto).<br />Objetos que juegan el mismo rol pueden ser intercambiados.<br />Así podemos definir Rol:<br />“Un conjunto de responsabilidades que se pueden utilizar de forma intercambiable”<br />Un rol es un slot en la maquinaría del software a ser llenado con un objeto apropiado conforme el programa se ejecuta.<br />
  11. 11. Estereotipos de Roles de Objetos<br />Para enfocarse en las responsabilidades del objeto podemos utilizar Estereotipos de Roles.<br />Los Estereotipos son caracterizaciones de los roles necesarios de las aplicaciones.<br />A fin de construir objetos consistentes y fáciles de utilizar, es ventajoso estereotipar objetos ignorando los detalles específicos de los comportamientos y pensando en ellos a alto nivel.<br />
  12. 12. Estereotipos útiles <br />Los siguientes son estereotipos útiles:<br />InformationHolder: conoce y provee información.<br />Structurer: mantiene relaciones entre los objetos, así como también información de estas relaciones.<br />ServiceProvider: realiza trabajo y, en general, ofrece servicios de cómputo.<br />Coordinador: reacciona a eventos delegando tareas a otros.<br />Controller: toma decisiones y dirige otras acciones.<br />Interfacer: transforma información y solicitudes entre diferentes partes del sistema.<br />Un objeto podría satisfacer más de un estereotipo, aunque podría tener asignada más de 1 responsabilidad (Un objeto ServiceProvider que maneja de forma privada la información necesaria para éste rol: 1 Rol con 2 Responsabilidades).<br />
  13. 13. Roles, Responsabilidades y Colaboraciones<br />Una Aplicación implementa un sistema de Responsabilidades.<br />Las Responsabilidades son asignadas a los Roles.<br />Los Roles colaboran para llevar a cabo las Responsabilidades.<br />Una buena aplicación está estructurada para satisfacer efectivamente estas responsabilidades.<br />Diseñar colaboraciones obliga a considerar objetos como participantes colaboradores y no como entidades aisladas.<br />El Diseño es un proceso iterativo e incremental de visualizar objetos y sus responsabilidades e inventar colaboraciones flexibles dentro de pequeños vecindarios.<br />
  14. 14. Objetos colaborando para resolver problemas mayores que los que pueden resolver solos …<br />Ejecuta Servicios<br />Conoce información<br />Toma decisiones<br />(para hacer lo correcto)<br />Un Objeto<br />Mantiene conexiones (a otros objetos)<br />“Una aplicación es una comunidad de objetos trabajando juntos. Colaboran enviando mensajes y recibiendo respuestas. Contribuyen con su Conocimiento y Servicios”<br />Mensaje solicitando ayuda<br />Un Objeto<br />
  15. 15. Objetos colaborando para resolver problemas mayores que los que pueden resolver solos …<br />Un objeto puede ser más inteligente si hace algo con lo que conoce.<br />Entre más inteligente el objeto, menos detalles debe conocer el cliente que utiliza sus servicios.<br />Así los clientes se enfocan a resolver el problema, no en poner atención a detalles que sus colaboradores pueden resolver.<br />Hacer objetos inteligentes tiene un efecto neto de elevar el IQ de toda la sociedad de objetos.<br />
  16. 16. Objetos colaborando para resolver problemas mayores que los que pueden resolver solos …<br />Parte del valor de un objeto está determinado por sus vecinos.<br />Al concebir el diseño hay que considerar constantemente (respecto los vecinos): <br />¿Provee un servicio útil?<br />¿Es fácil hablar con él?<br />¿Es una “carga” porque continuamente solicita ayuda?<br />¿Sus efectos son los deseados?<br />Entre menos demandas hace un objeto, más fácil será de utilizar.<br />Entre más tome cuidado, más útil será.<br />
  17. 17. Contratos de Objetos<br />Un Contrato de un Objeto describe las condiciones bajo las cuales se garantiza su trabajo y los efectos que dejará una vez que el trabajo se complete.<br />El Contrato de un Objeto responde a las preguntas:<br />¿Con cuales objetos interactúa?<br />¿Bajo que circunstancias es utilizado?<br />¿Cuáles son los efectos a largo plazo que tendrá el objeto con su ambiente?<br />Profundiza nuestro conocimiento de las responsabilidades del objeto y soporta nuestra confianza respecto a su diseño.<br />Todo esto sin indicar como se cumplen con las responsabilidades.<br />
  18. 18. Condiciones de Uso y Garantías de Efecto Posterior<br />Las Condiciones de Uso y las Garantías de Efecto Posterior definen los contratos.<br />Las Condiciones de Uso responden a la pregunta:<br />¿Bajo que condiciones puede el objeto garantizar sus servicios?<br />Las Garantías de Efecto Posterior responden a la pregunta:<br />¿Qué esperan los demás objetos de mí?<br />Cuando un objeto se utiliza fuera de sus Condiciones de Uso no está obligado a satisfacer la petición.<br />Las Condiciones de Uso en Diseño OO se reducen a las condiciones correctas bajo las cuales serán invocados los servicios aglutinados en las interfases de los objetos.<br />
  19. 19. Objetos de Dominio<br />Los Objetos de Dominio ofrecen una base común sobre la cual desarrolladores y usuarios pueden converger y discutir la aplicación.<br />Los Objetos de Dominio representan conceptos que son familiares a usuarios y expertos en un campo específico de interés.<br />Ej.- En una aplicación bancaria: cuentas, depósitos, tasas de interés, etc.<br />Para los desarrolladores estos objetos del dominio son solamente el punto inicial para construir un Modelo del Dominio útil para desarrollar las representaciones internas de éstos y conceptos adicionales que existirán en la maquinaria del software.<br />
  20. 20. Modelo de Dominio<br />Un Producto<br />Relaciones<br />Procesos<br />Una Orden<br />Una Revisión del Stock<br />Una Historia Crediticia<br />Un Cliente<br />Información<br />Reglas<br />Un Descuento<br />Una Regla de Embarque<br />Servicios<br />
  21. 21. Modelo de Dominio<br />Los objetos en el Modelo de Dominio incorporan la lógica de la aplicación y sus interacciones.<br />El M. de D. captura, al nivel más abstracto, la semántica de la aplicación y sus respuestas al ambiente.<br />No se representan todos los conceptos del dominio solamente los que son necesarios para soportar la aplicación.<br />
  22. 22. Objetos Específicos de la Aplicación<br />Similarmente, necesitamos objetos para traducir las entradas del usuario (clics de mouse, tecleo) a comandos para objetos apropiados de la aplicación.<br />Estos objetos transforman o filtran la información de usuario y después llaman a los objetos apropiados para la acción.<br />Podrían también secuenciar al movimiento de pantallas, cambiar vistas o refrescar imágenes.<br />Estos objetos específicos de aplicación proveen al Modelo de Dominio de comportamientos específicos del programa y se aglutinan con la aplicación.<br />
  23. 23. Objetos Específicos de la Aplicación<br />Al iniciar una típica aplicación existe al menos 1 objeto de arranque que crea la población inicial de objetos y luego les pasa el control.<br />Conforme el usuario navega a través de la aplicación, este grupo inicial de objetos responde a acciones de usuario ya sea satisfaciendo requisitos de la aplicación o creando y delegando trabajo a nuevos grupos de objetos diseñados para propósitos específicos.<br />Conforme la ejecución continua, nuevos ciudadanos de esta comunidad de objetos nacen, viven y mueren (acorde a las necesidades –y diseño- de la aplicación).<br />
  24. 24. Modelo de Dominio<br />Un Producto<br />Relaciones<br />Control<br />Procesos<br />Un gestor de órdenes<br />Una Orden<br />Un verificador de crédito<br />Una Revisión del Stock<br />Una Historia Crediticia<br />Coordinación<br />Un Cliente<br />Información<br />Una ventana<br />Interfases<br />Reglas<br />Un Descuento<br />Una Regla de Embarque<br />Servicios<br />
  25. 25. Vista del Usuario y Vista del Diseñador<br />Ambas vistas representan dos niveles diferentes de pensamiento sobre aplicaciones y objetos.<br />La Vista del Usuario maneja una representación de conceptos del alto nivel (la información, servicios y reglas del dominio).<br />La Vista del Diseñador inventa aspectos de coordinación y conectividad a otros sistemas y dispositivos, razona sobre la aplicación a un nivel diferente, más bajo: procesos de computadora, computaciones, traducciones, ejecución condicional, delegación, entradas, salidas.<br />La clave para desarrollar una aplicación exitosa recae en nuestra habilidad para vincular estas dos vistas sin comprometer ninguna.<br />
  26. 26. Interfases<br />Eventualmente un objeto expresa sus responsabilidades sobre conocer (know) y hacer (do) a otros en métodos que contienen código.<br />Una Interfase describe el vocabulario utilizado en el diálogo entre un objeto y sus clientes:<br />“Bolea mis zapatos. Dame mis zapatos. Serán cinco pesos. Aquí está tu recibo”.<br />La Interfasemanifiesta los servicios y explica como solicitarlos.<br />Frecuentemente es importante conocer, además, las condiciones bajo las cuales un servicio puede ser invocado.<br />Entre más se publique sobre el comportamiento de un objeto, más probable será que se utilice de acuerdo a su intención en el diseño.<br />La interfase debe ser pública, la implementación privada u oculta.<br />
  27. 27. Clases<br />El término Clase se utiliza en matemáticas y en la vida real para describir “conjuntos de cosas”.<br />Las clases son abstractas y conceptuales, las instancias concretas, objetos físicos.<br />Esta noción aplica también a los objetos software, aunque las clases software poseen características que son específicas al mundo del software. <br />
  28. 28. Dos roles<br />Si una clase software ofrece dos conjuntos distintos de servicios (usualmente a dos tipos de clientes), la clase se dice que juega dos roles:<br />Primero, juega un rol que no tiene analogía en el mundo real: la clase actúa como una fábrica para crear las instancias requeridas del programa.<br />Segundo, actúa como un objeto en sí mismo, con su propio conjunto de responsabilidades. Ofrece información y servicios a otros objetos a través de su propia interfase.<br />
  29. 29. Dos roles: la clase actuando como Fábrica<br />Un cliente<br />Un cliente<br />Un cliente<br />Clase<br />Cliente<br />Un objeto<br />new<br />
  30. 30. Dos roles: la clase actuando como Fábrica<br />Solicitudes por<br />Información y Servicios<br />relacionados con el Cliente<br />Clase<br />Cliente como colaborador<br />Un objeto<br />Necesita ayuda<br />Ofrece ayuda como cualquier<br />otro objeto<br />
  31. 31. Dos roles<br />Cada instancia realiza sus tareas en dos contextos:<br />Se comporta de acuerdo a reglas establecidas por la comunidad donde vive.<br />Controla sus acciones de acuerdo a sus reglas y datos privados.<br />Las reglas suelen estar representadas en condicionales en métodos. <br />Los datos representan el estado del objeto. Incluyen, además, referencias a otros objetos las cuales permiten que pueda “ver” a otros y, subsecuentemente, interactuar con ellos.<br />
  32. 32. Relaciones entre objetos<br />Existen sólo dos tipos de relaciones entre objetos:<br />Composición<br />Herencia<br />Tienen analogía con el árbol familiar:<br />La Composición es como un Matrimonio entre Objetos: es dinámica, sucede durante el tiempo de vida de los objetos y puede cambiar.<br />La Herencia es como los Nacimientos en la familia: una vez que sucede es para siempre.<br />Así como ambos existen en el árbol familiar, ambos también existen en cualquier sistema orientado a objetos.<br />
  33. 33. Composición<br />Es posible extender las capacidades de un objeto a través de su composición con otros.<br />Cuando carece de alguna característica que requiere para satisfacer sus responsabilidades, se delega simplemente a algún objeto con el cual tenga referencia (o conexión).<br />Esto ofrece un escenario muy flexible: conforme el programa continua su ejecución los componentes se conectan entre sí, dinámicamente, de acuerdo a las condiciones de la aplicación.<br />La Composición es uno de los mecanismos básicos para lograr la comunicación entre objetos; otros incluyen el paso de objetos ayuda en solicitudes o la creación de objetos.<br />
  34. 34. Herencia<br />La Herencia es otra forma de extender las capacidades de un objeto. <br />A diferencia de la Composición, que es dinámica (en tiempo de ejecución), la Herencia es estática (en tiempo de compilación).<br />En ocasiones las clases delegan su responsabilidad de crear objetos a sus subclases. Estas clases abstractas definen muchas de las características de las instancias, pero requieren de las subclases para completar algunos detalles y realizar la manufactura actual.<br />
  35. 35. Organizaciones de Objetos<br />Conforme se descompone la aplicación en piezas lógicas se pueden identificar objetos o roles y definir clases que implementen roles específicos.<br />Se pueden diseñar elementos que posean cierta integridad lógica, pero que se puedan descomponer en piezas más pequeñas.<br />Estos agrupamientos lógicos de colaboradores (confederaciones de objetos) suelen llamarse subsistemas o vecindades de objetos.<br />Los subsistemas sirven a propósitos mayores de los que en lo individual pudieran realizar cualquier objeto.<br />La sinergia de los esfuerzos corporativos entre los miembros del subsistema crea una nueva entidad conceptual, de más alto nivel.<br />
  36. 36. Confederación de objetos<br />Un solo objeto que representapúblicamente a todos los objetos<br />Empresa Financiera<br />ACME<br />Ley ACME<br />Tu proveedor de servicio<br />Licenciado<br />Tu Agente<br />Su asistente<br />Conceptualmente no<br />hay diferencia entre <br />las responsabilidades<br />de un Objeto y un Subsistema<br />
  37. 37. Componentes<br />Son piezas de elementos de diseño cuya intención es utilizarlas en diferentes aplicaciones.<br />Se pueden actualizar o reemplazar un componente sin reconfigurar el resto del sistema.<br />Los aspectos internos del componente están ocultos, sus servicios están disponibles a través de una interfase bien definida.<br />Para adaptarlos para su uso, un componente puede proveer interfases que permitan a sus clientes conectar componentes de ayuda o establecer propiedades para controlar aspectos de su operación.<br />
  38. 38. Patrones<br />Los pioneros de tecnología de objetos generaron muchas aplicaciones y estrategias de objetos para resolver problemas.<br />Esta experiencia puede ser transmitida a las siguientes generaciones mediante Patrones.<br />Un Patrón captura la experiencia de practicantes expertos presentando soluciones a problemas recurrentes comunes en un formato predecible y fácil de leer.<br />
  39. 39. Frameworks<br />Un Framework es un diseño general para resolver un problema de software.<br />A diferencia de un patrón (una idea para resolver un problema familiar), un Framework ofrece una biblioteca de clases que los desarrolladores pueden particularizar o extender para satisfacer una situación particular.<br />El éxito del Framework depende de que tan útil es a los desarrolladores y que tan fácil se pueden particularizar sus servicios a las necesidades.<br />Problemas donde se han aplicado con éxito los Frameworks: GUI, Simulación, Ambientes de Programación (Eclipse), Aplicaciones Web.<br />
  40. 40. Frameworks-Ventajas<br />Ventajas al desarrollador:<br />Eficiencia: menos diseño y codificación.<br />Riqueza: el expertise del dominio se captura en el Framework.<br />Consistencia: los desarrolladores se familiarizan con la filosofía impuesta por el Framework.<br />Predecibilidad: el Framework lleva consigo varias iteraciones de desarrollo y pruebas.<br />
  41. 41. Frameworks-Desventajas<br />Desventajas al desarrollador:<br />Complejidad: suelen tener una curva de aprendizaje pronunciada.<br />Suelen requerir una estrategia específica para resolver un problema (si lo único que tienes es un martillo, todo parecerá clavo).<br />Rendimiento: suele intercambiar flexibilidad y reusabilidad por rendimiento.<br />
  42. 42. Frameworks<br />Los Frameworks ofrecen soluciones genéricas pero carecen de comportamientos específicos que varían de aplicación en aplicación.<br />Los comportamientos que se dejan incompletos son llamados hooks: implementaciones que se difieren a los programadores para aplicaciones específicas.<br />Al codificar los hooks el programador debe aceptar una inversión en el control: nuestro código llama a otros objetos y se les pide que hagan el trabajo a favor nuestro.<br />
  43. 43. Arquitectura<br />No hay una única definición de Arquitectura de una aplicación.<br />Una Arquitectura es una colección de comportamientos y un conjunto de descripciones sobre como se impactan unos a los otros.<br />La Arquitectura, entonces, debe incluir aspectos estructurales y dinámicos.<br />Los detalles internos de cómo un grupo de objetos realizan una tarea no deberían considerarse al diseñar una Arquitectura. En Arquitectura las interfases deben decirlo todo.<br />
  44. 44. Estilos Arquitectónicos<br />Representan estilos para organizar los objetos software.<br />Hay 2 aspectos que se deben considerar cuando se piensa en un estilo arquitectónico:<br />Estilos de Interacción de Componentes: muestran componentes o capas del sistema y describen como se les permite interactuar (capas, pipes & filters, blackboard).<br />Estilos de Control: enfoques para distribuir responsabilidades para toma de decisiones y coodinación dentro y entre capas o componentes (desde altamente centralizado hasta distribuido).<br />
  45. 45. Estilos Arquitectónicos<br />Cada combinación de Estilo Arquitéctonico soporta 1 o más características de calidad en un proyecto:<br />Usabilidad<br />Disponibilidad<br />Seguridad<br />Rendimiento<br />Mantenibilidad<br />Flexibilidad<br />Portabilidad<br />
  46. 46. Estilos Arquitectónicos<br />Para soportar estos y otros atributos de calidad antes de realizar cualquier análisis, diseño, codificación podemos empezar seleccionando el Estilo Arquitectónico que los soportará.<br />Seleccionar el Estilo Arquitectónico puede tener un alto impacto.<br />
  47. 47. Estilo de Control Centralizado<br />Hace una clara distinción entre datos y algoritmos.<br />Cuando 1 Objeto Inteligente Central requiere computar datos, la pide a los Repositorios de Datos, los procesa y los regresa al mismo repositorio o a otro.<br />La lógica de la aplicación está centralizada en los objetos inteligentes. El código puede ser difícil de leer porque está incrustado en una gran cantidad de lógica no afín, aunque sólo buscas en 1 solo lugar.<br />
  48. 48. Estilo de Control Centralizado<br />Los objetos manejan información…<br />La lógica inicia y termina aquí …<br />
  49. 49. Estilo de Control Disperso: no centralizado<br />En el otro extremo, se dispersa la lógica a través de toda la población de objetos, manteniendo cada objeto pequeño y construyendo la menor dependencia entre ellos. No hay una entidad central.<br />Para determinar el funcionamiento, se debe trazar la secuencia de solicitudes a servicios a través de muchos objetos, por esto no es muy reutilizable.<br />
  50. 50. Estilo de Control Disperso: no centralizado<br />La lógica inicia aquí …<br />La lógica finaliza aquí …<br />
  51. 51. Estilo de Control Delegado<br />Establece un compromiso (o balance) entre los 2 extremos mencionados.<br />Cada objeto encapsula mucho de lo que se necesita para realizar las responsabilidades, pero en ocasiones requiere la ayuda de otros objetos capaces.<br />Cada objeto tiene una pieza sustancial del pastel.<br />Como cada objeto es muy capaz de realizar sus responsabilidades, por tanto es más usable.<br />Las Funciones del Sistema se organizan en pools de responsabilidad que pueden utilizarse en forma relativamente aislada.<br />
  52. 52. Estilo de Control Delegado<br />Los Objetos conocen y hacen algún sub-paso…<br />Los coordinadores manejan cada paso…<br />La lógica inicia aquí …<br />La lógica termina aquí …<br />
  53. 53. Estilo de Capas<br />Agrupa responsabilidades en capas.<br />Cada capa tiene un número bien definido de capas vecinas (1 o 2).<br />Los objetos que viven en cada capa se comunican principalmente con objetos de la misma capa.<br />Si los servicios que un objeto requiere no están en la capa los buscará en la capa adyacente.<br />El Estilo de Capas contribuye a simplicidad, mantenibilidad y reusabilidad.<br />
  54. 54. Estilo de Capas (aplicación Web)<br />Browsers…<br />Presentación<br />Control y Coordinación de Aplicación<br />Servidor Web…<br />Servidor de Aplicaciones…<br />Servicios e Información del Dominio<br />Servidor de Base de Datos…<br />Servicios de Base de Datos y Sistemas Legados<br />
  55. 55. Cada capa tiene roles de objetos característicos…<br />Interfases (ventanas y widgets)<br />Presentación<br />Eventos<br />Resultados<br />Coordinadores y Controladores (de Aplicación)<br />Servicios de Aplicación<br />Contenedores de Información, Proveedores de Servicios, Estructuradores, Coordinadores y Controladores de Dominio<br />Mensajes<br />Resultados<br />Servicios del Dominio<br />Mensajes<br />Resultados<br />Servicios Técnicos<br />Intefases<br />
  56. 56. Comunicando objetos en/entre capas<br />La comunicación entre objetos tiende a seguir estas reglas:<br />Los Objetos colaboran principalmente dentro de su propia capa.<br />Cuando residen en capas diferentes, los objetos cliente suelen estar arriba de los objetos servidores. Los mensajes (peticiones) fluyen hacia “abajo”.<br />La información (resultados) fluye hacia “arriba”.<br />Cuando los mensajes fluyen hacia “arriba” los objetos cliente están en las capas bajas están débilmente acoplados a los servidores. Esto generalmente mediante un mecanismo de eventos.<br />Sólo las capas más altas y bajas están expuestas al mundo “exterior”. Suelen manejar objetos específicos de plataforma (widgets en la capa alta,; interfases a redes, dispositivos y sistemas externos en las capas bajas).<br />

×