Aller au contenu

Classes, et Programmation Orienté Objet en PHP...


Fanou

Sujets conseillés

Bonjour le Hub...

Depuis quelques temps je m'intéresse aux classes et donc(si j'ai bien compris) à la programmation orienté objet...

J'ai cherché des exemples afin de bien assimiler le truc... malheureusement rien qui ne me convienne réellement...

J'ai vu que sur le Hub undébut de tuto avait été fait, mais malheureusement jamais terminé. Donc impossible de voir le réel avantage de programmer de la sorte.

On dit que cela permet de pouvoir réutiliser son code dans d'autres applications, mais c'est déjà ce que je fais avec mes fonctions. J'imagine donc qu'il doit y avoir un autre intérêt... mais lequel ?!

Vous comprendrez qu'en me posant ce genre de questions, je n'ai certainement pas compris ces classes PHP. Alors quels sont les meilleurs sites qui me permettront de saisir cela ?

Merci par avance de votre aide...

Fanou

Lien vers le commentaire
Partager sur d’autres sites

L'interet n'est pas uniquement la reutilisabilite, mais aussi les heritages.

Prenons un exemple, sur lequel j'ai bosse il y a quelques mois : la gestion des albums de photos.

J'ai créé une classe qui se nome Album et dont les méthodes prennent en charge tout ce que faire un album "ajouter une photo", "ajouter un commentaire", "créer l'imagette" et "generer une page HTML", ... Jusque la, rien de complique.

Ces albums sont utilises dans 2 sites distinctes : un qui gere des mariages, un autre qui gere des club photo.

Pour simplifier, on dira que la difference se situe au niveau de la gestion du nombre de photos autorisees :

- mariage : en fonction de l'espace disque que mon client paye

- club photo : d'apres les regles du club, par exemple "Pas plus de 10 photos par galeries de membres".

On voit donc que ma fonction "ajouter une photo" dépend donc du type de site pour savoir si elle a ou pas le droit d'ajouter une nouvelle photo. Alors plutot que de rajouter des if() ou des switch/case pour gerer les differents types de sites et de faire des testes de non regression a n'en pas finir a chaque modif, l'heritage vient a notre aide :

Je créer 2 classe "Mariage" et "Club" qui heritent directement de Album (en clair, elles reprennent toutes les possibilite de Album). Ensuite, je ne fais que surcharger (redefinir le fonctionnement) de "Ajouter une photo".

Pour Mariage, ca donne :

Ajouter_photo(){

Est-ce que la taille de l'album < a la taille payee ?

"Ok j'ajoute la photo"

parent::Ajouter_photo();

sinon

"Desole : Je ne peux pas ajouter de nouvelle photo"

}

Alors que pour Club, ca donne :

Ajouter_photo(){

Est-ce qu'il y a moins de 10 photos ?

"Ok j'ajoute la photo"

parent::Ajouter_photo();

sinon

"Desole : Je ne peux pas ajouter de nouvelle photo"

}

En plus, le parent::Ajouter_photo(); indique que j'appelle la fonction originale d'ajout de photo, qui se trouve dans Album. Bref, Mariage et Club ne font que tester si l'ajout est possible.

Je parlai aussi des modif : vu que chaque classe est vraiment separee et ne fait que ce pourquoi elle est faite, je n'ai pas a faire de gros testes lorsqu'une classe evolue. Si c'est Mariage ou Club, je n'ai meme rien a faire vu qu'elles sont en bas des heritages. Pour Album, c'est presque pareil tant que je garde une bonne compatibilite ascendantes. Et en plus, si j'ameliore la gestion des albums de mariage, ceux des club en beneficient de maniere transparente.

J'ai passe pres de 4 mois a créer le site de mariage (comme hobit, j'ai un boulo a cote), car j'avais tout a faire. Mais pour le site des clubs photos, en 15 jours s'etait fait, et encore, j'ai passer plus de temps a etablir les besoins et a faire la charte graphique qu'a coder.

Voila, j'espere que ca t'eclairera.

Lolo

PS: J'ai commence l'objet avec le C++ qui est beaucoup plus puissant que PHP. En particulier, au niveau des classes abstraites et surtout des heritages multiples qui me manquent beaucoup en PHP.

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup pour cette réponse !...

Avec un tel exemple j'imagine et comprends mieux le principe d'héritage et donc l'avantage des classes...

Cependant, aurai-tu un site allant plus loin encore ?...

Car la plupart des scripts opensource que je trouve utilisent les classes. J'imagine que pour le travail collaboratif il n'y a rien de mieux...

Bref j'aimerai vraiment maitriser cela.

Merci encore,

Fanou

Lien vers le commentaire
Partager sur d’autres sites

Je pense que la démarche idéale serait de prendre connaissance des différents grands principes de la POO indépendamment du langage utilisé dans un premier temps et trouver quelques exemples simples.

Ensuite évidemment rien de mieux que de mettre les mains dans le camboui.

En orienté objet, la phase d'analyse est encore plus primordiale car utiliser des classes à tout va car c'et à la mode c'est bien mais cela ne veut pas forcément dire que l'on programme en objet ... :)

Un petit lien d'introduction OO trouvé sur google

http://www.iutbayonne.univ-pau.fr/~roose/p...urs/poo/poo.pdf

gouter à la POO c'est ne plus pouvoir s'en passer ;)

Modifié par astrofiles
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...