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
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
A voir également:
- Classes abtraites
- Comment sont classés les amis sur facebook - Forum Facebook
- C'est quoi les jeux classés sur plato - Forum jeux en ligne
- Mysql error in file: /engine/classes/mysql.php at line 52 ✓ - Forum Réseaux sociaux
- Listes d'amis Facebook : créer et utiliser les filtres - Guide
- Openjdk 64-bit server vm warning: sharing is only supported for boot loader classes because bootstrap classpath has been appended - Forum Créer un site
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
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 !
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 !
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
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. ;)
Je te remercie c'est déjà plus claire dit de cette façon. ;)