Besoin d'aide pour comprendre

Rechercher

Besoin d'aide pour comprendre

Par lvarez  -  3 reponses  -  Le 08/09/2008 00:05  -  Editer  - 

Bonjour Messieurs,

J'aimerais savois à quoi sert un clas que l'on déclare abstraite, je m'explique :

Imaginons qu'une class abstraite soit crée par exemple class database et que les classes filles par exemple soit class mysql ou mysqli, sybase, oracle etc...

j'ai de la peine à comprendre, merci pour votre aide ...

 

Réponses apportées à cette discussion

Par Emacs  -  Le 09/09/2008 18:28  -  Haut de page  - 

Bonjour Ivarez et bienvenue sur Apprendre-PHP,

Il y'a plusieurs intérêts à utiliser les classes abstraites :

 

  • Déclarer des classes qui ne pourront pas être instanciées mais uniquement dérivées,
  • Profiter de l'héritage. Par exemple, dans le cas d'une classe abstraite Database et de classes filles concrètes MySQL, Oracle, PgSQL..., cela permet de placer dans Database toutes les propriétés et méthodes communes aux bases de données telles que le DSN, les méthodes query(), fetch()...
  • Faciliter la maintenance du code en factorisant les parties de codes communes aux classes filles...
 
Par Cyrano  -  Le 03/10/2008 07:05  -  Haut de page  - 

Salut,

je vais quand même ajouter un détail en gardant l'exemple des accès aux bases de données.

 

Si tu développes une page perso, même un peu élaborée, il y a peu de chances pour que tu utilises plusieurs types de bases, ni même plusieurs bases d'un même type d'ailleurs. Dans ce cas, il est vrai que l'intérêt d'une classe abstraite est beaucoup moins évident.

Maintenant, si tu développes une application professionnelle qui devra se connecter à différent types de bases, c'est une autre paire de manches. Suppose une application de gestion pour une entreprise qui stocke des données pour une partie dans une base MySQL et une autre partie dans une base Oracle, et puis, soyons fous, une petite partie sur une base MS Access. Là, on va très rapidement réaliser que la classe abstraite a tout son intérêt : tu auras trois classes concrètes, une pour MySQL, l'autre pour Oracle et la dernière pour ODBC permettant de te connecter sur MS-Access, mais ces trois ont des méthodes communes. Alors au lieu d'avoir pour certaines méthodes le même code répété dans les trois classes, on met ce code commun dans une classe abstraite et on fait hériter les classes concrètes. Les appels de méthodes seront les mêmes quelle que soit la base ciblée.Mais tu instancies la classe seon le SGBD visé. Pas de soucis de nom de méthodes, ce sont les mêmes pour les trois puisqu'elles héritent de la classe abstraite

Alors ce cas de figure concerne l'entreprise qui fait son développement en interne. Maintenant, imagine que tu fasses du développement au sein d'une société de services pour toutes sortes de clients. Avoir des briques logicielles toutes prêtes sera quand même plus pratique que devoir recommencer à chaque fois à écrire du code. L'accès aux données étant tout de même un élément récurent dans la plupart des développements, il y a un grand intérêt à utiliser ce système de classe abstraite et selon le client, tu utiliseras telle ou telle classe concrète. Temps de développement ? Pratiquement nul puisque tu le fais une fois par SGBD et ensuite tu peux l'utiliser pour chacun des clients pour lesquels tu en as besoin. Nouveau client avec un SGBD jamais utilisé jusqu'à ce jour ? Pas deproblème : tu construis une nouvelle classe concrète qui hérite de la classe abstraite existante, ça vient de couper en deux ton temps de développement.

Et comme le dit eMacs, au niveau maintenance, tu vas économiser du temps. Si tu découvres un bug dans le code de ta classe abstraite, la correction va affecter toutes les classes filles. C'est quand même plus rationnel que devoir ouvrir plein de classes pour reporter la correction dans chaque classe individuellement.

En conclusion, c'est de la méthodologie de développement professionnel qui, pour un amateur développant une page perso pour ses loisirs, ne présente pas vraiment d'intérêt.

 
Par lvarez  -  Le 20/10/2008 12:40  -  Haut de page  - 

Hello à tous,

En tout cas merci pour cette explication, je vois plus claire maintenant, oui j'aimerais développé une application multiplateforme.

résolus !

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |