Interface vs Classe Abstraite

Interface vs Classe Abstraite – Documentation Technique
Résumé : Les interfaces définissent des contrats sans logique métier, tandis que les classes abstraites permettent d’imposer des méthodes tout en centralisant du code commun.

📊 Tableau comparatif

Caractéristique Interface (IListe) Classe Abstraite (AListe)
Contient des méthodes abstraites
Contient du code (implémentation)
Déclare des propriétés avec valeur
Hérite d’une autre classe
Peut être héritée ⛔ (pas au sens OO)
Utilisable pour le polymorphisme
Utilité principale Définir un contrat Partager du code et forcer des méthodes

💡 À retenir

Interface : impose une structure sans aucune logique. Parfaite pour dire : « Je dois avoir telle méthode. »

Classe Abstraite : impose une structure et fournit des comportements par défaut. Elle peut contenir des propriétés, des méthodes concrètes, etc.

🧪 Exemples concrets en WinDev

Interface IListe

INTERFACE IListe
  PROCEDURE Initialiser()
  PROCEDURE Charger()
FIN

Classe abstraite AListe

CLASSE ABSTRAITE AListe
  PROCEDURE Initialiser() EST ABSTRAITE
  PROCEDURE Charger() EST ABSTRAITE

  PROCEDURE GetTailleListe()
    // Code commun à toutes les listes
    RENVOYER Liste..Occurrence
  FIN
FIN

✅ Conclusion

Tu peux choisir une interface (IListe) si tu veux simplement t’assurer qu’une classe propose certaines méthodes. Si tu veux aussi centraliser du code commun à toutes tes listes (chargement paresseux, comptage, initialisation par défaut), une classe abstraite (AListe) est plus puissante.