Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2005
cmurua71 cmurua71 is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
cmurua71 Va por buen camino
Como tener un Array Constante dentro de una clase

Hola !

Tengo un problema: tengo una clase en la cual tengo que hacer una conversion de valores utilizando 10 coeficientes. Estos coeficientes son fijos, por lo que los puse dentro de una matriz. Una posibilidad es declarar el array como un atributo cualquiera y ¨llenarlo¨ en el constructor.

Otra posibilidad supongo que es declararlo como un atributo Constante, pero el problema es que no sé como se hace esto ultimo. Si me pueden ayudar, les agradecería mucho

Carlos
Responder Con Cita
  #2  
Antiguo 16-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Te refieres a algo así?

Código Delphi [-]
 const
   MiArrayDeEnteros: array[1..3] of integer = (1, 2, 3);
   MiArrayDeCadenas: array[1..3] of string = ('Una cadena', 'Otra cadena', 'Otra cadena más');
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 16-11-2005
cmurua71 cmurua71 is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
cmurua71 Va por buen camino
Pero como lo declaro en una clase ?

Me refiero a algo así, pero necesito que el Array sea un atributo constante privado de una clase, y no sé donde declarar (o cómo) las constantes de una clase.

Te paso el codigo que me funciona, pero me gustaria saber como hacerlo de una manera ¨mas elegante¨ por asi decirlo

Código Delphi [-]
 INTERFACE
 
     TTemperaturaAmbiente = Class(TParametro)
 
     Private
 
     TempToVolt:array[0..9] of double;
 
     Public
       Constructor Create();
       Function GetValue(): double; Override;
       Function GetVolt(): double; Override;
       Function toVTermK():double;
     End;
 
 IMPLEMENTATION
 
 {########## TTemperaturaAmbiente ################}
 {--------------------------------------------------------}
   Constructor TTemperaturaAmbiente.Create;
   Begin
     TempToVolt[0] := -1.7600413686E-2;
     TempToVolt[1] := 3.8921204975E-2;
     TempToVolt[2] := 1.8558770032E-5;
     TempToVolt[3] := -9.9457592874E-8;
     TempToVolt[4] := 3.1840945719E-10;
     TempToVolt[5] := -5.6072844889E-13;
     TempToVolt[6] := 5.6075059059E-16;
     TempToVolt[7] := -3.2020720003E-19;
     TempToVolt[8] := 9.7151147152E-23;
     TempToVolt[9] := -1.2104721275E-26;
   End;
 
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.GetVolt;
   Begin
        Result := (((MaxVolt-MinVolt)/(Power(2,NumBits)))*(Fuente.getFromBuffer(Ubicacion)/Multiplicador))+MinVolt;
   End;
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.GetValue;
   Begin
        Result := (Self.GetVolt*Pendiente)+Ordenada;
   End;
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.toVTermK():double;
   Var
     Aux: Double;
     i:Integer;
 
   Begin
     Aux:= 0;
     For i:=0 to 9 do
       Aux:=Aux+(TempToVolt[i]*Power(Self.GetValue,i));
     Result:= Aux;
   End;
 {--------------------------------------------------------}
Gracias

Carlos

Última edición por dec fecha: 16-11-2005 a las 03:39:28. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #4  
Antiguo 16-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Se me ocurre que declares la constante en la parte "implementation" de la clase. De este modo podrás "inicializarla" como arriba se refiere. Los métodos de la clase que devuelvan determinados valores basándose en el array constante podrán seguir haciéndolo refieriéndose a dicha constante, y no a ningún miembro de la clase (léase variable) que ya no sería preciso usar. A ver si a alguien se le ocurre otra cosa.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 16-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No sé si lo he entendido bien, ¿es algo así?
Código Delphi [-]
 INTERFACE
const
    // ta = Temperatura Ambiente
{ estos nombres me los he inventado, supongo que tu  puedes
  darle nombres más adecuados
}
     taAlSol = -1.7600413686E-2;
     taSinViento= 3.8921204975E-2;
     taConViento := 1.8558770032E-5;
    ....

 type
     TTemperaturaAmbiente = Class(TParametro)
 
     Private
 
     TempToVolt:array[0..9] of double;
 
     Public
       Constructor Create();
       Function GetValue(): double; Override;
       Function GetVolt(): double; Override;
       Function toVTermK():double;
     End;
 
 IMPLEMENTATION
 
 {########## TTemperaturaAmbiente ################}
 {--------------------------------------------------------}
   Constructor TTemperaturaAmbiente.Create;
   Begin
     TempToVolt[0] := taAlSol;
     TempToVolt[1] := taSinViento;
     TempToVolt[2] := taConViento;
     ....
   End;
 
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.GetVolt;
   Begin
        Result := (((MaxVolt-MinVolt)/(Power(2,NumBits)))*(Fuente.getFromBuffer(Ubicacion)/Multiplicador))+MinVolt;
   End;
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.GetValue;
   Begin
        Result := (Self.GetVolt*Pendiente)+Ordenada;
   End;
 {--------------------------------------------------------}
   Function TTemperaturaAmbiente.toVTermK():double;
   Var
     Aux: Double;
     i:Integer;
 
   Begin
     Aux:= 0;
     For i:=0 to 9 do
       Aux:=Aux+(TempToVolt[i]*Power(Self.GetValue,i));
     Result:= Aux;
   End;
 {--------------------------------------------------------}

De esta forma, el usuario de la clase, puede usar las constantes para saber qué temperatura se devuelve.

Ya nos contarás. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 16-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
A ver si a alguien se le ocurre otra cosa.
Pues no. Ésta es la forma de simular variables de clase en Delphi, ya que no cuenta con ellas.

// Saludos
Responder Con Cita
  #7  
Antiguo 16-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por roman
Pues no. Ésta es la forma de simular variables de clase en Delphi (...)
Eso me había parecido, sí.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 18-11-2005
cmurua71 cmurua71 is offline
Miembro
 
Registrado: nov 2005
Posts: 13
Poder: 0
cmurua71 Va por buen camino
Ok, gracias por la ayuda

Muchas gracias, exactamente era eso lo que queria encontrar, como declarar una variable de clase en Delphi, creí que las tenia

Gracias de nuevo

Carlos
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 06:56:25.


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