Hola,
Tengo una duda sobre xHarbour y no sé si con este compilador se puede
hacer lo siguiente.
Quiero crear una clase con un método que deben definir todas las clases
que hereden de ella, pero en la principal no está definida.
Se puede hacer algo con la cláusula VIRTUAL, pero yo necesito que si en
la clase hija no se sobreescribe me dé un error de algún tipo que me
indique que ese método hay que desarrollarlo en la clase hija FORZOSAMENTE.
A ver si alguien me puede echar un cable.
Un Saludo,
Joaquín
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Herencia en xHarbour
Herencia en xHarbour
Joaquín,
> Tengo una duda sobre xHarbour y no sé si con este compilador se puede
> hacer lo siguiente.
>
> Quiero crear una clase con un método que deben definir todas las clases
> que hereden de ella, pero en la principal no está definida.
>
> Se puede hacer algo con la cláusula VIRTUAL, pero yo necesito que si en la
> clase hija no se sobreescribe me dé un error de algún tipo que me indique
> que ese método hay que desarrollarlo en la clase hija FORZOSAMENTE.
Que yo sepa, no hay una solución 100% satisfactora a lo que pides. Lo único
que puedes hacer es crear ese método con un MsgInfo() o un LogDebug() en la
clase padre, pero claro, ese mensaje sólo te va a salir si intentas ejecutar
el método en run-time, nunca en tiempo de compilación.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Tengo una duda sobre xHarbour y no sé si con este compilador se puede
> hacer lo siguiente.
>
> Quiero crear una clase con un método que deben definir todas las clases
> que hereden de ella, pero en la principal no está definida.
>
> Se puede hacer algo con la cláusula VIRTUAL, pero yo necesito que si en la
> clase hija no se sobreescribe me dé un error de algún tipo que me indique
> que ese método hay que desarrollarlo en la clase hija FORZOSAMENTE.
Que yo sepa, no hay una solución 100% satisfactora a lo que pides. Lo único
que puedes hacer es crear ese método con un MsgInfo() o un LogDebug() en la
clase padre, pero claro, ese mensaje sólo te va a salir si intentas ejecutar
el método en run-time, nunca en tiempo de compilación.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
Herencia en xHarbour
Gracias Jose,
Lo hice con un msginfo(), en principio me vale, porque así no me obliga
a crearlo antes de compilar, simplemente me avisa en tiempo de ejecución
sin romper la aplicación.
Estaría bien en un futuro, que harbour implementara algo parecido a los
interfaces de java, que se basa precisamente en este principio y permite
simular la herencia múltiple.
Aparte que le dá las pautas al programador de qué métodos tiene que
desarrollar, pero bueno, esto es un tema mucho más complejo que
simplemente esto.
Un Saludo, gracias y próspero 2008
Joaquín
Jose F. Gimenez escribió:
> Joaquín,
>
>> Tengo una duda sobre xHarbour y no sé si con este compilador se puede
>> hacer lo siguiente.
>>
>> Quiero crear una clase con un método que deben definir todas las clases
>> que hereden de ella, pero en la principal no está definida.
>>
>> Se puede hacer algo con la cláusula VIRTUAL, pero yo necesito que si en la
>> clase hija no se sobreescribe me dé un error de algún tipo que me indique
>> que ese método hay que desarrollarlo en la clase hija FORZOSAMENTE.
>
> Que yo sepa, no hay una solución 100% satisfactora a lo que pides. Lo único
> que puedes hacer es crear ese método con un MsgInfo() o un LogDebug() en la
> clase padre, pero claro, ese mensaje sólo te va a salir si intentas ejecutar
> el método en run-time, nunca en tiempo de compilación.
>
Lo hice con un msginfo(), en principio me vale, porque así no me obliga
a crearlo antes de compilar, simplemente me avisa en tiempo de ejecución
sin romper la aplicación.
Estaría bien en un futuro, que harbour implementara algo parecido a los
interfaces de java, que se basa precisamente en este principio y permite
simular la herencia múltiple.
Aparte que le dá las pautas al programador de qué métodos tiene que
desarrollar, pero bueno, esto es un tema mucho más complejo que
simplemente esto.
Un Saludo, gracias y próspero 2008
Joaquín
Jose F. Gimenez escribió:
> Joaquín,
>
>> Tengo una duda sobre xHarbour y no sé si con este compilador se puede
>> hacer lo siguiente.
>>
>> Quiero crear una clase con un método que deben definir todas las clases
>> que hereden de ella, pero en la principal no está definida.
>>
>> Se puede hacer algo con la cláusula VIRTUAL, pero yo necesito que si en la
>> clase hija no se sobreescribe me dé un error de algún tipo que me indique
>> que ese método hay que desarrollarlo en la clase hija FORZOSAMENTE.
>
> Que yo sepa, no hay una solución 100% satisfactora a lo que pides. Lo único
> que puedes hacer es crear ese método con un MsgInfo() o un LogDebug() en la
> clase padre, pero claro, ese mensaje sólo te va a salir si intentas ejecutar
> el método en run-time, nunca en tiempo de compilación.
>