Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice Garage: bloqué au tout début need help :(

Sujet résolu
    14 octobre 2016 à 7:46:53

    Bonjour à tous,

    Je suis bloqué sur l'exercice http://exercices.openclassrooms.com/assessment/63?login=7805105&tk=f6429684c14b581c57e045e55cbaf26c&sbd=2016-02-01&sbdtk=2466d6bae51e373d89ac8e3f74213199 du cours Java.

    Mon plus gros souci est que je me retrouve face à une montagne d'informations que j'ai beaucoup de mal à extraire méthodiquement... Et du coup je ne sais pas du tout par où commencer. J'ai fait trois tentatives, en recommençant à chaque fois de zéro, mais je n'aboutis à rien.

    Ce que j'ai réussi à faire pour le moment, c'est créer les classes telles qu'elles sont définies sur le diagramme :

    * Garage,
    * Vehicule qui implémente l'interface Option,
    * Lagouna, D4 et A300B (qui héritent toutes trois de Vehicule),
    * GPS, Climatisation, BarreDeToit, SiegeChauffant et VitreElectrique (qui semblent hériter de l'interface Option bien qu'Eclipse ne le veut pas)
    * l'énumération Marque,
    * Moteur, qui est abstraite,
    * MoteurHybride, MoteurElectrique, MoteurEssence et MoteurDiesel (qui héritent toutes quatre de Moteur)
    * l'énumération TypeMoteur.

    Passé outre le problème de mes options que je n'arrive pas à créer, je ne comprends pas plusieurs choses dans le diagramme UML :

    * Pourquoi ne voit-on pas dans le diagramme la méthode setMoteur() qui est présente dans le code main ? Comment savoir si je dois la déclarer la coder dans Vehicule ou dans Lagouna, D4 ou A300B ?
    * Et de manière plus générale, sans vouloir avoir le travail mâché, par où est-on censé commencer ? J'ai déjà tenté de me concentrer classe par classe, mais j'ai l'impression que les nombreuses interactions entre elles rendent cette méthodologie impossible ; j'ai tenté également de partir du code main pour développer chaque méthode de classe une à une, mais j'arrive rapidement au même résultat...

    Je sais bien que ces questions paraissent venir d'un débutant complet, mais je galère totalement. Ça me frustre pas mal car j'avais passé sans aucun souci le premier TP (Conversion degrés Celsius-Fahrenheit) sans aucun problème.

    Merci par avance pour votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
      14 octobre 2016 à 17:32:53

      Salut, je suis sur cet exo aussi et je me pose la même question concernant le setMoteur(), je pense qu'il faut la mettre dans la classe Vehicule, tout comme addOption().

      J'ai fait un truc comme ça, ça a l'air de marcher, pour l'instant en tout cas :

      protected Moteur moteur;
      
      public void setMoteur(Moteur mot){
      
      moteur = mot;
      
      }

      C'est vrai que l'exo est pas facile à appréhender, il aborde toutes les notions du chapitre qui sont elles-mêmes pas faciles à appréhender.

      Perso j'ai fait étape par étape, ou plutôt ligne par ligne d'après ce qu'il nous donne dans sa classe de test, j'ai d'abord fait en sorte de pouvoir créer le garage, puis de pouvoir créer une Lagouna (sans me préoccuper des autres modèles), puis j'ai essayé d'ajouter l'option GPS, puis d'ajouter le moteur, une fois que ça marche pour 1 véhicule, 1 option et 1 moteur tu peux rajouter les autres facilement, j'en suis là pour l'instant, je me suis pas encore penché sur la lecture/écriture de fichier.

      • Partager sur Facebook
      • Partager sur Twitter
        14 octobre 2016 à 18:21:40

        Bonsoir,

        J'aurais fait les énumérations et l'interface en premier (les plus simples et rapides à faire et utile pour le reste des classes) :
        "TypeMoteur", "Marque", "Option" (avec une classe qui l'implémente, exemple : "GPS", pour les tests de l'interface "Option").
        Ensuite, la classe "Moteur" (avec une classe fille, exemple : "MoteurHybride", pour les tests de la classe "Moteur", si c'est une classe abstraite), suivi de la classe "Voiture" (avec une classe fille, exemple : "Lagouna", pour les tests de la classe "Voiture", si c'est une classe abstraite).
        On a, besoin d'un moteur pour construire une voiture ^^.
        Ensuite, la classe "Garage".
        Pour finir, on met les autres classes en place (là, plus d'importance).
        "D4", "A300B", "Clim", "BarreDeToit", "SiegeC", "VitreElect", "MoteurElec", "MoteurEssence", "MoteurDiesel".

        Toutes les voitures auront un moteur, donc il faut effectivement le mettre dans la classe du véhicule.
        (Il y a une flèche qui relit le moteur à la voiture dans le diagramme, donc pas besoin de penser, c'est dans la classe Voiture).

        Je ferais une classe abstraite pour "Voiture" et "Moteur", un moteur existe seulement à partir de son type, comme le véhicule. (Chacun programme comme il veut ;)).

        Bonne continuation.

        -
        Edité par pctronique 14 octobre 2016 à 18:23:22

        • Partager sur Facebook
        • Partager sur Twitter
          21 octobre 2016 à 14:37:58

          Tout d'abord, merci pour vos réponses :) Je me sentais bien largué et voir que vous aussi avez quelques soucis à comprendre le sujet m'a pas mal réconforté.

          Au final, j'ai réussi globalement à faire l'exercice, et ayant repris des cours sur l'héritage et les interfaces depuis une autre source. La seule chose que je n'ai pas réussie à faire est l'écriture dans le fichier, du coup j'ai un peu modifié le main pour afficher le garage avant et après ajout des voitures.

          • Partager sur Facebook
          • Partager sur Twitter

          Exercice Garage: bloqué au tout début need help :(

          × 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