Programmation orientée objet [Résolu]

hysteria74
Messages postés
20
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
24 juin 2005
- 7 juin 2005 à 16:54 - Dernière réponse : florenth
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Dernière intervention
17 août 2008
- 8 juin 2005 à 12:05
Bonjour,
J'aurais voulu savoir comment on déclare un constructeur puis un destructeur dans une application car je n'y arrive pas, j'aimerais créer mon objet puis ensuite le détruire.
Merci d'avance.
Mon code est le suivant :

type
TDBExportation = class(TObject)

public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;

{ ----------------------Variables globales---------------------- }
var
FrmPresentation : TFrmPresentation;

constructor TFrmPresentation.Create(AOwner: TComponent);
begin
inherited;
FrmPresentation := TFrmPresentation.Create(Self);
end;

destructor TFrmPresentation.Destroy;
begin
FrmPresentation.Free;
inherited;
end;
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
florenth
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Dernière intervention
17 août 2008
- 7 juin 2005 à 17:19
3
Merci
Salut,

Aïe, aïe, aïe.

Tu nous poste un bout d'une déclaration de classe ( TDBExportation ) et
un bout de l'implémentation de la classe TFrmPresentation (qui est ta
fiche).

Il y a comme un non-sens mais passons.



Pour ton bout de code de la méthode Create, j'ai trois choses à redire:

- Inherited; Cette ligne de code appelle le constructeur hérité de
TFrmPresentation, en l'occurence TForm j'imagine, qui appellera le
constructeur hérité de TForm, TCustomFrom et ainsi de suite jusqu'a
TObject.

Chaque constructeur se charge d'initialiser (et/ou d'allouer) la
mémoire qu'il aura besoin en plus de celle fournie par la classe
ancètre.

Ensuite, chaque destructeur se charge de finaliser de libérer cette memoire précédemment allouée dans les méthodes de la classe.

Tu n'as donc pas besoin de creer ta classe en mettant la ligne FrmPresentation := TFrmPresentation.Create(Self);,



- FrmPresentation := TFrmPresentation.Create(Self); que
fait cette ligne ?? Elle appele le constructeur de TFrmPresentation
pour qu'il crée une instance de cette classe. Dans le cas présent, le
constructeur s'autoappelera indéfinimant.



- Toujours cette ligne de code. Delphi, en tant qu'outil R.A.D. (Rapid
Application Developpment) se charge d'écrire lui-même certains bouts de
code, comme par exemple le comstructeur de chaque Form et son
destructeur. C'est lui aussi qui gère les propriétés que l'on modifie
dans l'inspecteur d'objet. (voir les ficiers .dfm qui contiennent
toutes ces propriétés).

Ce n'est donc pas la peine, à toi, en tant que développeur Delphi, de
t'occuper de la création de tes fiches. Si tu veux intercepter le
constructeur, écris une procédure en réponse à l'evenement OnCreate de
ta fiche et une autre à l'évenement OnDestroy.



Voiula, j'espère avoir été clair sur cette notion de classe qui n'est pas si évidente que cela.

Va visiter ce site, très enrichissant:

http://fbeaulieu.developpez.com/guide/ chapitre X: les objets.



@ ++ Florent


Si tu ne te plantes pas ......
tu ne poussera jamais

Merci florenth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de florenth
hysteria74
Messages postés
20
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
24 juin 2005
- 8 juin 2005 à 09:04
0
Merci
salut, tu as raison je me suis trompé c'est bien

Type
TFrmPresentation = class(TForm)
Je me suis embrouillé car j'ai plusieurs unitées, a propos de ca d'ailleur, est ce que je peux créer un constructeur et un destructeur pour les autres unitées, d'après ce que tu me dis je ne suis pas obligé pour ma form mais je peux pour les autres unitées qui sont liées avec...
Commenter la réponse de hysteria74
hysteria74
Messages postés
20
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
24 juin 2005
- 8 juin 2005 à 09:39
0
Merci
Pour etre plus précis j'ai une unité qui s'appelle UnitEntites :
unit UnitEntites;
type
{ Création de la classe TDBEntites }
TDBEntites = class(TObject)

public
{ Déclarations publiques }
function Lister(Appli, Table, ClusterRank: Integer) : TClientDataSet;
function ModifierLigne(Appli, Table, ClusterRank, LineRank, InfoColumnRank: Integer; InfoValue: WideString) : Boolean;
function SupprimerLigne(Appli, Table, ClusterRank, LineRank, NbLines: Integer) : Boolean;
end;

Dans ma form TFrmPresentation, est ce que c'est bien de mettre ce bout de code pour créer l'instance de Entites :

procedure TFrmPresentation.FormCreate(Sender: TObject);
begin
// Création de l'instance de Entites
Entites:= TDBEntites.Create;
// Appelle de la fonction OuvertureCatalogue de TFrmPresentation
FrmPresentation.OuvertureCatalogue;
end;

procedure TFrmPresentation.FormDestroy(Sender: TObject);
begin
// Libérer l'espace alloué
Entites.Free;
end;
Commenter la réponse de hysteria74
florenth
Messages postés
1105
Date d'inscription
dimanche 1 août 2004
Dernière intervention
17 août 2008
- 8 juin 2005 à 12:05
0
Merci
Oui, c'est très bien de créer sa classe dans le OnCreate puis de la libérer dans le OnDestroy.



Bonne suite ...

Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
Commenter la réponse de florenth

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.