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

avec Java Discussion :

Exercice sur l'héritage


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    En surfant sur le net j'ai trouvé un exercice sur un autre site.

    Voici l’énoncé :
    Un éleveur de volaille reçoit d’un fournisseur de jeunes canards et de jeunes poulets qu’il élève jusqu’à ce qu’ils aient la taille nécessaire à leur commercialisation.
    Une volaille est caractérisée par son poids et un numéro d’identification reporté sur une bague qu’elle porte a sa petite patte. Les volailles arrivent à l’élevage à l’âge de trois semaines. Elles sont baguées et enregistrées dans le système informatique.
    Il y a deux sortes de volailles : des canards et des poulets. Le prix du canard et celui du poulet sont deux prix différents, exprimés en euros par kilo. En revanche, le prix est le même pour tous les individus de la même espèce. Ce prix varie chaque jour. Le poids auquel on abat les bêtes est différents pour les canards et les poulets, mais c’est le même pour tous les poulets (respectivement, tous les canards).
    1. Écrivez une classe des volailles avec deux sous-classes des poulets et des canards. Il faut pouvoir enregistrer les prix du jours, les poids d’abbatage, le poids d’une volaille donnée.
    2. Écrivez une classe permettant de représenter l’ensemble des animaux de l’élevage au moyen d’un tableau et de savoir le nombre de volailles reçues et le type de chaque volaille. On considérera que l'éleveur ne peut pas recevoir au maximum que 200 volailles à la fois.
    3. Écrire une méthode qui permet de calculer le prix total de toutes les volailles que l'éleveur possède.

    Voici mes essais pour les questions :
    1. la première :
      Volaille.Java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      public class Volaille {
          int Poids,ID;
          public Volaille(int P, int id){
              Poids = P;
              ID = id;
          }
          public void Affiche(){
              System.out.println("Poids : "+Poids+", N° : "+ID);
          }
      }
      Poulet.java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      public class Poulet extends Volaille{
          int PrixJour,PoidsAbat;
          public Poulet(int p, int id, int PJ, int PA){
              super(p,id);
              PrixJour = PJ;
              PoidsAbat = PA;
          }
          @Override
          public void Affiche(){
              super.Affiche();
              System.out.println("Prix du Jour : "+PrixJour+", Poids d'abattage : "+PoidsAbat);
          }
      }
      Canard.java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      public class Canard extends Volaille{
          int PrixJour,PoidsAbat;
          public Canard(int p, int id, int pj, int pa){
              super(p,id);
              PrixJour = pj;
              PoidsAbat = pa;
          }
          @Override
          public void Affiche(){
              super.Affiche();
              System.out.println("Prix du Jour : "+PrixJour+", Poids d'abattage : "+PoidsAbat);
          }
      }
    2. la deuxième :
      j'ai ajouté une variable booléenne à la classe Volaille qui teste sur le type de volaille, est ce poulet ou canard :

      Ensemble.java
      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
      public class Ensemble{
          Volaille tab[] = new Volaille[200];
          public int Nbr_Type_Volaille(){
              int Nbr = 0;
              for(int i =0;i < tab.length;i++){
                  if(tab[i] != null){
                      if(tab[i].type == true)
                          System.out.println("Poulet.");
                      else
                          System.out.println("Canard.");
                  }
              }
              return Nbr;
          }
      }
      Malheureusement on ne peut pas connaitre le type de volaille à partir de la classe mère !
    3. la troisième :
      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
      public class Ensemble{
          Volaille tab[] = new Volaille[200];
          public PrixTotal(){
              int PrixPoulet = 0;
              int PrixCanard = 0;
              for(int i =0;i < tab.length;i++){
                  if(tab[i] != null){
                      if(tab[i].type == true)
                          PrixPoulet += tab[i].PrixJour;
                      else
                          PrixCanard += tab[i].PrixJour;
                  }
              }
              return PrixPoulet+PrixCanard;
          }
      }
      ... L'attribut PrixJour ne se trouve pas dans la classe mère Volaille !

    Je n'ai pas encore compilé les essais car ce ne sont pour le moment que des idées, espérons qu'elles soient logiques.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Il me semble que tu as loupé une notion importante de l'énoncé, à savoir que le prix du canard (respectivement du poulet) est le même pour tous les individus de la même espèce (idem pour le poids).

    Avec les classes que tu as réalisées, ce poids(/prix) est propre à un individu, et non pas commun à toute l'espèce.

    Sinon, étant donné que l'on te dit que le prix change chaque jour, il faudrait pouvoir modifier ce prix (qui pour le moment ne peut être initialisé que lors de la création d'un poulet ou d'un canard).

    (ces remarques ne concernent que la première question, je n'ai pas regardé les suivantes)

    Mako.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Merci de m'avoir répondu.

    • Comme le poids d'abattage (d'un poulet ou d'un canard) est fixé, alors sera t-il mieux qu'on suppose qu'il est constant ?
    • Si j'ai bien compris la question, j'ai remarqué une petite contradiction dans l'énoncé !! :
      1. Le prix d'un (poulet ou canard) est le même, Donc le prix est constant !
      2. Le prix varie chaque jour, Donc le prix n'est pas constant !!

      Qu'en pensez vous ??

  4. #4
    Membre actif Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 209
    Points
    209
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    Il y a deux sortes de volailles : des canards et des poulets. Le prix du canard et celui du poulet sont deux
    prix différents, exprimés en euros par kilo. En revanche, le prix est le même pour tous les individus de la
    même espèce. Ce prix varie chaque jour. Le poids auquel on abat les bêtes est différents pour les canards et
    les poulets, mais c’est le même pour tous les poulets (respectivement, tous les canards).[/LIST]
    -> Au jour J tous les canards sont au même prix, prix_canard, et tous les poulets sont au même prix, prix_poulet.
    Par contre chaque jour prix_poulet et prix_canard évoluent (à la hausse en général, si l'exercice est réaliste...)

    Ils ne sont pas fixes, juste commun au type de volaille (j'ai résisté, j'ai pas dit à la classe).

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je pense que la fonction affiche devrait être remplacer par la fonction toString() propre à l'objet Object !

    Pour le reste je reposterai ce soir.

    Cordialement,
    Patrick Kolodziejczyk.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    Comme le poids d'abattage (d'un poulet ou d'un canard) est fixé, alors sera t-il mieux qu'on suppose qu'il est constant ?
    Oui. Mais attention, il est commun à tous les individus de la même espèce (cf. ci-dessous).


    Citation Envoyé par khaled_prg Voir le message
    Si j'ai bien compris la question, j'ai remarqué une petite contradiction dans l'énoncé !! :
    Pour moi, il n'y a pas de contradiction. Le prix est le même pour tous les individus de la même espèce, mais il varie tous les jours (donc, chaque jour, il est le même pour les individus de la même espèce).

    C'est comme le prix de l'essence : il est le même pour tous les véhicules (supposons qu'il n'y ait qu'un seul type d'essence), et pourtant, il varie chaque jour.

    (je t'invite à regarde le mot-clé static pour ce point)

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Tout d'abord je vous remercie tous infiniment pour vos précieuses idées.
    selon ce que j'ai compris j'ai refait le code et le voici :

    • Volaille.Java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      public class Volaille {
          int Poids,ID;
          public Volaille(int P, int id){
              Poids = P;
              ID = id;
          }
          @Override
          public String toString(){
              return "Poids : "+Poids+", N° : "+ID;
          }
      }
    • Poulet.Java
      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
      public class Poulet extends Volaille{
          static final int PoidsAbat = 5;//On suppose que le poids d'abattage d'un Poulet est cinq kilos.
      	static int PrixJour;
          public Poulet(int p, int id, int PJ){
              super(p,id);
              PrixJour = PJ;
          }
      	void SetPrixJour(int Prix_Poulet){
      	     PrixJour += Prix_Poulet;
      	}
          @Override
          public String toString(){
              return super.toString() +"Prix du Jour : "+PrixJour+", Poids d'abattage : "+PoidsAbat;
          }
      }
    • Canard.Java
      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
      public class Canard extends Volaille{
          static final int PoidsAbat = 4;//On suppose que le poids d'abattage d'un Canard est quatre kilos.
          static int PrixJour;
          public Canard(int p, int id, int pj){
              super(p,id);
              PrixJour = pj;
          }
          void SetPrixJour(int Prix_Canard){
      	     PrixJour += Prix_Canard;
      	}
          @Override
          public String toString(){
              return super.toString() +"Prix du Jour : "+PrixJour+", Poids d'abattage : "+PoidsAbat;
          }
      }

    Quelles sont vos suggestions ?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Deux remarques sur le code modifié que tu as posté :

    - Etant donné que la variable PrixJour est statique, alors le setter associé devrait l'être lui aussi (pas obligatoire, mais beaucoup plus logique) ;

    - Pourquoi tu fais ceci lorsque tu veux changer le prix ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PrixJour += Prix_Poulet;
    Il aurait été plus logique de faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PrixJour = Prix_Poulet;
    Et une dernière petite chose, concernant les notations : les noms de variables commencent par une minuscule (ex. int maVariable;) et les variables finales sont écrites entièrement en majuscules (ex. final static int MON_PRIX_FIXE;).

    Mako.

    Edit :

    Si tu testes ton code, tu risques d'avoir des suprises avec le toString() que tu as fait...

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Salut !
    Vos remarques sont extrêmement pertinentes, je vous en remercie comme je vous remercie de bien vouloir suivre le sujet.

    Voilà le nouveau code :
    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
    public class Poulet extends Volaille{
        final static double POIDS_ABAT = 5.00;//On suppose que le poids d'abattage égal cinq kilo.
    	static double prixJour;
        public Poulet(double p, int id, double pJ){
            super(p,id);
            prixJour = pJ;
        }
    	static void SetPrixJour(double Prix_Poulet){
    	     prixJour = Prix_Poulet;
    	}
        @Override
        public String toString(){
            return super.toString() +", Prix du Jour : "+prixJour+", Poids d'abattage : "+POIDS_ABAT;
        }
        public static void main(String args[]){
            Poulet _Poulet = new Poulet(0.25,17,3);
            System.out.println(_Poulet.toString());
        }
    }
    Comment vous l’appréciez ?

    Si tu testes ton code, tu risques d'avoir des suprises avec le toString() que tu as fait...
    J'ai testé le code dans NetBenas et ça marche :

    http://sub5.rofof.com/img3/01janvd25.png

    Que ce que vous ciblez précisément ??

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    J'ai testé le code dans NetBenas et ça marche :

    http://sub5.rofof.com/img3/01janvd25.png

    Que ce que vous ciblez précisément ??
    Au temps pour moi.

    J'avais juste regardé le toString() des canards et des poulets, et j'avais vu super.toString(), mais comme je n'avais pas vu que la méthode toString() avait été redéfinie pour la classe Volaille, je pensais que le super faisait référence à la classe Object, et non à la classe Volaille. Donc c'est tout bon.

    Mise à par la variable Prix_Poulet qu'il aurait mieux valu nommer prixPoulet (pas de "_" dans les noms de constantes/variables, sauf dans le cas de constantes finales), je pense que c'est bon.

    Mako.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Merci pour votre aide.

    Passons à la deuxième question :
    Écrivez une classe permettant de représenter l’ensemble des animaux de l’élevage au moyen d’un tableau et de savoir le nombre de volailles reçues et le type de chaque volaille. On considérera que l'éleveur ne peut pas recevoir au maximum que 200 volailles à la fois.


    j'ai ajouté une variable booléenne à la classe Volaille qui teste sur le type de volaille, est ce poulet ou canard :

    Ensemble.java
    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
    public class Ensemble{
        Volaille tab[] = new Volaille[200];
        public int Nbr_Type_Volaille(){
            int Nbr = 0;
            for(int i =0;i < tab.length;i++){
                if(tab[i] != null){
                    if(tab[i].type == true)
                        System.out.println("Poulet.");
                    else
                        System.out.println("Canard.");
                }
            }
            return Nbr;
        }
    }
    Malheureusement on ne peut pas connaitre le type de volaille à partir de la classe mère !!

    Edit :
    pas de "_" dans les noms de constantes/variables, sauf dans le cas de constantes finales
    Est ce qu'il y a des constantes qui sont pas finales ??

  12. #12
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Un flag est une mauvaise idée dans ton cas. Que se passe-t-il si tu veux rajouter une Oie?

    C'est à l'objet lui-même de nous donner son type.

    J'ajouterai qu'une Volaille ne devrait pas être instanciable étant donné que c'est une notion abstraite.

    En résumé:
    - oublie le flag
    - abstract class Volaille
    - abstract String getType() dans Volaille. A chacune des implémentations de nous forunir cette information

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    - abstract class Volaille
    - abstract String getType() dans Volaille. A chacune des implémentations de nous forunir cette information
    +1
    Une excellente idée !!, voila ce que je cherchais : )

    • Volaille.Java
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      public abstract class Volaille {
          int ID;
          double Poids;
          public Volaille(double P, int id){
              Poids = P;
              ID = id;
          }
          @Override
          public String toString(){
              return "Poids : "+Poids+", N° : "+ID;
          }
          public abstract String getType();
      }
    • Poulet.Java
      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
      public class Poulet extends Volaille{
          //On suppose que le poids d'abattage égal cinq kilo.
          final static double POIDS_ABAT = 5.00;
          static double prixJour;
          public Poulet(double p, int id, double pj){
              super(p,id);
              prixJour = pj;
          }
          static void SetPrixJour(double PrixPoulet){
               prixJour = PrixPoulet;
          }
          @Override
          public String toString(){
              return super.toString() +", Prix du Jour : "+prixJour+", Poids d'abattage : "+POIDS_ABAT;
          }
          public String getType(){
              return "Poulet";
          }
      }
    • Canard.Java
      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
      public class Canard extends Volaille{
          //On suppose que le poids d'abattage égal quatre kilo.
          final static double POIDS_ABAT = 4.00;
          static double prixJour;
          public Canard(double p, int id, double pj){
              super(p,id);
              prixJour = pj;
          }
          static void SetPrixJour(int prixCanard){
               prixJour = prixCanard;
          }
          @Override
          public String toString(){
              return super.toString() +"Prix du Jour : "+prixJour+", Poids d'abattage : "+POIDS_ABAT;
          }
          public String getType(){
              return "Canard";
          }
      }


    Donc, à votre avis, quel sera le type de tableau ?
    EnsembleVolailles.Java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class EnsembleVolailles{
        final static short NBR_MAX = 200;
        Volaille ensembleVolailles[] = new Volaille[NBR_MAX];
        public int NbrTypeVolaille(){
            int Nbr = 0;
            for(int i =0;i < ensembleVolailles.length;i++)
                if(ensembleVolailles[i] != null){
                    Nbr++;
                    System.out.println(ensembleVolailles[i].getType);//Erreur !
                }
            return Nbr;
        }
    }
    Merci.

  14. #14
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Pour que l'on ait des idées, encore faudrait-il que tu poses des questions...

    Si le problème vient de là System.out.println(ensembleVolailles[i].getType);//Erreur !, encore faudrait-il que tu indiques de quelle erreur il s'agit, ce que tu as déjà essayer pour la résoudre, etc.

    On n'est pas devins...

    Mako.

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    j'ai deux questions :
    1. Est ce qu'il y a des constantes qui ne sont pas finales ??

    La 2éme question est la suivante :
    Écrivez une classe permettant de représenter l’ensemble des animaux de l’élevage au moyen d’un tableau et de savoir le nombre de volailles reçues et le type de chaque volaille. On considérera que l'éleveur ne peut pas recevoir au maximum que 200 volailles à la fois.
    mon problème c'est quel sera le type du tableau ?

  16. #16
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    j'ai deux questions :
    1. Est ce qu'il y a des constantes qui ne sont pas finales ??
    Je pense que cela vient de là :

    pas de "_" dans les noms de constantes/variables, sauf dans le cas de constantes finales
    C'est une erreur de ma part (un abus de langage). Par "constantes", j'entendais ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // nombreIteration est une constante : sa valeur ne change pas
    int nombreIteration = 10;
    for (int i=0; i < nombreIteration; i++) {
         // i est une variable : elle varie...
         System.out.println("Passage n°" + i);
    }
    Mais nombreIteration n'est pas une constante au sens strict, puisque tu peux la modifier si tu le souhaites.

    Citation Envoyé par khaled_prg Voir le message
    mon problème c'est quel sera le type de tableau ?
    Quel est le dénominateur commun (en termes d'héritage) à tous les éléments que tu veux mettre dans ton tableau ? Tu veux y mettre des canards et des poulets, donc si tu dis que c'est un tableau de canards, tu ne pourras pas mettre de poulets (et vice-versa). Par contre, ce sont tous des volailles. Donc un tableau de volailles.

    Je ne vois pas où est le problème, étant donné que c'est ce que laissait supposer la réponse de Heimdal, et que c'est ce que tu avais fait par la suite...

    Mako.

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Donc un tableau de volailles
    Oui, c'est ce que je prends pour logique ! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class EnsembleVolailles{
        final static short NBR_MAX = 200;
        Volaille ensembleVolailles[] = new Volaille[NBR_MAX];
        public int NbrTypeVolaille(){
            int Nbr = 0;
            for(int i =0;i < ensembleVolailles.length;i++)
                if(ensembleVolailles[i] != null){
                    Nbr++;
                    System.out.println(ensembleVolailles[i].getType);
                }
            return Nbr;
        }
    }
    Si je considère que le tableau est de type Volaille j'aurai un problème à en déterminer le type !! comme j'ai utilisé la méthode abstraite getType à laquelle je ne pourrais pas accéder.

  18. #18
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Bonjour,

    Déjà, ce n'est pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(ensembleVolailles[i].getType);
    mais plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(ensembleVolailles[i].getType());
    qu'il faudrait écrire (tu n'as pas d'erreurs de compilation avec tes notations ?).

    Ensuite, certes la méthode getType() est abstraite, mais étant donné que tu l'as définie pour les classes filles, ce sont celles-ci qui seront appelées effectivement.

    Tu n'as qu'à faire un test : créé un tableau de Volaille de taille 10, rempli à la main avec des Poulet et des Canard, et lance ta méthode NbrTypeVolaille() (qui devrait commencer par une minuscule plutôt). Tu verras bien si le résultat est conforme ou non à tes attentes.

    Mako.

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Bonjour !

    Ce qui me faisait douter de l'application du code c'est que je je ne pensais pas qu'un tableau de la classe mère pourrait contenir des objets de la sous-classe !!, selon notre professeur : si on crée un tableau contenant des objets d'une classe, il ne peut contenir que ces objets et on ne peut pas lui affecter les objets dune autre classe.

    J'ai compilé le code et voici le résultat :
    http://sub5.rofof.com/img3/01lmjop30.png
    Merci beaucoup Mr Mako.

    pour ce qui est de la 3éme question, je vais déclarer 3 variables prixTotalPoulet, prixTotalCanard, prixTotal ( = prixTotalPoulet + prixTotalCanard).
    mais j'ai un problème à calculer prixTotal(Poulet/Canard) !, comment pouvoir déterminer que dans telle ou telle case il y a un Canard ou un Poulet ??

  20. #20
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    pour ce qui est de la 3éme question, je vais déclarer 3 variables prixTotalPoulet, prixTotalCanard, prixTotal ( = prixTotalPoulet + prixTotalCanard).
    Si tu veux (tu pourrais aussi faire uniquement avec le prixTotal, mais c'est un détail).

    Citation Envoyé par khaled_prg Voir le message
    comment pouvoir déterminer que dans telle ou telle case il y a un Canard ou un Poulet ??
    Dans presque tous les exercices de presque toutes les matières, l'ordre des question n'est pas tiré au hasard. En d'autres termes, lorsque tu traites la n-ième question, toujours avoir à l'esprit ce qui a été fait dans les (n-1)-ième précédentes...

    Mako.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. exercice de base sur l'héritage
    Par rdtech dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/04/2014, 09h25
  2. [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
  3. [POO] Problème dans un exercice sur l'héritage
    Par FabaCoeur dans le forum C++
    Réponses: 2
    Dernier message: 05/05/2007, 17h09
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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