|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Mehdi Xxxx Inscription : novembre 2009 Messages : 32 ![]() |
bonsoir
Je débute dans la programmation orienté objet, et je trouve quelques problèmes dans l'utilité des attributs ! Prenons comme exemple une classe MEMBRE. Les caracteristiques d'un membre sont clairs , son id, pseudo,email... Code :
merci d'avance |
||
|
|
00
|
|
|
#2 | ||||||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
Code :
Code :
Code :
A quoi bon rajouter des _MEMBRE aux attributs vu que ces attributs appartiennent déjà à la classe Membre, comme info ça fait doublon à mon sens. Puis la "casse" a bien souvent une signification, disons qu'il y a des conventions ou des règles d'écritures, les respecter un minimum rendra le code plus compréhensible, plus intuitif. Donc par convention les constantes doivent être en majuscules (MA_CONSTANTE). Or, $_id et $_pseudo ne sont pas des constantes, il n'y a pas a les définir en majuscule, ça portera à confusion. Aussi, et toujours par convention, tout attribut private (privé) doit être précédé d'un _ (underscore), là aussi c'est pour rendre plus intuitif son code. Mais les conventions sont juste des conventions, on est pas obligé de les respecter, on sera d'accord. Mise à part cet aparté, si on crée une classe comme celle ci, une classe membre, le but final il me semble c'est de pourvoir accéder à ces attributs, comme tout banalement les afficher coté interface. On verrait bien tout naturellement des getter tels que : Membre::getId(), Membre::getPseudo(), etc ... Coté utilisation : Code :
Ici, on prévoit que cette classe (constructeur) aura un identifiant en paramètre, ce qui permettra de récupérer/initialiser les informations (attributs) du membre en question. Par la suite, on peu tout imaginer. Disons qu'en disant les choses autrement : Si cette classe Membre n'a pas d'attributs id, pseudo, etc ... quelle serait sont but, que manipulerait elle comme données alors ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||||||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Mehdi Xxxx Inscription : novembre 2009 Messages : 32 ![]() |
par effet de vitesse, j'ai mis le dollar devant le type et non devant l'attribut !
a part ça, si j'ai bien compris, je crois que les attributs (obligatoires) d'une class ressemblent aux paramètres d'une fonction... par exemple une class de traduction de texte à besoin de 3 attributs obligatoires : $_lang_depart | $_lang_final | $_text ainsi que le $_resultat (au choix). $traduction = new Traduction("FR","ANG","Bonjour"); echo $traduction->getResultat(); //Hello ou une classe Commande à besoin de 2 attributs obligatoires : produit et quantité . presque vous pensez ? |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Citation:
Non car il n'y a aucune obligation (nulle part) que $_lang_depart | $_lang_final | $_text soient des attributs. Disons que si on s'arrête à ton exemple, on peu supposer (et simplement supposer) qu'il sera nécessaire de les déclarer. Oui dans le sens ou cette classe Traduction à un constructeur qui attends 3 paramètres (ou arguments) obligatoires. C'est juste les arguments qui sont obligatoire, ça n'a rien avoir avec les attributs, vois tu ? Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Mehdi Xxxx Inscription : novembre 2009 Messages : 32 ![]() |
et si c'est comme ça, je vois pas l'utilité des attributs.
on peut créer une classe avec juste des fonctions et des paramètres. Pouvez-vous me montrer un autre exemple dont les attributs sont indispensables! merci |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Citation:
Dans d'autres cas, tout autre besoin, donc tout autre concept la classe n'aura pas besoin de l'ombre d'un attribut, ça existe. Il faut percevoir une classe dans son ensemble et surtout pas s'arrêter au constructeur ou 1 ou 2 méthodes. Ta classe Membre était un bon exemple où les attributs seraient obligatoires, et l'exemple que j'avais mis avec le Membre::getPseudo() en était un aussi. Sans cette propriété $_pseudo non seulement cette méthode getPseudo() aurait aucun sens, mais aussi il y aurait une erreur. Dans mon exemple getPseudo() renvoie $_pseudo, c'était 100% explicite il me semble, non ? Mais franchement, il n'y pas à poser cette question si les attributs sont obligatoires ou pas, ça n'a pratiquement pas de sens, c'est un détail. Tout est une question de concept, et c'est ça qu'il faut comprendre. Les concept Objets ne te sont pas encore acquis si tu te pose ce genre de questions. Mais on pourra difficilement t'expliquer tous les rouages de la POO comme ça sur un forum, c'est mission impossible à mon sens. On risque d'y passer des semaines entières ... pour finalement évoquer des aspects qui se trouvent certainement ailleurs qui plus est de bien meilleurs qualité. Le mieux, et ce qui me parais presque évident, c'est qu'il te faut un bouquin (sinon plusieurs) sur la POO, et prospecter les divers tutos sur le Net pour acquérir au moins les bases. Disons qu'il te faut de vrai support, et non pas les élucubration des gugus dans mon genre. Tu apprendras plus vite, et bien mieux, sans aucun doute. A la suite de ça, tu te rendras compte par toi même que tout ça n'est qu'un détail. Le plus important n'est pas là, l'intérêt de l'Objet est ailleurs.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Mehdi Xxxx Inscription : novembre 2009 Messages : 32 ![]() |
Merci pour ces explications, j'essayerais de chercher des tutos ou des cours mêmes s'ils sont sont rares.
je croix qu'avec la pratique je finirais par comprendre merci encore |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com