ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
      • Ajout Format JSON
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Index
      • Point de vue sur l'IA
    Atelier1.3: implanter les procédures *déplacer à la fin/début*
    • Atelier1.3: implanter les procédures déplacer à la fin/début
      • Créer la classe MonTableau
      • Créer la classe Procedure
      • Coder les procédures dans la classe MonTableau
      • Exécuter l’outil de validation
      • Utiliser l’outil de validation pour visualiser votre code
      • Utiliser l’outil de validation pour visualiser le tableau d’objet
      • Question bonus

    Atelier1.3: implanter les procédures déplacer à la fin/début #

    Créer la classe MonTableau #

    1. En VSCode, sélectionner le paquet atelier1_3

    2. Ajouter la classe suivante au paquet atelier1_3

      • Nom de la classe: MonTableau
    3. Ouvrir la classe MonTableau et ajuster la signature

      public class MonTableau extends Tableau {
      
    4. En utilisant le raccourci Ctrl+.Eclipse: Ctrl+1, effectuer les tâches suivantes

      • importer la classe Tableau

    Créer la classe Procedure #

    1. Ajouter la classe suivante au paquet atelier1_3

      • Nom de la classe: Procedure
    2. Ouvrir la classe Procedure et ajuster la signature

      public class Procedure extends ProcedureDecaler<MonTableau> {
      
    3. En utilisant le raccourci Ctrl+.Eclipse: Ctrl+1, effectuer les tâches suivantes

      • importer la classe ProcedureDecaler

      • ajouter la méthode obligatoire classeMonTableau

    4. Ajouter le code suivant à la méthode main

      public static void main(String[] args) {
          NtroAppFx.launch(args);
      }
      
      • utiliser Ctrl+.Eclipse: Ctrl+1 pour corriger les erreurs de compilation
    5. Ajouter le code suivant à la méthode classeMonTableau

      protected Class<MonTableau> classeMonTableau() {
          return MonTableau.class;
      }
      

    Coder les procédures dans la classe MonTableau #

    1. Ouvrir MonTableau

    2. Ajouter la méthode suivante:

      @Override
      public void deplacerDecaler() {
      
          if(insererAuDebut) {
      
              insererAuDebut();
      
          }else {
      
              insererALaFin();
          }
      }
      
    3. Utiliser Ctrl+.Eclipse: Ctrl+1 pour ajouter les méthodes privées insererAuDebut et insererALaFin

    4. Coder les méthodes insererAuDebut et insererALaFin selon les procédures vues en théorie

    5. IMPORTANT par héritage, MonTableau contient déjà les attributs que vous devez utiliser

      • il faut utiliser ces attributs plutôt que des variables
        • p.ex. utiliser l’attribut i dans la boucle for et non une variable int i
      • sinon l’outil de validation ne pourra pas visualiser l’exécution de votre code

    Exécuter l’outil de validation #

    1. L’outil va vous indiquer si votre code est une solution (✔) ou s’il contient une ou des erreurs (✗)

      IMPORTANT

      • il faut quand même regarder la console pour voir les exceptions de type IndexOutOfBounds ou NullPointerException
      • vous pouvez quand même utiliser le débogueur

    Utiliser l’outil de validation pour visualiser votre code #

    1. Pour que l’outil puisse afficher chacune des étapes de la procédure, vous devez ajouter à la main des instructions Execution.ajouterEtape(), p.ex.

      public void insererAuDebut() {
      
          i = 0;
      
          Execution.ajouterEtape();
      
          memoireA = cartes[0];
      
          Execution.ajouterEtape();
      
          //...
      }
      
      • c’est à vous de décider ce qui constitue une étape.
      • cela n’influence pas la validation, mais vous permet de visualiser ce que votre code fait et pourrait vous aider à trouver des erreurs

    Utiliser l’outil de validation pour visualiser le tableau d’objet #

    1. Quand vous quitter (fermer) l’outil de validation, ce dernier va générer une visualisation du deriner tableau d’objets affiché

    2. Par exemple

      • Quitter à l’étape 7 / 11 ci-bas:

      • Va générer une visualisation du tableau d’objet de l’étape 7 / 11:

        [...]
        [INFO] Writing JSON files
        [INFO] Generating graphs
        [INFO] Exiting
        
      • Cette image ce trouve ici:

        _storage/graphs/MonTableau-05-solution.png

        • TRUC: on peut l’ouvrir à partir de GitBash avec

          $ start _storage/graphs/MonTableau.png`     # en windows
          
          $ xdg-open _storage/graphs/MonTableau.png`  # en linux
          $ open _storage/graphs/MonTableau.png`      # en macos
          

    Question bonus #

    1. Coder une autre procédure qui implante l’opération déplacer au début

    2. Avec l’outil de validation, comparer le nombre d’étapes entre la procédure vue en théorie et la votre

    3. Quelle est la différence d’efficacité? Est-ce une grosse différence selon vous?

    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Atelier1.3: implanter les procédures déplacer à la fin/début
      • Créer la classe MonTableau
      • Créer la classe Procedure
      • Coder les procédures dans la classe MonTableau
      • Exécuter l’outil de validation
      • Utiliser l’outil de validation pour visualiser votre code
      • Utiliser l’outil de validation pour visualiser le tableau d’objet
      • Question bonus