Bonjour,
J'ai parcouru le forum, lu les tutos sur la POO mais je ne parviens pas à mes fins![]()
J'ai créé un classe TTable, dérivée de TImage.
Voici le code :
Ensuite, viens 2 classes enfants à TTable qui TEntite et TRelation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 unit Table; interface uses Champs,QExtCtrls,Dialogs,SysUtils; type TabListeChamps = array of TChamps; type TTable=class(TImage) private nom:string; lesChamps:TabListeChamps; nbElements:integer; indiceCourant:integer; public procedure setNom(unNom:string); function getNom:string; procedure AddField(leChamps:TChamps); procedure RemoveLastField; procedure RemoveAField(intitule:string); procedure RemoveAllFields; function ListFields:TabListeChamps; procedure DrawTable;virtual;abstract; constructor Create; end; implementation constructor TTable.Create; begin nbElements:=0; indiceCourant:=0; end; procedure TTable.RemoveAllFields; begin nbElements:=0; SetLength(lesChamps,nbElements); end; procedure TTable.RemoveAField(intitule:string); var i,j:integer; trouver:boolean; begin i:=0; trouver:=false; if (nbElements<>0) then begin repeat //if (i<high(lesChamps)) then //i:=i+1; if (lesChamps[i].getIntitule = intitule) then trouver:=true else i:=i+1; until ((trouver) or (i=high(lesChamps)+1)); if (trouver) then begin for j:=i to high(lesChamps)-1 do lesChamps[i]:=lesChamps[i+1]; nbElements:=nbElements-1; SetLength(lesChamps,nbElements); end else ShowMessage('L''élément à supprimer n''existe pas'); end else ShowMessage('Aucun champs présent pour cette entité'); end; function TTable.ListFields:TabListeChamps; begin result:=lesChamps; end; end.
Voici la déclaration d'une d'entre elles :
Je ne sais pas comment déclarer le create pour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 unit Entite; interface uses QExtCtrls,Dialogs,SysUtils,Table; type TEntite=class(TTable) public procedure DrawTable;override; end; implementation uses UPrincipale; procedure TEntite.DrawTable; begin ShowMessage('Essai de la méthode'); end; end.
- dans la classe TTable, je puisse initialiser des valeurs
- dans mes classes dérivée de TTable, pourvoir avoir le create de la classe TTable tout en y ajoutant du code supplémentaire.
J'espère que vous pourrai m'éclairer car entre override, overload, inherited etc ... je commence a m'emmélé les pinceaux :
Si je comprends bien :
- override surcharge une méthode avec des paramètres supplémentaires
- overload permet de redéfinir entièrement une méthode (cela veut-il dire que l'on reprends une méthode et qu'on "la vide" ?)
- inherited permet d'appelant une méthode d'un parent.
Merci de votre aide
Cordialement Ero-Sennin
Partager