IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] [AVIS] L'utilité des classes


Sujet :

Langage PHP

  1. #21
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Points : 76
    Points
    76
    Par défaut
    Heu... le polymorphisme, ce n'est pas plutot lorsqu'une fonction peut prendre différent type de paramètres et avoir un comportement différent celon le type de ces paramètres ? (valable en Java mais pas en PHP)

    Ou bien ca a encore un autre nom ?

  2. #22
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    En effet, tu as tout à fait raison. Mais je le vois plutot d'un point de vue plus abstrait :
    Le polymorphisme est le concept idéal pour réaliser une variation du comportement des objets en fonction de leur type.
    ou
    Utiliser le polymorphisme pour implémenter les variation de comportement en fonction de la classe.
    ou encore
    http://c2.com/cgi/wiki?PolyMorphism
    Same interface, different implementation. Substitutability.

  3. #23
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    la poo est vraiment interressante pour une appli importante.
    Ca te permet de dissocier le code metier et l afichage, encore plus si tu utilise un gestionnaire de template comme smarty.

    Ca te permet aussi de reutiliser du code quand tu arive a faire du generique avec un peu de pratique.

    Puis en te mettant a uml, tu modelise bien ton appli, tu fais tes zolis diagrammes et tu peux deja générer des bouts de code.

  4. #24
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par Moloc'h
    Je me méfie de la programmation objet lorsqu'il s'agit de PHP. Beaucoup trop de "développeur PHP" font de l'objet pour l'objet, or il vaut mieux un site 100% procédural mais bien organisé qu'un site objet mal foutu.

    Lorsque l'on veut faire un site en OO, il faut déjà réfléchir à une architecture global, plutôt que ce qui se fait dans la plupart du temps : "Ben ya ka transformer les fonctions en class et pis c'est tout". (dixit un de mes stagiaires).
    600% d'accord. Je suis désolé de l'avouer, mais je trouve l'objet tellement beau que j'ai envie d'en faire
    Merci à tous pour votre débat "philosophique", je lis les documents et m'informe

  5. #25
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    Faire de l'objet pour la beauté de la chose, ou par challenge intellectuel, ça me va.

  6. #26
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Il y a plusieurs formes de polymorphismes qui techniquement sont fondamentalement différents.
    polymorphisme paramètrique, polymorphisme d'héritage, etc.

  7. #27
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut
    Citation Envoyé par Moloc'h
    Faire de l'objet pour la beauté de la chose, ou par challenge intellectuel, ça me va.
    * se sent rassuré * Et oui vive la prise de tête gratuite mais qui nous fait avancer ^^ Bon courage Anduriel pour l'apprentissage ; tu verras pour les bases c'est pas dur

  8. #28
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    toute manière une fois que tu t y es mis t es foutu, tu raisonne objet tout le temps et du coup meme quand tu fais du procedural tu gardes une conception objet en distribuant tout et des fois tu te dis "#### si seulement j avais fais une classe je pourrais faire ca" !
    tu te fais des pseudos frames en te disant que ton smarty sera trop lourd :d

  9. #29
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 130
    Points
    9 130
    Par défaut
    Je vais donner un petit exemple

    il y a quelques années je me suis écrit une classe pour faire des SELECT sur MySQL
    bref une connexion, une requête et toutes les methodes qui permetent de naviguer dans le résultat (comme une collection)

    cette petite classe je l'ai reprise telle quelle. pour d'autre projets.
    je n'avais rien conçu de précis juste répondu à un besoin qui reveniat souvent.

    puis pour un projet j'ai eu besoin de quelque chose de plus précis.
    j'ai pris ma classe et je l'ai découpé en Select et Base
    une prenant en charge la connexion et l'autre la selection.

    j'ai ajouté une classe Table qui n'était qu'un Select * sur une table.

    bref après quelques réutilisation j'ai ajouté des methode à table pour faire
    de insert

    mon but était de pouvoir écrire une classe table permetannt de naviguer dans une table d'ajouteur ou modifier des objets dans la table sans avoir à écrire de SQL.

    et voilà qu'il est décidé de changer de base nous sommes passé à PostGreSQL
    j'ai mis 1/2 journé pour dupliquer mes classe MySQl et en faire une version PostGreSQL

    tout ça en moins d'un an au fil des besoins succéssif.

    aujourd'hui soit moins de 2 ans après la première version j'ai un systeme qui me permet de travailler avec une base de données sans faire de SQL en utilisant un Mapping Objet table
    la notion de query à été séparé de celle du Select la notion de vue est apparue. et ce en PostGreSQL et MySQL

    j'héritage, le polymorphisme est utilisé à fond.

    je pourais dire qu'on peut faire ce genre de chose en Fonctionnel mais je ne suis pas sur que j'évolution soit aussi souple.

    par exemple dans c'est ensemble de classes lorsque j'ai séparré la notion de query de cette de select j'ai repris les nouvelles je les ai posé dans les dossiers des vielle application et ni vu ni connu tout fonctionnait.

    A+JYT

  10. #30
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par Mr N.
    J'appelle généralement les fonctions d'une classe méthodes...
    pas tout a fait d'accord, pour moi une méthode est une fonction ne renvoyant pas de valeur (void), mais bon c'est du chipotage.... ;-)

  11. #31
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben en uml on appel ca des methodes, y a pas de notions de fonctions

  12. #32
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    Citation Envoyé par siddh
    ben en uml on appel ca des methodes, y a pas de notions de fonctions
    oui je suis du même avis, le nom "méthode" fait parti du vocabulaire d'UML et donc par extention de la programmation objet
    quand j'ai dit que la classe n'est qu'une suite de fonctions, je disais un peu ça pour taquiner les puristes de l'objet en me mettant du coté d'un nouvel arrivant qui voit du code de classe remplis du mot clé "function"

  13. #33
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    j avoue que dans la pratique je dis aussi bien methode que fonction

  14. #34
    Inscrit Avatar de sanosuke85
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 206
    Points : 179
    Points
    179
    Par défaut
    Citation Envoyé par mathieu
    Citation Envoyé par siddh
    ben en uml on appel ca des methodes, y a pas de notions de fonctions
    oui je suis du même avis, le nom "méthode" fait parti du vocabulaire d'UML et donc par extention de la programmation objet
    quand j'ai dit que la classe n'est qu'une suite de fonctions, je disais un peu ça pour taquiner les puristes de l'objet en me mettant du coté d'un nouvel arrivant qui voit du code de classe remplis du mot clé "function"
    effectivement pour moi qui ne connaît pas encore vraiment les classes à fond dans leur potentiel j'ai tendance à ne voir qu'une suite de fonctions

  15. #35
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ceci

    $piece = new Piece;
    $piece->bouge(25, 75);
    $piece->affiche();

    c'est un peu la même chose que

    $piece = piece_construit();
    piece_bouge($piece, 25, 75);
    piece_affiche($piece);
    piece_detruit($piece);

  16. #36
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tres bel exemple

  17. #37
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et bien voilà, quand tu veux t'exprimer tu peux

  18. #38
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par loufoque
    Ceci

    $piece = new Piece;
    $piece->bouge(25, 75);
    $piece->affiche();

    c'est un peu la même chose que

    $piece = piece_construit();
    piece_bouge($piece, 25, 75);
    piece_affiche($piece);
    piece_detruit($piece);
    Voila typiquement dans cet exemple, pourquoi utiliser les classes quand on peut utiliser les fonctions ? C'est ça mon problème... (Désolé pour mon vocabulaire fonction/classe)

  19. #39
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    lit ca, ca va t aider, c est deux discussions qui traitent du meme sujet
    http://www.developpez.net/forums/viewtopic.php?t=416358

  20. #40
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par Anduriel
    Voila typiquement dans cet exemple, pourquoi utiliser les classes quand on peut utiliser les fonctions ? C'est ça mon problème... (Désolé pour mon vocabulaire fonction/classe)
    Disons que normalement, une procédure ou une fonction ne devrait prendre que des paramètres en passage par valeur.
    C'est à dire que la valeur du paramètre n'est pas modifiée (ou si elle l'est, elle l'est seulement le temps de la fonction/procédure et pas en dehors).
    Or dans cet exemple, le paramètre est passé par référence, c'"est à dire que sa valeur est modifiée. On peut appeler ça un effet de bord. C'est plus difficile à maintenir/débugger.

    Maintenant, il existe des langages comme ADA où il est possible de passer des paramètres par valeur, référence (in inout ou out) mais l'avantage, c'est que c'est écrit précisément dans le corp de la fonction.

    Voilà, ma modeste participation, en espèrant ne pas avoir trop raconter d'aneries.

Discussions similaires

  1. [POO] Appels Dynamiques à des classes
    Par Korko Fain dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2006, 10h26
  2. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 17h00
  3. [POO] conception des classes
    Par poukill dans le forum C++
    Réponses: 229
    Dernier message: 19/07/2006, 09h28
  4. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 17h10
  5. [POO] PHP et la gestion des classes
    Par Acti dans le forum Langage
    Réponses: 7
    Dernier message: 23/09/2005, 01h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo