Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Discusión sobre Patrones de diseño

Buenos días compañeros,

Abro este espacio con la finalidad de empezar una serie de “artículos” que muchas veces oímos y que pocas tomamos en cuenta cuando asumimos un diseño orientado a objetos. Me refiero a los patrones.

Si, a esos mismos artículos técnicos tanto cuestionados sobre si vale la pena tomarlos en cuenta o si es preferible ignorarlos y hacer nuestros diseños asistidos por la prisa y el método del bombero: apagar incendios.

Antes de comenzar, este primer post está destinado a dar a conocer los objetivos que pretendo con esto:
  • Darle espacio y voz, (aunque sea un tanto ronca, y no demasiada representativa de la viva experiencia) a un tema que a mi parecer pocas veces ha sido tratado aquí.
  • Invitarlos a fomentar una "discusión" sobre los diversos patrones y el diseño orientado a objetos.
  • Y disponer de un lugar en donde podamos dejar ejemplos sencillos para que el tema no resulte demasiado abstracto a quienes desean introducirse en estos conceptos.
Ahora, si me lo permiten, quisiera hacer esto de un modo organizado, y me gustaría que se sumen.
Mi idea es destinar el segundo post para dar a conocer algunas breves normas, mejor dicho recomendaciones, para que nos entendamos y establecer un orden.
El tercero, a modo de índice, contendrá los enlaces a los artículos donde se de comienzo a un nuevo patrón.
El cuarto destinarlo para dar inicio sobre el primero de los patrones que estoy preparando: Adaptador.
De allí en adelante, se invita a la comunidad a seguir “posteando” y así formar un buen debate sobre el tema.

Están todos cordialmente invitados a redactar el artículo, los ejemplos y el tema de debate. Y si es necesario modificar algún artículo y/o ejemplo siéntanse cómodos de hacerlo. Este lugar no se construye sólo.

Muchas gracias.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 31-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Sugerencias

He aquí, algunos puntos a considerar al momento de postear en este hilo:

Sobre los artículos de discusión:
  • Siéntase cómodo de usar distintos tamaños de fuentes para resaltar los títulos y/o subtítulos. En lo posible preferiblemente que estén a la alineados a la izquierda. Recomiendo que se comience a numerar desde la fuente más baja, de modo que los títulos no sean demasiados grandes.
Es decir, que si su artículo tiene 3 niveles de subtítulos, el de más inferior sea de tamaño 2 o 3.
  • Si en su artículo usted desea citar alguna fuente externa. Recurra a la etiqueta quote.
  • De similar manera, si quiere recuadrar algún párrafo, idea, o figura puede usar la etiqueta code. Al ser una fuente monoespaciada, tanto el texto como sus “figuras ASCII” mantendrán su proporción.
  • En caso de tratarse de código delphi, no está demás decir que se recomienda el uso de la etiqueta correspondiente.
  • El título del post sería recomendable que contenga alguna referencia como “Patrón x”, “Artículo sobre el patrón x”, “Discusión: x”, o en su defecto algo similar. La finalidad es distinguir el artículo de los destinados al debate.
  • Utilice los enlaces para referirse a contenido externos y/o algún post en particular.
  • Si su artículo está siendo editado, y/o no está terminado. Añada al final un aviso indicando que su artículo todavía está siendo editado. Recomiendo que use la etiqueta quote para ilustrarlo o resaltarlo.
  • Los artículos de discusión son para iniciar el debate, si te trata de hablar explícitamente del patrón considere redactarlo en la sección wiki.
Sobre el artículo en wiki:
  • El artículo que hable en forma técnica sobre el patrón sería recomendable que esté en la sección wiki. Se ha hecho la categoría Patrones, la cual a su vez, pertenece a la categoría POO.
  • A modo de plantilla o ejemplo, puede basarse en el primer artículo redactado.
Sobre los ejemplos:
  • Si tiene preparados algunos ejemplos, incluya en el archivo .zip un leame.txt que redacte algunas acotaciones que sean necesarias a tener en cuenta. Haga referencia a ellos tanto en el articulo wiki correspondiente como en el de discusión.
  • Asi mismo, aconsejo que dichos archivos estén dispuestos en la carpeta Ejemplos del FTP del club.
Sobre comentarios “off-topics” o fuera del tema:
  • Sería útil que destine el título del post para hacer referencia de ello. O en su defecto, en el texto, remárquelo.

Cita:
Empezado por Aviso
Si usted tiene alguna propuesta, o sugerencia sobre estás “normas” puede hacerlas llegar en este hilo bajo el comentario off-topic. Y serán tomadas en cuenta. Recuerde que este espacio está hecho para y por usted. Siéntase a gusto a hacer de esta comunidad un sitio mejor.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 31-05-2008 a las 20:28:32. Razón: Añadir título al post y correciones menores
Responder Con Cita
  #3  
Antiguo 31-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Indice

He aquí el temario que tenemos actualmente:

Cita:
Empezado por Índice
Cita:
Empezado por Aviso
Este índice será editado a medida que surjan nuevos artículos sobre los patrones.
Si usted tiene preparado un tema por favor avíseme para actualizar el índice, o en su defecto de aviso a algún moderador para que lo edite.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 31-05-2008 a las 23:09:21.
Responder Con Cita
  #4  
Antiguo 31-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Patrón: Adaptador

Introducción

Algo que no está bien explicado en UML y Patrones es la relación de dependencia entre el Adaptador y el Adaptado. Desde otras fuentes consultadas me he percatado que existen dos enfoques de conseguir esta adaptación:

