Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-02-2009
poyo poyo is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
poyo Va por buen camino
claro, es constante pero es para esa clase... es decir, cada clase puede tener la misma constante (mismo nombre) pero cada una tiene su propio valor... a ver un ejemplo a groso modo para que se entienda:

type
TPlaneta = class(TObject)
public
const Gravedad = 0;
end;

TTierra = class(TPlaneta)
public
const Gravedad = 9.81;
end;

TJupiter = class(TPlaneta)
public
const Gravedad = 26.00;
end;

El valor es inalterable, pues es constante, pero cada clases tiene su propia constante.
Cuando me refiero ca sobreescribir el valor de la constante me refiero a crea una nueva clase con otor valor de la misma constante, como en el ejemplo. se entiende?
Responder Con Cita
  #2  
Antiguo 04-02-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
¿Y eso compila?
Como he dicho, tengo D6 y desconozco el concepto.
A como yo lo interpreto no debería permitirse declarar una misma constante en clases descendientes.

Yo lo analizo con un poco de lógica conceptual.

Un Perro es un animal, y como animal éste hereda las características comunes que le son atribuidas a todo animal. Si esto es así, Perro por tanto comparte las características de un animal más la que le son propias a un perro.

Viéndolo así, definir una constante para una clase implica que cualquier clase que herede de ésta reciba y herede la misma constante.

Cuando deseamos añadir un método a una clase cuya implementación le puede o no ser propia a cada sub-clase lo definimos como virtual; si el comportamiento debe necesariamente estar en la subclase más no en la clase lo definimos además como abstracto. Esto nos permite que luego cada clase pueda sobreescribir dicho método y ampliarlo según el contexto. En el caso del perro y los animales diríamos que Corre() es posiblemente un método abstracto, como un animal corre depende de cada uno: un perro corre de forma distinta a la de un gato, muy a pesar de que ambos poseen el mismo objetivo: moverse a mayor velocidad de un punto a otro.

Volviendo a las constantes, como clase heredera, hereda el mismo valor. Hacer uso y sobreescribir una misma constante implicaría un concepto abstracto, y esto rompe con la filosofía de una constante y el concepto de la herencia.

¿Me explico?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 04-02-2009
poyo poyo is offline
Miembro
 
Registrado: ene 2009
Posts: 47
Poder: 0
poyo Va por buen camino
sí, compila desde D7. si no me equivoco, las constantes de clase (al igual que variables de clase y otras cosas) se han agregado en esa versión.
Entiendo bien lo que planteas y comparto.
El tema es que, así como cada clase tiene un puntero con una constante (Classname) y todos los objetos que heredan del Tobject heredan esa característica (la de tener una constante con su propio nombre), los muchachos de delphi quisieron hacer algo parecido.
Igual, si vamos al caso... no existe "casi" nada constante en este universo... no te olvides que la ram es volátil! :P

siguiendo con las classes del último ejemplo, sigue esto a colación:

Código Delphi [-]
function Gravedad(AClass: TPlaneta): double;
begin
  result := AClass.Gravedad;
end;

procedure test;
var
  Tierra: TTierra;
begin
  Tierra := TTierra.Create;
  showmessage(floattostr((Tierra.gravedad))); // esto devuelve 9.81;
  showmessage(floattostr(Gravedad(Tierra)));  // esto devuelve 0;
  tierra.free; //que lindo suena!

end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con variables estáticas !!!!!! david_uh Varios 4 25-07-2007 00:49:14
Classes -Galadriel- Varios 3 06-06-2007 02:06:43
Ayudaaa Pilas estaticas alekandro OOP 6 26-04-2006 14:04:11
Classes o no classes? tramjauer OOP 3 19-08-2005 21:36:17
Direcciones estáticas o dinámicas Aprendiendo Firebird e Interbase 1 02-04-2004 01:07:08


La franja horaria es GMT +2. Ahora son las 05:32:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi