Partage
  • Partager sur Facebook
  • Partager sur Twitter

Apprenez à programmer en Java

réalisez un garage

Anonyme
    24 novembre 2014 à 16:33:38

    Bonjour.

    J'essaie de faire l'activité proposée dans ce cours et j'ai une erreur à la ligne 4.

    Je n'ai pour l'instant fait que la classe Moteur et l'Enum TypeMoteur.

    Je vous remercie pour l'aide que vous pourrez m'apporter.

    package com.garage;
    
    public class Moteur {
    	protected TypeMoteur obj = new TypeMoteur();
    	protected String cylindre;
    	protected Double prix;
    	
    	public TypeMoteur getTypeMoteur(){      
    		  return obj; 
    	}
    	void Moteur(String cylindre,Double prix){
    	}	
    	public String toString()  {  
    		return cylindre;
    	}
    	public Double getPrix()  {  
    		return prix;
    	}
    	
    }
    package com.garage;
    
    public enum TypeMoteur {
    	DIESEL, 
    	ESSENCE,
    	HYBRIDE,
    	ELECTRIQUE;
    	
    }




    -
    Edité par Anonyme 24 novembre 2014 à 16:34:41

    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2014 à 16:51:42

      Et quelle est cette erreur?

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        24 novembre 2014 à 17:23:05

        83Alain a écrit:

        Bonjour.

        J'essaie de faire l'activité proposée dans ce cours et j'ai une erreur à la ligne 4.

        Je n'ai pour l'instant fait que la classe Moteur et l'Enum TypeMoteur.

        Je vous remercie pour l'aide que vous pourrez m'apporter.

        package com.garage;
        
        public class Moteur {
        	protected TypeMoteur obj = new TypeMoteur();
        	protected String cylindre;
        	protected Double prix;
        	
        	public TypeMoteur getTypeMoteur(){      
        		  return obj; 
        	}
        	void Moteur(String cylindre,Double prix){
        	}	
        	public String toString()  {  
        		return cylindre;
        	}
        	public Double getPrix()  {  
        		return prix;
        	}
        	
        }
        package com.garage;
        
        public enum TypeMoteur {
        	DIESEL, 
        	ESSENCE,
        	HYBRIDE,
        	ELECTRIQUE;
        	
        }






        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 novembre 2014 à 17:23:46

          cannot instansiate the type TypeMoteur
          • Partager sur Facebook
          • Partager sur Twitter
            24 novembre 2014 à 21:44:48

            Tu ne peux pas instancier les enum : il faut que tu fasse TypeMoteur.DIESEL ou autre.

            Informations sur les enum au passage :

            • Les éléments de l'enum sont des instances unique (singleton).
            • Les objets sont instanciés lors du démarrage du programme.
            • Les constructeurs de l'enum ne peuvent pas être publique : package ou private.

            -
            Edité par Pinguet62 24 novembre 2014 à 21:52:09

            • Partager sur Facebook
            • Partager sur Twitter
            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
              25 novembre 2014 à 7:27:01

              Pinguet62 a tout dit :)  (comme d hab :))
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                25 novembre 2014 à 9:52:42

                Merci.

                Je ne comprends visiblement pas comment je vais utiliser mon enum dans les classes qui l'appelle.

                Je vais continuer à lire et relire le cours.

                Alain.

                • Partager sur Facebook
                • Partager sur Twitter
                  25 novembre 2014 à 10:11:37

                  Tu peux faire par exemple : protectedTypeMoteur obj = TypeMoteur.DIESEL 

                  Ou alors, si tu veux "instancier" l'objet plus tard:

                  protectedTypeMoteur obj;

                  ....

                  ...

                  ...

                  obj = TypeMoteur.DIESEL

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    25 novembre 2014 à 10:26:00

                    Je te remercie.

                    Le problème, c'est que je n'ai fondamentalement pas compris ce qui est demandé dans l'exercice.

                    Je ne sais pas que faire de cet enum.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 novembre 2014 à 11:55:25

                      Une enum est un type qui a des valeurs définies. Dans ton cas tu as 4 types de moteurs, et c'est tout !

                      Pour utiliser tu dois appeler directement la valeur que tu veux. Par exemple si tu veux un type de moteur électrique tu faix TypeMoteur.ELECTRIQUE tout simplement !

                      Si tu veux créer de nouveaux types dynamiquement alors l'enum n'est pas la bonne solution.

                      Est-ce que par hasard tu voudrais initialiser ton attribut avec une valeur "par défaut" ?
                      Si oui, tu peux laisse vide, et ton attribut sur null ou alors définir une valeur par défaut dans ton enum mais je trouve ça moche car le null est là pour ça.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                      Anonyme
                        25 novembre 2014 à 16:37:55

                        L'exercice proposé dans ce cours me parait trop dur, je recommencerai demain.

                        Merci de votre soutien.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 novembre 2014 à 17:02:28

                          Si tu as des points précis que tu ne comprends pas dis le nous. Parfois le fait de voir plusieurs nouveautés en même temps peut surprendre, alors qu'1 chose précise en complète à la fois peut être plus simple.

                          Par exemple si tu veux plus de détails sur les enums on peut essayer de t'expliquer cela indépendemment du reste du cours.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                          Anonyme
                            25 novembre 2014 à 17:33:20

                            Merci beaucoup,

                            J'essaierai de clarifier et de saucissonner mes questions demain.

                            Bonne soirée.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              26 novembre 2014 à 12:57:23

                              Bonjour.

                              J’essaie donc de reposer à plat l'exercice proposé sur ce site.

                              Dans un premier temps, j'ai essayé de simplifié l’énoncé.

                              On a un objet Vehicule qui a une variable de classe Marque (qui se traduit pour moi enum).

                              Vehicule a 2 autres attributs  prix : Double et nom : String

                              Vehicule a 3 méthodes toString() : string, getMarque() : Marque et getPrix() : Double.

                              3 Objets (donc classes ?) sont fils (filles ?) de Vehicule : Lagouna, D4 et A300B.

                              Ils n'ont sur l'UML aucun attribut et aucune méthode (mais cela veut dire uniquement les attributs et les méthodes de Véhicule ?)

                              Véhicule a une flèche vers l'objet Moteur (mais Moteur n'est pas dans les variables de classes, pourquoi ?)

                              Moteur a 3 attributs type : typeMoteur (variable de classe), cylindre : String et prix : Double

                              Moteur a 3 méthodes Moteur(cylindre : String, prix Double) : void, toString() : String et getPrix() : Double

                              4 Objets (fils) de Moteur : MoteurHybride, MoteurElectrique, MoteurEssence et MoteurDiesel qui n'ont attribut, ni méthode.

                              typeMoteur a 4 attributs (static ?) DIESEL, ESSENCE, HYBRIDE et ELECTRIQUE

                              L'objet Garage est composé de plusieurs éléments de Vehicule, il a

                              un attribut voiture : voiture : List<vehicule>

                              2 méthodes : toString() : String et add(voit : vehicule) : void

                              En simplifiant (et en oubliant la sauvegarde et le chargement du Garage), je voudrais que mon Main :

                              package com.garage;
                              
                              public class Main {
                                  public static void main(String[] args) {
                                 	 Garage garage = new Garage();   
                                 	 System.out.println(garage);
                                 	 
                                 	 Vehicule lag1 = new Lagouna();
                                 	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));
                                 	 garage.addVoiture(lag1);
                                 		 
                                 	 Vehicule A300B_2 = new A300B();
                                 	 A300B_2.setMoteur(new MoteurElectrique("1500 W", 1234d));
                                 	 
                                 	 garage.addVoiture(A300B_2);
                              		 
                                  }
                              }

                              renvoie :

                              Voiture RENO : Lagouna (Moteur ESSENCE 150 chevaux (23123,0 euros))



                              Je ne sais pas par où commencer, c'est vrai.

                              Quelle différence entre un objet et une classe : Vehicule est une classe et un objet ?

                              Pour mes 7 classes filles, je les ai construites sur ce modèle :

                              package com.garage;
                              
                              public class MoteurElectrique extends Moteur{
                              
                              }


                              Dois-je commencer par Vehicule ou Moteur ?

                              Merci de votre aide et de vos conseils pour faire cet exercice.


                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 novembre 2014 à 14:47:54

                                83Alain a écrit:

                                Bonjour.

                                J’essaie donc de reposer à plat l'exercice proposé sur ce site.

                                Dans un premier temps, j'ai essayé de simplifié l’énoncé.

                                On a un objet Vehicule qui a une variable de classe Marque (qui se traduit pour moi enum Bien sur, c'est marqué <<enumeration>> en haut du cadre sur le diagramme UML).

                                Vehicule a 2 autres attributs  prix : Double et nom : String

                                Vehicule a 3 méthodes toString() : string, getMarque() : Marque et getPrix() : Double.

                                3 Objets (donc classes ?) sont fils (filles ?) de Vehicule : Lagouna, D4 et A300B.
                                Chaque cadre est une classe, et la flèche (de ce style) représente un héritage

                                Ils n'ont sur l'UML aucun attribut et aucune méthode (mais cela veut dire uniquement les attributs et les méthodes de Véhicule ?)
                                Normalement on met la visibilité des attributs en début de déclaration des attributs : + pour publique, - pour privé, #pour protected
                                Par défaut dans ton cas, sauf cas particulier, on dira que les attributs sont protected et les méthodes publiques.

                                Véhicule a une flèche vers l'objet Moteur (mais Moteur n'est pas dans les variables de classes, pourquoi ?)
                                Pour simplifier on dira que cela veut dire que "Vehicule contient Moteur". Pour ne pas dupliquer les informations on ne note que la flèche, car cela veut dire implicitement que l'objet à un attribut de ce type.

                                Moteur a 3 attributs type : typeMoteur (variable de classe), cylindre : String et prix : Double

                                Moteur a 3 méthodes Moteur(cylindre : String, prix Double) : void, toString() : String et getPrix() : Double

                                4 Objets (fils) de Moteur : MoteurHybride, MoteurElectrique, MoteurEssence et MoteurDiesel qui n'ont attribut, ni méthode.
                                4 classes (qui héritent), et comme précédemment par défaut ils hériteront des attributs protégés et méthodes de la classe parente Moteur.

                                typeMoteur a 4 attributs (static ?) DIESEL, ESSENCE, HYBRIDE et ELECTRIQUE
                                Pas statique, mais juste les valeur de l'énumération

                                L'objet Garage est composé de plusieurs éléments de Vehicule, il a

                                un attribut voiture : voiture : List<vehicule>

                                2 méthodes : toString() : String et add(voit : vehicule) : void

                                En simplifiant (et en oubliant la sauvegarde et le chargement du Garage), je voudrais que mon Main :

                                package com.garage;
                                
                                public class Main {
                                    public static void main(String[] args) {
                                   	 Garage garage = new Garage();   
                                   	 System.out.println(garage);
                                   	 
                                   	 Vehicule lag1 = new Lagouna();
                                   	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));
                                   	 garage.addVoiture(lag1);
                                   		 
                                   	 Vehicule A300B_2 = new A300B();
                                   	 A300B_2.setMoteur(new MoteurElectrique("1500 W", 1234d));
                                   	 
                                   	 garage.addVoiture(A300B_2);
                                		 
                                    }
                                }

                                renvoie :

                                Voiture RENO : Lagouna (Moteur ESSENCE 150 chevaux (23123,0 euros))



                                Je ne sais pas par où commencer, c'est vrai.

                                Quelle différence entre un objet et une classe : Vehicule est une classe et un objet ?
                                La classe décrit les objets : en gros c'est le moule, et tes objets prendront cette forme.
                                Par exemple Vehicule est la classe, et la Golf que j'ai dans mon garage est un objet (un parmi tous les autres possibles).

                                Pour mes 7 classes filles, je les ai construites sur ce modèle :

                                package com.garage;
                                
                                public class MoteurElectrique extends Moteur{
                                
                                }


                                Dois-je commencer par Vehicule ou Moteur ?
                                Moteur est complètement indépendant de Vehicule (la flèche entre les 2 signifie que les objets de Moteur n'ont pas connaissance des objets Vehicule)
                                De manière générale mieux vaut commencer par les éléments indépendants (comme les enumérations), ensuite les choses abstraites (interface), et ensuite les implémentations (classes parentes, puis ensuite classes filles).

                                Merci de votre aide et de vos conseils pour faire cet exercice.

                                Ci-dessus mes notes en rouge. Si je n'ai rien dit c'est que c'est bon.

                                Conseil : étudier les diagrammes UML serait une bonne chose, en parallèle de la programmation, parce que très c'est un concepte très utilisé en programmation.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                Anonyme
                                  26 novembre 2014 à 17:09:58

                                  Merci beaucoup.

                                  Je repars donc sur mon enum. Que mettre de plus que :

                                  package com.garage;
                                   
                                  public enum TypeMoteur {
                                      DIESEL,
                                      ESSENCE,
                                      HYBRIDE,
                                      ELECTRIQUE;
                                       
                                  }

                                  même si le fait que ce soient des String n'apparait pas.

                                  Pour l'interface, on aurait :

                                  package com.garage;
                                  
                                  public class GPS implements Option{
                                  
                                  	@Override
                                  	public Double getPrix() {
                                  		// TODO Auto-generated method stub
                                  		return null;
                                  	}
                                  
                                  }
                                  

                                  et :

                                  package com.garage;
                                  
                                  public interface Option {
                                  	public Double getPrix();
                                  
                                  }





                                  -
                                  Edité par Anonyme 26 novembre 2014 à 17:22:18

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 novembre 2014 à 19:38:01

                                    Par défaut dans une enum tu n'as que des noms de variable (DIESEL, ...)
                                    Il est possible d'ajouter des attributs, des méthodes, ... Tu peux aussi passer des paramètres à tes objets (comme dans l'exemple suivant), et note que tu devras aussi ajouter un ou des constructeurs.

                                    enum TotoFamily {
                                        TATA("Le père"), // new TotoFamily("Le père")
                                        TONTON("L'oncle"); // new TotoFamily("L'oncle")
                                        
                                        private final String title;
                                        
                                        private TotoFamily(String title) {
                                            this.title = title;
                                        }
                                        
                                        public String getTitle() {
                                            return title;
                                        }
                                    }

                                    Je t'ai mis en commentaire le comportement du programme que l'on ne voit pas.

                                    Pour l'interface oui c'est ça.

                                    PS : Absolument rien de grave, mais une remarque au passage...
                                    Les méthodes des interfaces sont par défaut (et obligatoirement d'ailleurs) public. Donc tu n'es pas obligé de le repréciser !
                                    En fait une interface a pour but de définir les méthodes que devras exposer (= proposer) les classes qui l'implémentent. Donc si tu définies une méthode qui n'est pas exposée (private) alors ce n'est plus le rôle d'une interface. Voila pourquoi.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                    Anonyme
                                      27 novembre 2014 à 9:15:45

                                      Bonjour.

                                      Dans le Main de tests, est ce que c'est le

                                      Vehicule lag1 = new Lagouna();
                                         	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));

                                      qui génère le Moteur ESSENCE.

                                      Est ce qu'il faut que l'enum soit écrit comme tu le proposes :

                                      package com.garage;
                                      enum TypeMoteur {
                                          DIESEL("Moteur DIESEL"), 
                                          ESSENCE("Moteur ESSENCE"), 
                                      HYBRIDE("Moteur HYBRIDE"), 
                                      ELECTRIQUE("Moteur ELECTRIQUE"),
                                           
                                          private final String typem;
                                           
                                          private TypeMoteur (String typem) {
                                              this.typem= typem;
                                          }
                                           
                                          public String getTypem() {
                                              return typem;
                                          }
                                      }

                                      appeler comment dans la classe Moteur ?



                                      -
                                      Edité par Anonyme 27 novembre 2014 à 9:56:19

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        27 novembre 2014 à 9:53:16

                                        83Alain a écrit:

                                        Dans le Main de tests, est ce que c'est le

                                        Vehicule lag1 = new Lagouna();
                                           	 lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));

                                        qui génère le Moteur ESSENCE.

                                        Je n'ai pas compris.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                        Anonyme
                                          27 novembre 2014 à 10:44:40

                                          Dans l'exercice, il y a un Main pour tester son projet. 

                                          Dans le -Voiture RENO : Lagouna (Moteur ESSENCE 150 chevaux (23123,0 euros))- que retourne ce scrpit de test, il y a le morceau -Moteur ESSENCE- qui doit être généré par un script de type :

                                          for(TypeMoteur typem : TypeMoteur.values()){
                                          	      if(TypeMoteur.DIESEL.equals(typem))
                                          	    	  System.out.println("Moteur " + typem);
                                          	      else
                                          	        System.out.println(typem);

                                           qui serait optimisé avec un switch case que je n'arrive pas à produire car il n'utilise plus la classe enum TypeMoteur.

                                          Or le script ci-dessus, s'il doit exister, je ne sait pas dans quelle classe, ni comment le Main de test "l'appelle" pour qu'il s'affiche effectivement.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 novembre 2014 à 11:29:28

                                            Plusieurs possibilités :

                                            • Tu fais un switch
                                              switch (typem) {
                                                  case TypeMoteur.DIESEL:
                                                      System.out.println("Moteur Diesel");
                                                      break;
                                                  // ...
                                              }
                                              Pas propore car pas maintenable : l'ajout ou la suppression d'éléments t'imposera de modifier tous les switch !
                                            • Utiliser un attribut comme dans mon exemple précédent
                                              Plus propre car tu peux imposer ce String et donc l'ajout de nouvelles valeurs dans l'enum nécessitera de saisir ce String.
                                              System.out.println(typem.getTitle());
                                            • Tu peux personnaliser l'affichage par défaut (ou plutôt changer sa représentation sous forme de String), qui affiche par défaut le nom de la variable
                                              enum TypeMoteur { DIESEL; }
                                              System.out.println(TypeMoteur.DIESEL); // Console: DIESEL
                                              Pour changer cela il faut redéfinir la méthode toString : dans celle-ci tu appliques une des 2 méthodes précédentes.

                                            Personnellement l'attribut & le toString est la meilleur solution

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                            Anonyme
                                              27 novembre 2014 à 16:20:59

                                              Merci.

                                              Mais là, du coup et malgré les semaines passées sur le sujet, je me rends compte à quel point, je suis nul en Java.

                                              J'ai une classe Garage qui est composée de plusieurs Vehicule qui ont un moteur qui ont un TypeMoteur.

                                              Pour simplifier, on peut oublier le Garage dans un premier temps.

                                              MoteurEssence, Moteur..., sont des classes filles de la classe Moteur.

                                              L’énoncé suggère, je crois, que le Main de test construise des objets Vehicule puis appelle Garage et affiche les caractéristiques des objets conçus.

                                              Je souhaite donc dans un premier temps, afficher -Moteur ESSENCE- et je ne sais pas comment utiliser Vehicule, Moteur et ses filles et TypeMoteur.

                                              • je ne sais pas mettre la solution 2 que tu me propose en marche, dans quel objet faire System.out.println(typem.getTitle());
                                                et où construire getTitle().
                                              • je ne sais pas redefinir toString() ni où. 
                                              • je ne sais quels set...() et get...(), je dois fabriquer ni où.

                                              Bref, malgré ton aide, la déprime.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 novembre 2014 à 16:42:26

                                                La programmation, et la programmation orienté objet, sont des conceptes très compliqués. Il faut beaucoup d'études et de pratique pour être à l'aise !
                                                Sans vouloir te motiver, ou plutôt pour t'expliquer qu'on n'obtient rien sans se creuser les méninges : j'ai déjà passé des weekends entiers pour afficher un simple "Hello World" (paramétrage de Spring).

                                                - Pour l'enum tu peux reprendre ce que j'ai fait précédemment avec TotoFamily : c'est exactement la même chose.
                                                - Pour le toString() une recherche sur Google te donnera la solution instantanément (très facile).
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                                Anonyme
                                                  27 novembre 2014 à 17:23:15

                                                  je ne compreds pas.

                                                  Pour l'enum, en recopiant ton exemple, j'ai ça :

                                                  package com.garage;
                                                  enum TypeMoteur {
                                                      DIESEL("Moteur DIESEL"),// new TypeMoteur("DIESEL")
                                                      ESSENCE("Moteur ESSENCE"),
                                                      HYBRIDE("Moteur HYBRIDE"),
                                                      ELECTRIQUE("Moteur ELECTRIQUE");
                                                        
                                                      private final String typem;
                                                        
                                                      private TypeMoteur (String typem) {
                                                          this.typem= typem;
                                                      }
                                                        
                                                      public String getTypem() {
                                                          return typem;
                                                      }
                                                      
                                                  }

                                                  Mais comment obtenir l'affichage désiré dans mon fichier de test ?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 novembre 2014 à 17:35:59

                                                    Alors si tu veux afficher un objet tu as 2 possibilités :
                                                    - System.out.println(tonTypeDeMoteur.getTitle()); // Tu affiches le titre
                                                    - System.out.println(tonTypeDeMoteur); // Cela appelle implicitement la méthode toString(), qui par défaut affichera le nom de la variable pour une enum et quelque chose de pas très lisible pour les objets normaux

                                                    Pour afficher un moteur idem :
                                                    - Soit tu appelles attribut par attribut
                                                    - Soit tu redéfinies toString()
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                                    Anonyme
                                                      28 novembre 2014 à 10:03:21

                                                      Merci de ton aide.

                                                      Je vais arrêter ce TP, le temps imparti pour le faire est écoulé, du coup, je n'ai plus l’énoncé.

                                                      Tant pis, j'irai en chercher ailleurs.

                                                      Je vais essayer de retenir ce que tu m'a appris.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        28 novembre 2014 à 19:26:30

                                                        Bonjour à tous,

                                                        Merci Pinguest pour ton intervention sur ce sujet, j'étais comme 83alain, et du coup j'ai mieux compris, mais j'ai juste une question sur une partie du main qui suit:

                                                        Vehicule lag1 = new Lagouna();
                                                             lag1.setMoteur(new MoteurEssence("150 Chevaux", 10256d));

                                                        je croyais que l'on ne peux pas instancier les enum : il faut que tu fasse TypeMoteur.DIESEL ou autre. Mais dans le main pour moi on l'instancie, donc je suis perdu.
                                                        merci d'avance et merci de votre aide
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          28 novembre 2014 à 19:50:27

                                                          Où vois-tu qu'on l'instancies ?

                                                          Donne moi les 2 lignes que l'on compre : enum + instanciation

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                                                            28 novembre 2014 à 19:58:47

                                                            J'ai pas du tout comprendre, je pensais que le fait de faire "New MoteurEssence" était une instanciation.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              28 novembre 2014 à 20:20:39

                                                              Oui !

                                                              Les 2 sont complètement différents :

                                                              • MoteurEssence est une classe qui hérite de Moteur.
                                                                new MoteurEssence(...) crée un objet de ce type.
                                                              • TypeMoteur est une enumération, dont ESSENCE et DIESEL en sont des valeurs.
                                                                TypeMoteur.ESSENCE permet de récupérer la valeur.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)

                                                              Apprenez à programmer en Java

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown