FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Meter en una lista sólo las clases "punta" (descendientes sin hijas) de una jerarquía
Hola a todos.
Escribiendo un método, encontré que este necesita buscar en cierta colección de clases todas aquellas que desciendan, directa o indirectamente, de una clase en particular, y copiar éstas a una lista, pero solamente las que no tengan clases hijas. Tomemos como ejemplo la siguiente jerarquía: Me interesa poner en una lista sólo las clases TB, TD y TE. Esto porque, de todas las que derivan de TA, son las únicas que no tienen clases hijas. No hay más clases que deriven de TB, TD y TE, por tanto podemos decir que son clases "punta" o finales (end classes). La implementación no tiene dificultades, pero es evidente que el proceso de búsqueda y selección podría quedar de mejor forma aislándolo en una clase o método creado especialmente para ello. Que disertemos sobre el diseño es lo que me interesa. De momento considero estas vías: 1. Definir una clase lista genérica, derivada de la TList genérica: La cual tenga un método función Boolean llamado TryAdd: El cual haría lo siguiente: 1.1 Verificar si la lista contiene una clase ancestro del parámetro Clase, en cuyo caso lo quitaría de la lista antes de agregar Clase (porque Clase está más abajo que su ancestro). 1.2 Verificar si la lista contiene una clase descendiente del parámetro Clase, y sólo en caso de no haberla agregar Clase. 2. Definir en una clase lista de clases general ya existente un nuevo método que haga la operación descrita en la opción 1.
3. Un nuevo método en la colección original (la que contiene el universo de clases) encargado de "exponer" las clases finales que cumplan con el criterio antes explicado. Es decir, que en lugar de colocar la característica en el lado del receptor (la lista que alojará las clases finales), ésta quede en el lado del "emisor". 4. Dado que la funcionalidad de buscar clases finales podría requerirse para copiar de cualquier tipo de colección origen que contenga clases hacia cualquier tipo de lista destino que contenga clases, dicha funcionalidad podría implementarse mejor en una función o clase intermediaria (proxy). Haciendo enumeración en el origen para guardar las clases seleccionadas en el destino. Bueno, espero haber sido claro. Someto a su consideración el planteamiento completo a fin de diseñar una buena solución para esta necesidad. Un cordial saludo. Al González. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
La "CASTA" politica retratada en sólo 30 segundos | Casimiro Notevi | La Taberna | 13 | 08-09-2012 04:50:55 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
Uso y abuso del elemento "lista de opciones" | papulo | HTML, Javascript y otros | 9 | 12-01-2006 17:34:24 |
La lista completa de los "papers" de Borcon! | mamcx | Noticias | 1 | 14-04-2005 13:01:59 |
Lista preliminar "Que hay de nuevo" en diamonback/D9 | mamcx | Noticias | 5 | 17-09-2004 21:12:38 |
|