Atelier1.3: implanter les procédures déplacer à la fin/début #
Créer la classe MonTableau
#
-
En VSCode, sélectionner le paquet
atelier1_3
-
Ajouter la classe suivante au paquet
atelier1_3
- Nom de la classe:
MonTableau
- Nom de la classe:
-
Ouvrir la classe
MonTableau
et ajuster la signaturepublic class MonTableau extends Tableau {
-
En utilisant le raccourci Ctrl+.Eclipse: Ctrl+1, effectuer les tâches suivantes
- importer la classe
Tableau
- importer la classe
Créer la classe Procedure
#
-
Ajouter la classe suivante au paquet
atelier1_3
- Nom de la classe:
Procedure
- Nom de la classe:
-
Ouvrir la classe
Procedure
et ajuster la signaturepublic class Procedure extends ProcedureDecaler<MonTableau> {
-
En utilisant le raccourci Ctrl+.Eclipse: Ctrl+1, effectuer les tâches suivantes
-
importer la classe
ProcedureDecaler
-
ajouter la méthode obligatoire
classeMonTableau
-
-
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
-
Ajouter le code suivant à la méthode
classeMonTableau
protected Class<MonTableau> classeMonTableau() { return MonTableau.class; }
Coder les procédures dans la classe MonTableau
#
-
Ouvrir
MonTableau
-
Ajouter la méthode suivante:
@Override public void deplacerDecaler() { if(insererAuDebut) { insererAuDebut(); }else { insererALaFin(); } }
-
Utiliser Ctrl+.Eclipse: Ctrl+1 pour ajouter les méthodes privées
insererAuDebut
etinsererALaFin
-
Coder les méthodes
insererAuDebut
etinsererALaFin
selon les procédures vues en théorie -
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 bouclefor
et non une variableint i
- p.ex. utiliser l’attribut
- sinon l’outil de validation ne pourra pas visualiser l’exécution de votre code
- il faut utiliser ces attributs plutôt que des variables
Exécuter l’outil de validation #
-
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
ouNullPointerException
- vous pouvez quand même utiliser le débogueur
- il faut quand même regarder la console pour voir les exceptions de type
Utiliser l’outil de validation pour visualiser votre code #
-
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 #
-
Quand vous quitter (fermer) l’outil de validation, ce dernier va générer une visualisation du deriner tableau d’objets affiché
-
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 #
-
Coder une autre procédure qui implante l’opération déplacer au début
-
Avec l’outil de validation, comparer le nombre d’étapes entre la procédure vue en théorie et la votre
-
Quelle est la différence d’efficacité? Est-ce une grosse différence selon vous?