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 :

Mon sujet pour comprendre la POO avec PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut Mon sujet pour comprendre la POO avec PHP
    Bonjour,

    Bon je me lance dans l'apprentissage de la programmation orientée objet en vue de (re)programmer avec PHP.
    Je suis en train de lire les tutoriels et j'ai des questions qui me viennent au fur et à mesure. Je viens donc vous les poster ici, si vous voulez bien y répondre, ça me sera bien utile et probablement aussi à ceux qui suivront la même démarche que moi.

    Bon je commence avec ce tutoriel :
    http://g-rossolini.developpez.com/tu...urs/?page=poo#

    Il est dit ceci au sujet de l'instanciation d'une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Animal{}
    class Animal_Chien extends Animal{}
    class Animal_Chien_Caniche extends Animal_Chien{}
    class Animal_Chien_Labrador extends Animal_Chien{}
    ==> QUESTION 1 : Ne peut-on pas écrire directement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Animal_Chien_Caniche extends Animal{}
    Doit-on instancier comme cela des sous-classes, en forme de pyramide ? Qu'est-ce que ça changerait si on écrivait ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Animal_Chien_Caniche extends Animal{}
    class Animal_Chien_Labrador extends Animal{}
    Mes questions peuvent paraitre bêtes et désordonnées, mais j'apprends et j'essaie de m'y retrouver.

    Merci d'avance pour vos réponses.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut
    Bon, on va faire différemment, si vous le voulez bien. Pourriez-vous m'aider à verbaliser cela, s'il-vous-plait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Caniche{
        public static $caniches = 0;
        public function __construct(){
            ++self::$caniches;
        }
    }
     
    $froufrou = new Caniche();
    $froufrette = new Caniche();
     
    echo Caniche::$caniches; //affiche "2"
    Simplement si vous deviez transformer ceci en texte littéraire, avec des phrases en bonne et due forme, comment feriez-vous ?

    Merci d'avance.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Animal_Chien_Caniche extends Animal{}
    class Animal_Chien_Labrador extends Animal{}
    Si tu écris ça, ton Caniche et ton Labrador sont des animaux sans précisions.

    Supposons que tu veuilles obtenir le cri de la bestiole.
    Ton Caniche aboie. Tu vas donc définir une méthode aboyer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Animal_Chien_Caniche extends Animal {
        public void aboyer() {
            echo "wouf !";
        }
    }
    Ton Labrador aussi aboie. Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Animal_Chien_Labrador extends Animal {
        public void aboyer() {
            echo "wouf !";
        }
    }
    Et ainsi de suite pour le SaintBernard, le FoxTerrier, etc...

    Alors que si tu définis une classe Chien, tu peux surcharger la méthode crier dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Animal_Chien extends Animal {
        public void aboyer() {
            echo "wouf !";
        }
    }
    et toutes les classes qui hériteront de Animal_Chien vont automatiquement aboyer.

    L'idée est de mettre dans la classe "mère" ce qui est commun à toutes les classes "filles", histoire d'éviter de le coder 36000 fois.
    Mais tu ne peux pas mettre aboyer() dans Animal. Sinon, si tu crées Chat qui hérite d'Animal, ton Chat pourra aboyer()
    Donc il faut faire autant de "niveaux" que nécessaires.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 54
    Points : 13
    Points
    13
    Par défaut
    Merci pour ces explication Celira.

    Je me demande si je ne vais pas plutôt acheter un bouquin php/poo, avec des exercices et tout. Parce que les tutoriels, c'est bien pour avoir une vue d'ensemble, mais pour apprendre réellement c'est soit superficiel, soit complètement décousu. La première fois quand j'avais appris à programmer, il y a de cela 10 ans, j'avais fait ainsi et au bout d'un an je savais faire des choses complètes (accès réservés aux membres etc). Là je repars presque à zéro avec ces nouvelles méthodes PHP.

    Avez-vous une référence à me conseiller ?

Discussions similaires

  1. Où trouver de l'info pour comprendre le threading avec Python ?
    Par calogerogigante dans le forum Général Python
    Réponses: 37
    Dernier message: 09/02/2010, 21h34
  2. Débugage en POO avec PHP
    Par eilijah dans le forum Langage
    Réponses: 9
    Dernier message: 21/08/2008, 15h39
  3. Comment extraire du xml pour faire une bdd avec php?
    Par baleiney dans le forum XQUERY/SGBD
    Réponses: 9
    Dernier message: 09/03/2008, 14h55
  4. [POO] POO avec Php 5
    Par deboll_s dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2007, 12h58
  5. [POO] Souci POO avec php 4
    Par naunau dans le forum Langage
    Réponses: 7
    Dernier message: 12/12/2006, 13h23

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