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 Java Discussion :

[Débutant] Utilité de l'héritage...?


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 19
    Points
    19
    Par défaut [Débutant] Utilité de l'héritage...?
    Bonjour, voilà je dois créer deux nouvelles classes : imaginons des pommes et des bananes. Ces deux classes auront des variables de classes assez semblables et des constructeurs aussi ... En gros pour mes pommes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private final String catégorie; // fruit ou légumes
    private final String provenance; // le pays d'origine
    private final int diameter; // le diamètre du fruit
    Et pour mes bananes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private final String catégorie; // fruit ou légumes
    private final String provenance; // le pays d'origine
    private final int length; // le longueur du fruit
    Voilà ce n'est qu'un exemple. Mais voilà ma question: pourquoi m'impose t on l'implémentation d'une classe FruitsLégumes mère ? Cela me pose problème on m'a dit que comme cela les classes Pommes et Bananes hériteront des champs de la classe FruitsLégumes ... mais je ne comprend pas bien le principe...
    Merci de m'éclairer...

  2. #2
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Cela te permettra de synthétiser le code. Par exemple quand tu vas vouloir savoir la provenance, tu vas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public String getProvenance()
    {
    return this.provenance ;
    }
    Si tu ne fais pas héritée tes deux classes tu devras écrire cette méthode deux fois (une fois dans Pomme et une fois dans Bannane). Avec l'héritage, tu écris cette methode une fois dans la classe FruitsLégumes,et tu n'as plus à l'écrire dans les classes filles !
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  3. #3
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut POO
    l'héritage ....

    imagine .... "JE SUIS TON PERE" .... nan .. c pas ça que je voulais dire ...

    je disais donc imagine ... des véhicules ...
    je te donne quelques exemples pour t'expliquer :
    - 1 dodge Viper (C parlant comme exemple hein ?)
    - 1 Honda civic
    - 1 camion-benne
    - 1 125(moto)
    - 1 scooter.
    Bon ... le principe de base de l'héritage est de regrouper les différents classes (ici les véhicules) par points communs.

    Première question : Quels sont les points communs à tous ces véhicules ?
    Alors on a deux sortes de points communs : les attributs et les méthodes. Les attributs sont des variables (attention : pas des VALEURS, mais bien des variables : le nom et le type de la variable reste le même d'un véhicule à l'autre, mais sa valeur change), les méthodes des algos (fonctions ou procédures). Ce qui nous donne :
    Attributs communs : carburant, couleur, nombre de roues ...
    Méthodes communes : faire le plein, démarrer, caler ....

    bon ... à ce point on se dit super chouette .... G mis des attributs et des méthodes dans 1 classe mère "Véhicule" ... ça m'avance à quoi ??.
    d'où la .... Deuxième question : "Comment démarre-t-on un véhicule" (sans toucher les fils ^^).
    Tu sais répondre à cette question ... et ce sans connaître le type de véhicule : pour tous ceux que j'ai cités il faut tourner la clef de contact ... donc .. si tu te trouve face à n'importe quel véhicule, tu saura le démarrer :
    exemple : dans 1 Vector contenant des Véhicule, on pourra faire démarrer chacun d'eux, sans avoir à en connaître le type exact.

    Une conséquence de l'héritage est qu'on a pas à recopier dans les classes filles les méthodes et attributs des classes mères :
    Un véhicule a une couleur
    Une Viper est un véhicule (signification de l'héritage), donc elle a une couleur.

    Un petit exercice pour te faire tourner les méninges : tu peux poursuivre l'héritage dans l'exemple que je t'ai donné en créant une classe "Moto", une classe "Automobile" et une classe "Camion" en y imposant un nombre de roues par exemple.

    voila ... j'espère que mon exemple était assez clair.
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Banane herite de Fruit
    Pomme herite de Fruit

    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Class Fruit
    {
      void manger() //On mange le fruit
      {
        //Hum c'est bon xD
      }
     
      void couperEnRondelle()
      {}
    }
     
    Class Banane extends Fruit//Une pomme
    {
      int longueur;
    }
     
    Class Pomme extends Fruit
    {
      int diametre;
    }
     
     
    //Et a ce moment la tu peu t'amuser a manger tout les fruits sans savoir ce que c'est:
     
    void main()
    {
      Fruit fruit = new Pomme();
      fruit.manger(); // Le fruit est une pomme
    }
     
    //On peu aussi directement travailler sur un fruit sans savoir c'est lequel:
     
    void faireUneRecette(Fruit fruit)
    {
      fruit.couperEnRondelle(); //Que se soit une banane ou une pomme ça fait pareil :)
      fruit.manger();
    }

    J'espere avoir été clair dans mes explications ^^

  5. #5
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    arf .. donnez pas la solution .... laissez le réfléchir un peu ... il comprendra jamais sinon !!
    Toute vérité est bonne à entendre, même si toutes les vérités ne sont pas bonnes à dire.
    Rien ne sert de partir à point, il vaut mieux courir .

Discussions similaires

  1. [Turbo Pascal] [Débutante] Exercice sur l'héritage
    Par sandra-n dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 09/01/2009, 23h49
  2. [débutant] utilité de webservices
    Par etoile_de_vie dans le forum C#
    Réponses: 1
    Dernier message: 20/02/2008, 10h17
  3. [débutant] Utilité de clone dans Object ?
    Par dabeuliou dans le forum Langage
    Réponses: 10
    Dernier message: 27/02/2007, 12h31
  4. [Débutant] Quel type d'héritage
    Par Invité dans le forum Delphi
    Réponses: 4
    Dernier message: 22/02/2007, 17h00
  5. [Débutant] [POO] Problème d'héritage
    Par fire.stone dans le forum Langage
    Réponses: 3
    Dernier message: 30/09/2006, 23h21

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