![]() |
Class Helpers
Cita:
Enlace |
¡Hola a todos!
Desconocía esta característica en Delphi (mas no el concepto de "ayudante de clase"), quizá por no haber salido aún de la versión 7. Sería muy bueno poder acceder cuando menos a los elementos protegidos de la clase ayudada. De todas formas no deja de tener otras limitantes. Veo este mecanismo de los ayudantes de clases como un paso intermedio hacia el concepto de Herencia Insertada que he mencionado en algunas ocasiones: http://www.clubdelphi.com/foros/show...4&postcount=10 http://www.clubdelphi.com/foros/show...64&postcount=7 Un abrazo ayudante. Al González. :) |
Estimado Al, me parece recordar que ya alguna vez te había pedido que profundizaras más en ese concepto por el que abogas y me comentaste que pronto lo harías. Quiza me he perdido algún mensaje pero sigo esperando :p
El punto es que no me queda claro. Si tienes una clase A y las clases B y C derivan de ella, ¿lo que tú propones es poder agregar funcionalidad posterior a la clase A de manera que B y C se beneficien de ello? De ser así, ¿no rompería ello con el principio OOP de que una clase debe estar cerrada para modificación aunque abierta para ampliación? Por otra parte, si bien no en Delphi, me parece que este concepto que buscas lo tiene JavaScript, ¿lo has visto? Si no mal recuerdo, puedes usar A.proptotype para alterar A y todos sus descendientes. Bueno, me encantará ver más acerca del tema. // Saludos |
¡Hola a todos!
Cita:
Cita:
Cita:
Cita:
Un abrazo insertado. Al González. :) |
Cita:
Ahora bien, la idea original, si te he entendido, es: Agregar funcionalidad común a las clases B y C sin repetir código. De cualquier forma, agregar funcionalidad significa derivar una nueva clase. Así que de cualquier manera estaríamos hablando de crear clases B' y C' descendientes de B y C. Pero en tal caso podríamos crear A1 descendiente de A y luego B' descendiente de A1 y B y C' descendiente de A1 y C. ¡Ah! Pero Delphi no tiene herencia múltiple. Bueno, entonces, ¿no sería eso, la herencia múltiple, lo que habría que pedir? // Saludos |
¡Hola a todos!
Cita:
Haciendo a un lado las posturas conservadoras (acción esencial en el avance de toda tecnología), es imposible negar que sería muy padre (chévere, agradable) poder añadir sin complicaciones una propiedad NivelSeguridad a todos los TEdit, TMemo, y TComboBox que agregamos a una forma la semana pasada; o hacer que todo botón oprimido, sea de clase TButton, TcxButton, etc., registre en una bitácora la fecha y hora de su accionar; o redefinir el método virtual TDataSet.SetActive para llevar un conteo de aperturas en todos los conjuntos de datos que en adelante agreguemos a nuestra aplicación, sean de clase TClientDataSet, TADOQuery, TIBTable, o de alguna otra clase de componente data set que posiblemente aún no tengamos y bajaremos de Internet en unos días. Esta sana discusión se torna interesante. Gracias por seguir externando tus valiosas opiniones Román. Me gustaría invitar a Antonio Castillo, Federico (DCA) y a todos los demás programadores Delphi a compartir sus puntos de vista. Un abrazo chévere. Al González. :) |
Cita:
Claro el problema es que el método SetActive es un método Protegido de la clase TDataset, por lo que no es posible ahora como estan las cosas poder re-definirlo, tal vez un poco mas adelante; pero la cuestión es que si es posible agregar funcionalidades extras; por ejemplo para agregarle un método mas a todos los derivados de TCustomDBGrid:
Vaya, me parece que la sintaxis existe para poder aplicar nuevas funcionalidades a diferentes niveles de la jerarquia de clases. Para el caso de los Memo y los TEdit puedes aplicar el ayudante al nivel de la clase TCustomEdit, aún no existe la funcionalidad de poder incluir datos extras en los ayudantes a excepción de las variables de clase, por eso este contador sería común a todas las instancias de clases derivadas de TDataset (ya decia antes que era un poco limitado), esperemos que en la próxima versión ya se puedan usar variables de campos comunes. Se han ido incluyendo algunas mejoras del lenguaje desde la versión 7, muchas de ellas para ofrecer compatibilidades con los esquemas de .Net, lo bueno es que estas funcionalidades las han hecho disponibles en el esquema Win32 tambien, Además del "For in", están: function inlining, class visibility, class methods/fields/properties, class helpers, nested types, operator overloading, y namespaces. Particularmente ahora soy un fan de las "live templates" y las uso bastante, una vez las empiezas a dominar son una verdadera maravilla. Saludos Carlos G Edito: si alguien me puede proporcionar un buen ejemplo que justifique el requerir Herencia Múltiple ojalá lo pueda compartir, hasta ahora no he encontrado un buen ejemplo para ello, y ojalá lo explicara con peras, manzanas, abejitas y florecitas porque con los A y A' se hace uno un enredadero marca llorarás. :-) |
Class Helper fue creado para permitir extender clases que son definidas como SELEAD.o si no quiere utilizar herencia.
Para simular una herencia múltipla, solamente utilizando interface. Ejemplo:
|
La franja horaria es GMT +2. Ahora son las 06:11:18. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi