Ver Mensaje Individual
  #7  
Antiguo 14-10-2012
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
Vamos a ver. Una clase no es lo mismo que un objeto. Una clase no es sino el "molde" para hacer objetos. Entonces, un objeto de la clase Hormiga, no puede acceder, así sin más, a propiedades de la clase Colonia, pues, ¿de qué Colonia en particular se trata?

Es de suponerse que una hormiga pertenece a una colonia y puede haber muchas colonias. Entonces, cada hormiga debbe especificar a qué colonia pertenece. La manera de hacer esto es agregando a la clase Hormiga un apropiedad de tipo Colonia:

Código Delphi [-]
TColonia = class; // necesario para que el compilado sepa qué la declaración de TColonia viene después

THormiga = class
public
  Colonia: TColonia; // Colonia a la que pertenece la hormiga
  procedure CalcularCG_dada_Clasificacion;
end;

TColonia = class
public
  Matriz_FeromonaIndi_CG:MatrizIR;
end;

El método CalcularCG_dada_Clasificacion de la clase Hormiga podrá hacer referencia a la colonia a la que pertenece la hormiga:

Código Delphi [-]
procedure THormiga.CalcularCG_dada_Clasificacion;
begin
  Self.Colonia.Matriz_FeromonaIndi_CG ...
end;

Dependiendo de cómo construyas tus objetos, tendrás que asignar la colonia a cada hormiga. Si la colonia ya existe podrías hacerlo en el constructor de la clase Hormiga, pasando la colonia como parámetro:

Código Delphi [-]
constructor THormiga(AColonia: TColonia);
begin
  inherited;
  Self.Colonia := AColonia;
end;

Por último, nota que, aun cuando puedes nombrar tus clases de cualquier manera, yo he puesto el prefijo T en lugar de cls, ya que es lo que se acostumbra en delphi.

// Saludos
Responder Con Cita