Objet: la théorie OK, mais la pratique? cherche méthodologie

glattering
Invité n'ayant pas de compte PHPfrance

26 janv. 2007, 13:08

Bonjour à tous!
Après plusieurs années, je me suis (re)mis au PHP (et MYSQL), mais je débute en orienté objet et après la lecture de nombreux tutoriaux, je me rends compte que quelque chose me manque afin de bien comprendre.
Je n'ai pas trouvé de méthodologie sur la conception objet! Du coup je m'y perds un peu.

Voilà où j'en suis:
- J'ai créé une classe mysqlbase avec comme mémthode connexion, déconnexion et exécuter une requête.
- J'ai une classe requete, avec un statut (effectuée, erreur etc) et le contenu de la requête, et une mémthode d'exécution de la requete (qui fait appel a la methode de mysqlbase)
- une classe resultat de la requete, avec des méthodes pour parcourir le resultat (ligne suivante, précédente, etc).

- une classe contact (je fais un annuaire), qui contient des champs classiques (nom, prenom etc)


déjà, à ce stade là, j'ai du mal à voir quels objets créer et quels objet peuvent être réunis en un seul. Requete et Resultat par ex. Je les ai séparé car je trouvais que sinon il y aurait trop de méthodes pour une seule classe et surtout des méthodes avec des buts différents, mais c'est plus du feeling qu'autre chose, alors ma question: y a t-il un moyen simple de bien repartir/définir les différentes classes?

Bon, avec ce mic mac, j'arrive a créé un contact, à me connecter à la base et l'ajouter, ou encore à récupérér la liste des contacts depuis la base, ça marche bien, au delà de l'aspect propre du code.

Une autre intérrogation: pour l'affichage.
Car pour l'instantl'affichage est une simple fonction.
Pour passer en objet intelligemment, quel est l'idée? comment faire?
Je créé une classe page? une classe menu? sous menu? et tableau?
pour les listes déroulante dans les formulaires, faut il pousser jusqu'à créer une classe liste, et puis par ex our avoir une liste des mois, créer une classe mois extends liste, avec ue variable contenant déjà tout le code html et une methode gethtml? ou alors un champ value un champ affichage etc.
Comme vous pouvez les voir, je suis un peu perdu à ce niveau là!

Si vous avez des liens définissants une méthodologie intelligente pour faire de l'objet en php, ou bien si vous avez des conseils, ou alors une méthodologie perso, je suis preneur!!

Encore merci d'avoir lu jusqu'au bout!

/glattering, des p'tites classes, des p'tites classes, toujours des p'tites classes...

Petit nouveau ! | 6 Messages

26 janv. 2007, 15:19

Alors je post ici parce que les réponses à ces questions m'interressent.

Et j'en profite pour donner mon avis en même temps.

Perso, j'ai moi même une classe mySql qui permet de me connecter à la base, d'exécuter les requêtes et défectuer les traiments relatif au résultat d'une requête (fetch_rows, num_rows,...).

Maintenant il est vrai qu'une méthodologie plus précise serait forte intéressante. J'ai entendu parler de UML (Unified Modeling Language) et design pattern, mais je vous avourai que les cours la dessus mon un peu échappé (Formation AFPA avec un formateur qui apprend UML en même temps qu'il vous l'enseigne c'est pas évident, évident).

Enfin voila, j'attend les réponses qui seront certainement très enrichissantes.

Eléphant du PHP | 120 Messages

26 janv. 2007, 19:13

avis personnel : pour utiliser correctement la poo, et avoir une méthodologie il faut impérativement passer par la conception. Maintenant il existe plurs méthodes et langages de conception UML en est un, et bien utilisé sert beacoup dans la programation. Mais je suis sur que tous les programmeurs préfèrent programmer intuitivement et pas trop se casser la tete à concevoir avant de programmer.

ViPHP
ViPHP | 1961 Messages

26 janv. 2007, 19:41

Bonsoir,
@DrumCode
Je ne sais pas qui est ton formateur AFPA, je suis passé dans l'un de leurs centres de formation et je ne dirait pas la même chose que toi.

Le souci, c'est que tu n'est plus à l'école.
Il te mettent en situation d'entreprise et une bonne partie du travail doit venir de toi (recherches, ect...) ce que je trouve fort intéressant et constructif.

Concernant la POO, le tout c'est de bien modéliser l'application.
Chacun a sa méthode (Merise, UML, ...), ce qui est sur c'est que sans modélisation... on va au casse p...s.

Une autre chose, ne tentez pas réinventer l'eau chaude (sauf si c'est pour des exercices).

Pour votre classe d'accès aux (et pas à) bases de données regarder la classe PDO si vous utilisez PHP 5, sinon regardez du coté de PEAR.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Petit nouveau ! | 6 Messages

26 janv. 2007, 19:50

J'était moi meme au centre de formation de dunkerque.

C'est vrai que pour tout ce qui est du reste les formateurs étaient largement compétent, et l'autoformation c'est bien, cependant passer une semaine compléte à écouter un gars qui n'est pas du tout sur de ce qu'il raconte et très démotivant. Mais bon en me replongant un peu dans la doc ou même sur le web je pense récupérer quelques notions quand même.

Enfin c'est pas le sujet.

Sinon oui je conseil Merise pour la modélisation, il est assez simple a prendre en main et permet dans sa version 11 (peut être avant mais je connais pas) de réaliser des Modèle Orienté Objet. Peut être une piste pour la compréhension de la conception objet.

Sur ce @Pluche

Eléphant du PHP | 217 Messages

27 janv. 2007, 12:08

Salut,
il y a trois éléments essentiels dans la conception objet :
1 / La modelisation
Il existe différentes approches de modélisation UML et UML2, Merise, etc..
Ces méthodes permettent d'identifier les caractéristiques des entités en définissant un modèle. Exemple :
une entité Vente (composée d'une date et d'une heure)
une entité Paiement (composé d'un montant)
Elle permettent aussi de modelisée la relation entre ces entités :
Une Vente a une relation avec un Paiement

Cela permet d'obtenir une vue d'ensemble de l'application et cela permettra de pouvoir modèliser les classes logiciels.

2/ Attribution des responsabilités
Il s'agit la de déterminer les responsabilités de chaque objet. Exemple:
une Vente à la reponsabilité de connaitre son montant.
Il existe une série de pattern permettant de définir les responsabilités et ainsi aider à penser objet : les patterns GRASP

3/ Mise en oeuvre des classes logiciels
Programmation des composant logiciels en implémentant différents pattern reconnus, patterns GOF par exemple.

Quelques liens utilies :
UML
pattern GRASP
pattern logiciels ou pour php (anglais) : 5 motif pour php