Bonjour,
Je suis présentement entrain de développer un système de documentation. Je me suis donc créé une classe de base TDocument avec des variables membres et des méthodes publiques. Jusque là, tout va.
Pour un certain traitement, j'avais besoin d'implémenter la même méthode dans mes sous-classes. J'ai donc décidé de créer une méthode vrituelle et abstraite dans ma classe de base.
function MaFonction(...): resultat; virtual; abtract;
Encore une fois, tout va bien.
Lorsque je crée des documents, je les stocke dans une TObjectList. Ensuite, pour appeler ma fonction abstraite, au lieu d'avoir à faire des vérifications sur le type d'objet avant de faire un transtypage, je fais directement ceci:
Valeur := TDocument(ObjectList.Items[X]).MaFonction;
En clair, j'appelle ma fonction implémentée de la sous-classe en transtypant directement avec la classe de base. Est-ce une façon correcte, ou si l'on veut légale? Pour l'instant, ça fonctionne bien, mais j'aimerais savoir si cela me limitera plus tard.
Dernière question, je croyais qu'une classe contenant des méthodes abstraites ne pouvait pas être instanciée? Or, je peux instancier un objet de type TDocument et appeler les méthodes publiques. Évidemment, j'ai l'Abstract error si j'essai d'appeler ma méthode abstraite.
Merci de votre aide!
Partager