• 15 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 28/01/2019

Importez votre premier projet

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Maintenant que vous avez compris le fonctionnement de base des variables et de la saisie utilisateur, nous allons débuter notre menu.

Le sujet du chapitre

Dans ce chapitre, nous allons afficher 3 menus au choix pour notre utilisateur :

  • Le menu Poulet

  • Le menu Boeuf

  • Le menu Végétarien

L'utilisateur va pouvoir saisir le numéro 1, 2 ou 3 pour indiquer le menu qu'il souhaite. Le programme affichera alors en fonction du choix :

  • Vous avez choisi le menu 1

  • Vous avez choisi le menu 2

  • Vous avez choisi le menu 3

Importons notre projet

En développement on travaille toujours avec un système de versionning comme git. Si vous n'êtes pas familier avec ce type d'outil, je vous conseille de regarder au moins la première partie du cours consacré à git sur OpenClassrooms.

Nous allons ici travailler avec un repository en local. Nous allons utiliser git tout au long de ce cours pour que vous preniez des bonnes habitudes de travail dès le début. Souvenez-vous : tant que ce n'est pas commit, ça n'existe pas !

Nous allons utiliser une fonctionnalité présente dans IntelliJ pour importer notre projet.

Commencez par cliquer sur Check out from Version Control.

Check out from Version Control
Check out from Version Control

Choisissez l'option Git.

Option Git
Option Git

Sur l'écran suivant, saisissez les informations suivantes :

Clone Repository
Clone Repository

Confirmez la création d'un projet.

Confirmation Checkout
Confirmation Checkout

Sur l'écran suivant, laissez Create project from existing sources.

Import Project
Import Project

 Laissez le nom et le dossier déjà saisis et faites Next.

Nom du projet
Nom du projet

Laissez cochées les 2 checkbox. Ces 2 sous-dossiers vont contenir les fichiers du programme. Faites Next.

Dossiers sources
Dossiers sources

Il n'y a pas de libraries associées au projet pour l'instant. Vous comprendrez dans les prochains chapitres ce qu'est une library. Faites Next.

Libraries
Libraries

Il n'y a qu'un module dans notre projet. De nouveau, vous comprendrez par la suite ce qu'est exactement un module. Faites Next.

Modules
Modules

 Si vous avez plusieurs versions de Java configurées dans IntelliJ, choisissez la version que vous avez installée et faites Next

Version Java
Version Java

Les frameworks et les libraries sont deux notions voisines. Un chapitre est dédié aux deux. Il n'y a pas de frameworks utilisés avec ce projet. Faites Finish.

Frameworks
Frameworks

 Votre projet est prêt ! Il contient les fichiers suivants.

Fichiers du projet
Fichiers du projet

Réparons notre projet

Le projet que vous venez d'importer contient les fichiers de MyMenu (image ci-dessus).

Il y a donc :

  • une classe (un fichier) Main ;

  • une classe Order ;

  • une classe OrderTest.

Main

Le main est un peu compliqué pour l'instant. Nous y reviendrons plus tard.

Order

Si vous ouvrez Order (en double cliquant dessus), vous pouvez voir qu'il y a deux fonctions qu'il va falloir remplir. 

packagecom.ocr.anthony;

public class Order {
    /**
    * Display all available menus in the restaurant.
    */
    public void displayAvailableMenus() {
    
    }
    
    /**
    * Display a selected menu.
    * @param nbMenu The selected menu.
    */
    public void displaySelectedMenu(int nbMenu) {
    
    }
}

Dans cette situation-là,  int nbMenu  est un paramètre de fonction. Son comportement est le même qu'une variable, vous pouvez donc modifier sa valeur.

De la même façon que pour les variables, le nommage des fonctions est important. J'ai utilisé ici le format CamelCase. Avec  displayAvailableMenus  on comprend immédiatement que la fonction sert à afficher les menus disponibles.

OrderTest

La classe OrderTest n'est pas contenue dans le dossier src, comme nous en avons l'habitude. Il est contenu dans le dossier test.

Un exemple typique de test est : j'ai une fonction qui sert à additionner 2 nombres. Si je lui fournis 5 et 7, elle doit me renvoyer 12.

Ce test est extrêmement simple mais si un jour un développeur modifie la fonction additionner et change son comportement, le test indiquera alors : attention 5 et 7 ne font plus 12 !

Dans le cadre de notre projet, nous avons créé une classe (fichier) Order. Cette classe va contenir différentes fonctions concernant les commandes de nos clients. Vous l'avez sûrement compris, la classe OrderTest va tester notre classe Order et s'assurer que celle-ci fonctionne correctement.

Si vous ouvrez OrderTest (en double cliquant dessus), vous verrez de nombreuses erreurs.

La première vient du fait que pour tester notre programme nous utilisons un outil nommé JUnit en version 5.0 et celui-ci n'est pas inclus dans Java. Il faut l'ajouter et c'est très simple.

Placez le sélecteur sur  junit  et faites alt + entrée un court instant, puis faites Add 'JUnit5.0' to classpath.

