close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Last modified 15 years ago

#795 closed defect

Uso de miembros de tipo Code — at Initial Version

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: lowest Milestone: OOP Implementation
Component: OOP Version: 2.0.1
Severity: trivial Keywords:
Cc:

Description

En OOP no se recomienda el uso de miembros que apunten a funciones asignables como pueden ser los punteros de funciones en C++ o los objetos de tipo Code en TOL. Una función asignable pretende recoger comportamientos polimórficos impredecibles y eso en OOP se trata mediante herencia de métodos virtuales.

TOL debería dar un un mensaje de aviso cuando esto ocurra, aunque se permitirá su uso por si fuera necesario en casos extremos.

En tales casos las funciones así utilizadas no tendrán acceso al ámbito de la clase pues no se trata de verdaderos métodos.

Aún más peligroso resulta usar estos miembros de tipo Code dentro de un NameBlock genérico, no instancia de clase, puesto que en ellos es imposible distinguir si fue creado como método o como objeto, por lo que tendrá acceso al ámbito del NameBlock y sólo debería ser asignado a verdaderos métodos del mismo, nunca a objetos externos.

Especialmente dañino resultaría que una misma función externa fuera asignada a miembros de tipo Code de diferentes NameBlock's no globales, o bien que esa función se usara además fuera de ellos, pues ello podría incluso ocasionar una caída de TOL.

Change History (0)

Note: See TracTickets for help on using tickets.