Laisons croisées - comment structurer mes fichiers et classes
Millenod
Messages postés34Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention21 septembre 2005
-
29 mai 2005 à 16:52
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 2012
-
30 mai 2005 à 16:54
Bonjour,
Je me retrouve face à un petit problème.
J'ai un project avec une 20aine de classes, sur une même unité.
Or ces classes étant dépendantes les unes des autres, j'obtiens souvent le message d'erreur "liaisons croisées" dans mes clauses uses.
Comment m'en sortir?
Voici un exemple de mes structures :
---
unit u_main;
interface
Type
TMainClass = class
Public
Object1 : TObject1;
Object2 : TObject2;
End;
----
unit u_object1;
interface
uses
u_main;
Type
TObject1 = class;
Protected
Parent : TMainClass;
Public
Constructur Create(aParent : TMainClass);
End;
----
unit u_object2;
interface
uses
u_main;
Type
TObject2 = class;
Protected
Parent : TMainClass;
Public
Constructur Create(aParent : TMainClass);
End;
---
la seule solution que j'envisage serait de dériver TObject1 et TObject2 d'une même classe, comme ci dessous :
---
unit u_main;
interface
uses
u_object1, u_object2;
Type
TMainClass = class
Public
Object1 : TObject1;
Object2 : TObject2;
End;
----
unit u_object1;
interface
uses
u_ObjDeriv;
Type
TObject1 = class(TObjDeriv)
..
End;
----
unit u_object2;
interface
uses
u_ObjDeriv;
Type
TObject1 = class(TObjDeriv)
..
End;
----
unit u_ObjDeriv;
interface
uses u_main;
type
TObjDeriv = class
Protected
FParent : TMainClass;
Public
Constructor Create(aParent : TMainClass);
End;
---
y'a-t-il une autre solution à envisager?
A voir également:
Laisons croisées - comment structurer mes fichiers et classes
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 29 mai 2005 à 22:10
Il me parraitrait plus logique de regrouper tes classes dans une unique unité. Vouloir à tous prix créer une unité par classe (pour des raisons de clarté, ou pour tout autre raison...), ce n'est pas forcément judicieux. Dans l'exemple que tu donnes, j'aurais tout regroupé dans une unité ainsi :
Type
// Prédéfinitions des classes
TObject1 = class ;
TObject2 = class ;
TMainClass = class
Public
Object1 : TObject1;
Object2 : TObject2;
End;
TObject1 = class
end ;
TObject2 = class
end ;
Cordialement.
<HR>
Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
Millenod
Messages postés34Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention21 septembre 2005 29 mai 2005 à 22:13
Tout regroupé, ca marche...
le défaut est que mon fichier pèse déjà +600ko (j'ai énormément de classes, assez importantes), et qu eje trouve ca un peu embettant, et finis par être "confus".
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 30 mai 2005 à 16:54
Attention, le fait de regrouper les classes ensembles était lié à l'exemple donné, maintenant si ton fichier .pas est trop gros à ton goût tu peux toujours retirer des classes judicieusement. Le tout c'est de ne pas avoir des références circulaires entre deux classes (Références mutuelles entre deux classes) dans des unités séparées.
Cordialement.
<HR>
Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...