Ajout JUnit 5.0
Ajout JUnit 5.0

Puis faites OK.

Validation JUnit5
Validation JUnit5

JUnit5 apparaît dans les External Librairies sur le côté et il n'y a plus d'erreur.

JUnit5.0 dans External Libraries
JUnit5.0 dans External Libraries

Pour l'instant vous ne comprenez pas le contenu de cette classe. Il y a des notions avancées que vous comprendrez plus tard. Tout ce dont vous devez vous occuper ici, c'est qu'il y a 2 tests dans cette classe.

Le format utilisé pour nommer les tests est le Given/When/Then. Cela consiste à décrire le test à travers 3 étapes :

Given : quels sont les paramètres de fonctions utilisés ?
When : dans quel contexte ?
Then : quel doit être le résultat ?

Pour le premier  Given_Nothing_When_DisplayMenuSelection_Then_DisplayText , on a donc :

  • Given : Nothing → aucun paramètre.

  • When :  DisplayMenuSelection →Au moment où l'on affiche la sélection du menu.

  • Then : DisplayText →Du texte doit être affiché.

Pour le second  Given_Vegetarian_When_AskForMenuSelected_Then_DisplayCorrectSentence , on a :

  • Given : Nothing → On donne la valeur correspondant au menu végétarien (c'est-à-dire 3).

  • When : DisplayMenuSelection → Au moment où l'on affiche le menu choisi.

  • Then : DisplayCorrectSentence → la phrase correcte doit s'afficher.

Cliquez maintenant sur le double triangle vert à coté du nom de la classe OrderTest.

Lancement tests via IntelliJ
Lancement tests

Une fenêtre s'ouvre et vous indique en rouge que nos tests ne fonctionnent pas !

Erreur de tests dans IntelliJ
Erreur de tests

C'est normal que nos tests ne fonctionnent pas. Pour l'instant  displayAvailableMenu  et  displaySelectedMenu  de la classe  Order  ne font rien.

Allez on passe au code !

Dans le monde du développement logiciel, on développe toujours avec d'autres développeurs. Il y a toujours des dépendances entre le code de chaque développeur. C'est dans cette situation que nous sommes.

Prenons cette situation : je suis votre chef de projet (je suis donc un peu plus à l'aise que vous en développement logiciel ;)). J'ai codé la base de ce projet avec la class Main et OrderTest. Je n'ai pas le temps de coder le contenu de la class Order, c'est votre job !

La fonction  displayAvailableMenu  doit afficher :

Choix menu
1 - poulet
2 - boeuf
3 - végétarien
Que souhaitez-vous comme menu ?

La fonction  displaySelectedMenu  doit afficher en fonction du numéro choisi :

Vous avez choisi le menu 3

Pensez à lancer les tests de manière régulière pour voir si vous êtes sur la bonne piste. Quand les tests sont OK, vous pouvez lancer le programme via run 'Main.main()' !

Il est possible de concaténer (coller) une chaîne de caractères avec un entier en utilisant le symbole +

jshell> "Hello " + 17
$4 ==> "Hello 17"

Vous n'avez pas réussi à trouver la solution ? La voici :

package com.ocr.anthony;

public class Order {
    /**
     * Display all available menus in the restaurant.
     */
    public void displayAvailableMenu() {
        System.out.println("Choix menu");
        System.out.println("1 - poulet");
        System.out.println("2 - boeuf");
        System.out.println("3 - végétarien");
        System.out.println("Que souhaitez-vous comme menu ?");
    }
    /**
     * Display a selected menu.
     * @param nbMenu The selected menu.
     */
    public void displaySelectedMenu(int nbMenu) {
        System.out.println("Vous avez choisi le menu " + nbMenu);
    }
}

Relancez les tests. Ils sont tous au vert !

Tests OK
Tests OK

Exécutez votre programme en ouvrant le main puis en cliquant sur la flèche verte à gauche de la ligne "public class Main". Vous devez avoir :

Choix menu
1 - poulet
2 - boeuf
3 - végétarien
Que souhaitez-vous comme menu ?
2
Vous avez choisi le menu 2

Process finished with exit code 0

Pour l'instant notre programme ne gère pas du tout les erreurs. Vous pouvez taper n'importe quel chiffre et ça fonctionne. Pire encore, vous pouvez taper du texte et cela cause un plantage. Pas de panique, on réglera tout ça par la suite !

Bien sûr, quand vous avez fini vos modifications, n'oubliez pas de commit via git avec un beau message explicite.

Vous pouvez le faire comme vous en avez l'habitude, ou utiliser les outils très complets présents dans IntelliJ. Ils se situent dans le menu VCS :

Menu VCS dans IntelliJ
Menu VCS

La fonctionnalité de Commit par exemple est très aboutie. Décrivez les modifications effectuées dans la rubrique "Commit Message" puis cliquez sur "Commit" (précisez un nom et un mail pour configurer Git) :

Commit depuis IntelliJ
Commit depuis IntelliJ
Exemple de certificat de réussite
Exemple de certificat de réussite