Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
¿Cómo hacer referencia a una clases desde otra que se encuentra dentro de la primera?

Hola a todos.

Tengo una duda, que posiblemente sea fácil para muchos de ustedes pero que me ha generado algunos dolores de cabeza ya que no he podido encontrar información al respecto. De hecho no sé si sea posible hacer lo que quiero.

Tengo dos clases definidas como sigue:

Código Delphi [-]

clsHormiga=class(TObject) 
  private
    function DistanciaAlCudrado(k_Individuo:Integer; k_CG:Integer)ouble;
  protected
  public

    ListaDeNodosAClasificar:VectorINT;                           

    MatrizCG:MatrizIR;                                         
                                                             
    VCardinalidades:VectorINT;                             

    VClasificacion:VectorINT;                                

    ValorDeLaInerciaActualouble;





    {Definición de procedimientos y funciones}

    procedure IniciarCG;
    procedure CamineYClasifique(NumeroNodosPorClasificar:Integer);
    procedure CalcularCG_dada_Clasificacion;
    procedure DeterminarVClasificacionYInercia;
    procedure CalcularInercia_dados_CG_y_clasificacion;
    procedure Intesificar_Rastro_Feromona;

  published
  end;

  //*******************************************************************************************
  //############################    Objeto clsColonia  ########################################
  //*******************************************************************************************
  clsColonia=class(TObject)
  private
  protected
  public
    
    Matriz_FeromonaIndi_CG:MatrizIR;        

    MejorInerciaDeLaHistoriaouble;         

    MejorHormiga:clsHormiga;                 

    VectorDeHormigas:array of clsHormiga;  // Note que en este paso, se define un vector de la otra clases.   

    Cantidad_de_Hormiga:Integer;              

    Matriz_FeromonaAux:MatrizIR;              


    constructor Create(NumHormigas:Integer);
    procedure Actualizar_el_rastro_de_la_feromona;
    procedure ContruirClasificacion();

  published
  end;

En la primera clases clsHormiga hay un procedimiento que se llama CalcularCG_dada_Clasificacion; el cual debe usar los datos y modificar la matriz Matriz_FeromonaIndi_CG
que está en la clase clsColonia. Mi pregunta es ¿Cómo se puede hacer referencia a dicha matriz desde dentro de la clases clsHormiga?

Nota:

Código Delphi [-]
type
  VectorIR=array of Double;    //Tipo de Vector de Reales
  VectorINT=array of Integer;  //Tipo Vector de Enteros
  MatrizIR=array of VectorIR;  //Tipo Matriz de reales, para la Tabla de Datos
  MatrizINT=array of VectorINT; //Tipo de matriz de enteros.
Responder Con Cita
  #2  
Antiguo 11-10-2012
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
Me da la impresión de que a tu clase Hormiga le hace falta una propiedad que referencie a la colonia a la que pertenece. Entonces tus cálculos serán sobre la matriz de esa colonia.

// Saludos
Responder Con Cita
  #3  
Antiguo 13-10-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
Gracias por contestar pero no me queda claro.

Gracias por responder, pero no me queda claro, podría hacerme el favor de indicarme como sería lo de la propiedad. No sé que debo hacer. y no sé lo que me hace falta. Gracias de nuevo.
Responder Con Cita
  #4  
Antiguo 13-10-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
Talking Como se define la propiedad para hacer referencia la matriz

Gracias por responder:

Cita:
Empezado por roman Ver Mensaje
Me da la impresión de que a tu clase Hormiga le hace falta una propiedad que referencie a la colonia a la que pertenece. Entonces tus cálculos serán sobre la matriz de esa colonia.

// Saludos
Me gustaría que me indicará como debo hacerlo, nunca he visto nada parecido y no sé como y donde definir una propiedad que me haga la referencia. Podrías por favor ser explícito, algunos somos de mente más dura.
Gracias de nuevo por responder.
Responder Con Cita
  #5  
Antiguo 13-10-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
No sé como hacer lo que me dices. Gracias por responder, pero no me queda claro que es lo que debo hacer, como genero dicha propiedad. Le agradecería que me pueda ayudar con un ejemplo o una explicación de lo que debo hacer. Gracias de nuevo por responder.

Saludos...
Responder Con Cita
  #6  
Antiguo 13-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda nuestra guía de estilo, gracias por tu colaboración

Ten paciencia, la gente no está aquí pendiente de contestar al momento, espera que se conecte Román, que vea el mensaje y que decida contestar.
Responder Con Cita
  #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
Poder: 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
  #8  
Antiguo 16-10-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
Muchas gracias, me ha quedado muy claro. Le agradezco el tiempo y la paciencia.

Saludos de corazón.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Como ejecutar una aplicacion de delphi dentro de otra? Luis Alberto Varios 2 30-11-2005 00:31:39
¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez? nuri Varios 7 21-07-2005 14:07:51
Como puedo arrastrar una imagen y soltarla dentro de otra maravert API de Windows 3 12-09-2004 17:27:28
¿Como colocar una imagen dentro de otra? astur_racing Gráficos 3 12-08-2004 20:26:56


La franja horaria es GMT +2. Ahora son las 16:14:35.


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