Adaptador de Objeto

Valiéndonos de la composición, el adaptador contiene una instancia de la clase adaptada. En esta situación, el Adaptador envía las llamadas a la instancia del objeto envuelto.


Gracias a esto, la encapsulación se mantiene y todo el acoplamiento se da entre estas dos clases y no hacia "afuera".

Y como señalan las fuentes bibliográficas, este tipo de Adaptador es útil cuando no se puede usar (o mejor dicho no es deseable) la herencia. Los motivos más básicos pueden deberse a que estamo intregando la clase a una jerarquía y ya estamos herendando de una clase base. Como también pueden deberse a que deseamos evitarnos la herencia de algunos métodos que no son compatibles o deseables a nuestros diseños.

Para mi, lo que quería decir Larman en su texto, quedaría así:


Leyendo el About.com me da la impresión de que pareciera haber un tercer tipo de adaptador, al que denomina Adaptador por polimorfismo. Pero otras referencias no mencionan esto. Más bien yo lo encuentro como un caso particular de este enfoque, sobre todo por lo dicho antes:
Cita:
Se está integrando esa clase en una jerarquia nueva y por tanto heredando de otra clase.
En pocas palabras, lo dicho por Zarko es que se acopla (adapta) una clase a otra, y ésta gracias a su herencia puede emplear métodos polifórmicos:



De modo que se consiga llamar al método que encapsula Adaptado, desde su Adaptador:

Código Delphi [-]
procedure Adaptador.Método1;
begin
  Adaptado.Metodo2();
end;

Esto me da pie, para el segundo enfoque de implementar un Adaptador.

Adaptador de Clase

Consiste en que la clase que implementa la nueva interfaz extienda de la original, añadiendole los métodos necesarios. Con esto, la nueva interfaz se convierte en una adecuada para el Cliente.



Este enfoque es útil cuando el Adaptado posee las funcionalidades requieridas pero no ofrece una "interfaz" totalmente acorde a lo necesitado. De este modo, heredando de éste podemos implementar los métodos apropiados en el Adaptador para que se adapten los métodos heredados.

Si uno estos conceptos por lo dicho por Craig Larman, estaríamos en una situación como la siguiente:


Esta es una solución elegante, pero en en Delphi que no permite herencia "privada", expone los métodos de la clase Adaptado. Y en ciertas circunstancias esto no es muy deseable.
Una solución que propone Zarko en sus artículos es la publicar los métodos que se heredan e invalidarlos. Como por ejemplo:

Código Delphi [-]
procedure Adaptador.MetodoA;
begin
 raise Exception.Create(' Método invalido. Use MétodoX()');
end;

Pero a mi gusto, no es muy agradable este comportamiento. Por lo general, me parece deseable aplicar el primer enfoque.

Para ir finalizando esta "exposición", el artículo disponible en Wikipedia (español) ofrece a modo de resumen las ventajas y desventas que posee para tipo. Al final del texto puede encontrar la bibliografía.

Wiki

El artículo wiki que trata el tema está disponible en el siguiente enlace. Invito a los foristas a compartir de su lectura y aportaciones.

Ejemplos

He prepatado, hace un tiempo, unos ejemplos de práctica sobre el exquisito patrón. Las demos están a su disposición en la sección FTP:

Adaptador de objeto
Adaptador de polimorfismo
Adaptador de clase

Los ejemplos han sido basados en los artículos de Zarko Gajic con la finalidad de que el "salto" entre estas lecturas no sea tan brusco. Se reciben ideas y si es necesario preparar ejemplos más funcionales y reales puede aportarlos y serán añadidos aquí. No se ha pretendido realizar código 100% útil la idea es mostrar en forma simple como aplicar el concepto del patrón.

Referencias

UML y Patrones. Una introducción al Análisis y Diseño Orientado a Objetos y al Proceso Unificado. Segunda Edición. Ed. PEARSON - Prentice Hall. Autor: Craig Larman.
About.com - The Adapter Pattern - Delphi OOP Part 10 - Chapter 22
About.com - The Adapter Pattern - Delphi OOP Part 10 - Chapter 23
Wikipedia (Español) – Adapter (patrón de diseño)
Wikipedia (Inglés) – Adapter pattern
Programación.com - Artículos – Diseño de software con patrones (parte 4)

Cita:
Empezado por Aviso
Espero que puedan disculpar mi falta de "estética" en cuanto a los diagramas UML. Los estoy haciendo y luego los enlazaré al artículo.
Doy por abierta esta discusión.
Agradecimientos

Muchas gracias a todos por su tiempo. Espero que le haya sido de agrado.
Estoy enormemente agradecido con Emilio por brindar este espacio. Sin él, y el resto de la comunidad estos artículos no hubieran salido a la luz.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 02-08-2008 a las 04:57:04. Razón: añadir imagenes
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda sobre un diseño lineal En delphi 5 tuflotas Varios 8 16-01-2008 14:29:20
diseño de patrones pablo Gráficos 0 13-04-2005 20:26:25
De Patrones y Empleadas. marcoszorrilla Humor 1 17-04-2004 01:05:05
Consulta sobre Diseño pablo Conexión con bases de datos 4 04-11-2003 15:54:21
[Petición] Documentación sobre análisis y diseño estructurado y OO kinobi Debates 2 13-06-2003 20:24:59


La franja horaria es GMT +2. Ahora son las 04:09:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi