Classes abtraites

Résolu/Fermé
nickleus Messages postés 374 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 18 juin 2011 - 9 juin 2009 à 16:58
nickleus Messages postés 374 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 18 juin 2011 - 9 juin 2009 à 18:21
Bonjour à tous,

Est ce que quelqu'un serait m'expliquer l'utilité des classes abstraites ? SVP

J'ai lu des tutos, mais j'aimerais bien comprendre avec un cas concret.

Et dans quel cas il faut les utiliser car ça ressemble un peu au interfaces. Non ?

merci d'avance de vos éclaircissements.

2 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
9 juin 2009 à 18:07
salut,

en gros elles servent à la même chose, on peut dire que ce sont des patrons d'objets.
dans la classe abstraite tu déclares des méthodes sans les implémenter, je crois bien que tu n'es pas obligée d'implémenter les méthodes abstraites dans la classe fille (à vérifier).
cette classe n'est pas instanciable.

pour l'interface, tu déclares des méthodes qui doivent être obligatoirement déclarées dans la classe fille, par ailleurs tu implémentes une interface, tu n'en hérites pas donc une classe peut implémenter plusieurs interfaces (impossible pour une classe abstraite).

exemple :
un object d'accès aux données.
tu peux écrire une classe abstraite qui déclare quatre méthodes Create, Read, Update et Delete (CRUD).
ensuite tu en hérites pour écrire les classes propres aux différentes sources de données (MySQL, XML…) et par exemple dans le constructeur de chaque classe tu instancies les ressources nécessaires.

donc quelque soit ta source de données, tu seras sûr de retrouver les même méthodes (CRUD).
par ailleurs, tu es sûr de ne pas utiliser la classe parent par erreur car elle n'est pas instanciable (et il vaut mieux car dans la classe abstraite tu ne crées pas de ressources…).

mais tu peux raisonner autrement.
tu pourrais avoir besoin d'ajouter une ou l'autre des fonction CRUD selon le cas.
imaginons que tu veuilles une classe pour MySQL qui fasse tout (CRUD) ; une autre classe pour XML (pour les flux par exemple) ou tu auras seulement besoin d'écrire (create) et enfin une classe pour des fichiers INI qui devra seulement lire et écrire des paramètres (R et U).
dans ce cas tu pourrais créer une interface pour chaque fonction CRUD et selon le besoin tu implémentes les interfaces nécessaires.

voilà ce que je pouvais t'en dire !
1
nickleus Messages postés 374 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 18 juin 2011 5
9 juin 2009 à 18:21
voilà ce que je pouvais t'en dire !

Je te remercie c'est déjà plus claire dit de cette façon. ;)
0