mon but est d'exécuter ce programme ci:
Mais je n'ai accès qu'au constructeur Create sans pouvoir entrer les arguments.
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 program Abstrait; {$APPTYPE CONSOLE} uses SysUtils, Affichable in 'Affichable.pas', Entier in 'Entier.pas', Flottant in 'Flottant.pas'; var taAffiche: array of TAffichable; i: integer; begin SetLength(taAffiche, 3); taAffiche[0] := TAffichable.Create(3); //constructeur TEntier taAffiche[1] := TAffichable.Create(3.5); //constructeur TFlottant taAffiche[2] := TAffichable.Create(2); //constructeur TEntier for i := 0 to high(taAffiche) do taAffiche[i].Affiche; // procédure de TFlottant ou TEntier end.
Voici mes 3 classes:
CLASSE TAffichable
Classe TEntier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 unit Affichable; interface type TAffichable = class(TObject) public procedure Affiche; virtual; abstract; end; implementation { TAffichable } end.
CLASSE TFlottant
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 unit Entier; interface uses Affichable; type TEntier = class(TAffichable) private valeur: integer; public constructor Create(n: integer); procedure Affiche; override; //Redéfinition end; implementation { TEntier } procedure TEntier.Affiche; begin inherited; writeln('Je suis un entier de valeur + valeur'); end; constructor TEntier.Create(n: integer); begin valeur := n; end; end.
J'ai voulu rajouter un constructeur dans ma classe abstraite pour pouvoir le redéfinir ou le surcharger dans les classes dérivées mais rien de concluant.
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 unit Flottant; interface uses Affichable; type TFlottant = class(TAffichable) private valeur: real; public constructor Create(x: real); procedure Affiche; override; //Redéfinition end; implementation { TFlottant } procedure TFlottant.Affiche; begin inherited; writeln('Je suis un flottant de valeur + valeur'); end; constructor TFlottant.Create(x: real); begin valeur := x; end; end.
Merci d'avançe !!
Partager