Classe et méthode abstraites

Signaler
Messages postés
90
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
j'utilise une classe abtraite TclassA qui contient un certains nombres d'attributs.
Je définis n classe de type TclassB qui héritent de TclassA.

J'aimerai signaler que toutes les classes de type TclassB doivent obligatoirement avoir une méthode toto.

J'ai donc défini une procédure toto de type virtual et abstract dans la classA.
A la compilation, si je ne déclare pas procedure toto dans la classB, le compilateur ne dit rien.

Est-ce que ma façon de faire est juste?

Merci

type
  TClassA =  class abstract(Tobject)
    public
       procedure toto();  virtual; abstract;
  end;


  TCLassB = class(TclassA)
    public
      procedure toto(); override;
  end;

4 réponses

Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Salut,

Tu peux aussi utiliser des interfaces pour faire celà.
Enlève le mot-clé abstract pour ta classe et tu auras bien le bon avertissement ;).

j!nH
Messages postés
90
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
24 avril 2008

si j'enlève le mot-clé abstract à ma classe TclassA et que j'oublie de déclarer la procédure toto dans la classeB, la compilation  se déroule sans problème.

J'aimerais que lors de la compilation avoir une erreur me signalant que la classeB doit possèder la procédure toto.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
essai sans mettre le virtual. (pas testé)

(virtual indique une methode existant mais pouvant etre redefinit)
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
"J'aimerais que lors de la compilation avoir une erreur me signalant que la classeB doit possèder la procédure toto."

Je proteste !
La classe B possède bien la méthode toto. Mais elle ne l'implémente pas, nuance...

Pourquoi le compilateur renverrait-il une erreur alors les principes de la POO sont respectés ?
En effet, rien n'oblige à implémenter une méthode dans le premier descendant d'une classe. C'est surtout une question de discipline dans l'écriture d'une hiérarchie de classes qui nous pousse à implémenter dès le premier niveau.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.