Création de composants - constructeur [Résolu]

cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 30 mars 2008 à 11:45 - Dernière réponse : cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention
- 31 mars 2008 à 19:40
JJT
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 30 mars 2008 à 15:15
3
Merci
"Dans le fond, est-ce nuisible d'appeler, dans tous les cas, le constructeur ancètre ?"
=> Aucunement, puisque Delphi supprime de toutes façons le code inutile.

En effet, tu nous avais déjà parlé de ton projet de chemin de fer.
Cela risque d'être un très gros truc, n'hésites donc pas à créer plusieurs classes (une classe = une fonction) sinon ça va vite partir en gros bordel innomable !

A+
Et n'oublie pas de valider les réponses qui te conviennent !

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.nethttp://te%3C/body

Merci florenth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de florenth
Meilleure réponse
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 31 mars 2008 à 19:14
3
Merci
Difficile de te répondre précisément, c'est justement tout là qu'est la difficulté d la POO !!
Mais ce qui est bon à savoir, par contre, c'est reconnaître quand ton code commence *partir en live*, ie quand un objet (TTrain par ex) commence à faire du boulot qui ne le concerne pas (sur TAiguillage par ex...).
Là c'est pas bon !

Merci florenth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de florenth
cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 30 mars 2008 à 11:52
0
Merci
J'ai l'impression que mon message est tombé dans la trappe ...  je recommence :
Bonjour à tous,
   Persévérant dans l'apprentissage de la création de composants, je suis à la recherche d'une réponse claire à la question suivante :
   Quand y-at-ill obligation d'employer un Constructeur et quand n'est-ce pas indispensable ?    Je n'ai pas lu de réponse très nette.   (Je crois savoir que lorsqu'on dérive sa nouvelle Classe d'une Classe Delphi, il n'y a pas obligation ?..)
Merci et bon dimanche (studieux sur Delphi ?...)
JJT
Commenter la réponse de cs_PtitTrain
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 30 mars 2008 à 14:31
0
Merci
Salut !

Ben c'est simple:
- Si tu as besoin d'autre objets dans ta classe, (comme un TStringLst ou un tableau) alors tu vas devoir coder un constructeur pour les créer.
- Dans ce cas, ne pas oublier le "inherited" pour que le constructeur ancètre fasse aussi son boulot.
- Et ne pas oublier non plus que tout ce qui est crée par l'objet doit être détruit ! Donc la présence d'un constructeur se traduit quasi-obligatoirement par la présence d'un destructeur, qui fait le ménage.

Exemples:

TSuperInteger = class
protected
FInt: Integer;
public
procedure Inc;
procedure Dec;
property Value: Integer read FInt;
end;

Cette classe n'a pas besoin de constructeru car elle utilise que des types natifs (ie Integer). FInt est initialisé à 0 lorsque la classe est crée.
Si tu veu xpar contre l'initialiser à 100 ou à n'importe quelle autre valeur de ton choix, tu vas devoir coder ton propre constructeur, par exemple comme celui-ci :

TInitSuperInteger = class(TSuperInteger)
public
constructor Create(AInitValue: Integer);
end;

constructor TInitSuperInteger.Create(AInitValue: Integer);
begin
inherited Create;
FInt := AInitValue;
end;

A noter ici que tu n'as toujours pas besoin de destructeur, car tu n'as rien crée !

En espérant t'avoir dépatouillé l'esprit,
A+
Flo
Commenter la réponse de florenth
cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 30 mars 2008 à 14:57
0
Merci
Merci pour ta réponse.
      En somme, si je comprend bien, pas besoin de constructor si la nouvelle classe n'utilise que des "données membres" de type natifs déjà définis par Delphi (boolean, integer, string etc...) et à condition qu'on ne souhaite pas les initialiser autrement qu'à 0 (NIL, je crois).
Dans tous les autres cas, il faut d'abord appeler le constructeur ancètre (avec Inherited) puis le constructeur à coder.
JJT
Dans le fond, est-ce nuisible d'appeler, dans tous les cas, le constructeur ancètre ?

Merci beaucoup pour le dimanche studieux (bien que plusiveux)
   Pour tout dire, je suis en train de commencer à réaliser mes premiers composants pour "construire" un T.C.O. (Tableau de Contrôle Optique) pour un réseau de chemin de fer... 
Commenter la réponse de cs_PtitTrain
cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 30 mars 2008 à 15:28
0
Merci
Je déduis de ta réponse que je n'ai pas du dire trop d'incongruités (pour l'instant !..)
   Pour le TCO, comme je suis débutant Delphi, je me fixe pour l'instant des objectifs + que modestes ! (des composants cantons qui changeront de couleur si un train est présent et composants-aiguillages dont la bonne branche s'éclairera (avec un OnClick pour manoeuver l'aiguille.)).
Après, si je progresse bien, on verra..
Merci pour ton aide, si précieuse quand on commence..
JJT
J'espère que j'ai bien "accepté" la réponse.
Commenter la réponse de cs_PtitTrain
cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 31 mars 2008 à 11:44
0
Merci
"En effet, tu nous avais déjà parlé de ton projet de chemin de fer.
Cela risque d'être un très gros truc, n'hésites donc pas à créer plusieurs classes (une classe = une fonction)"

Comment entends-tu "une classe = une fonction" ?  pourrais-tu me donner une idée la-dessus ? (juste dans le principe, pour savoir si je comprend bien ce que tu veux dire..)
merci
JJT
Commenter la réponse de cs_PtitTrain
cs_PtitTrain 28 Messages postés mercredi 20 février 2008Date d'inscription 25 juillet 2011 Dernière intervention - 31 mars 2008 à 19:40
0
Merci
J'essaierai de sentir, au fur et à mesure de la progression du projet, ce dont tu me parles.
Peut-être qu'avec le temps, je progresserai dans ce sens !..
Merci pour tes bons conseils.
bien amicalement
JJT
Commenter la réponse de cs_PtitTrain

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.