Ver Mensaje Individual
  #9  
Antiguo 05-02-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius
Desconozco como es el concepto de constante de clase, más me llama la atención de que se pretenda modificar el valor. Digo... si es que el concepto de constante se mantiene, es para mi de esperar que el valor no pueda ser sobreescrito en una clase descendiente.
Yo siempre he entendido una constante como un valor que no cambia durante la ejecución. En este sentido, lo que dice poyo se ajusta a la definición, más allá de si las clase heredadas revalúan la constante. Esto es, el cambio de valor al pasar de una clase a una descendiente, sale del ámbito de ejecución, se realiza al codificar, más no al ejecutar.

La verdad es que yo vería muy natural que las constantes de clase se comportasen como esperaba poyo. El mismo ejemplo que da con ClassName es, en mi opinión, bastante esclarecedor.

En alguna ocasión me enfrenté a algo similar, queriendo hacer una jerarquía de clases para encapsular entidades reales como TCliente, TFactura, TProducto, etc., todas ellas descendientes de una clase base TObjetoPersistente.

Para saber en qué tabla de la base se debían guardar los datos, cada clase debía inicializar una propiedad TableName en el constructor. Pero, realmente, dicha propiedad es una propiedad de la clase y no de una instancia en particular; así que se antojaba tener dichas constantes de clase.

Como comenta Al, se puede hacer uso de funciones de clase virtuales, pero no deja de mosquear el hecho de tener una función que siempre regresa el mismo valor, ¿para qué?

En fin, que no aporto nada, pero quería comentar que no se me hace extraña la necesidad del comportamiento que esperaba poyo.

// Saludos
Responder Con Cita