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
    Atelier 1.2 exercice E: constructeur et `super`
    • Atelier 1.2 exercice E: constructeur et super
      • Objectifs
      • Réalisation
        • Étape 01: créer la classe MonAtelier1_2_E
        • Étape 02: hériter de Atelier1_2_E
        • Étape 03: copier les classes et les interfaces à partir de atelier1_2_D
        • Étape 04: ajouter les constructeurs
        • Étape 05: redéfinir formater dans Auto
        • Étape 06: redéfinir rouler dans Mobilette
        • Étape 07: ajouter la méthode main
        • Étape 08: exécuter pour valider

    Atelier 1.2 exercice E: constructeur et super #

    Objectifs #

    1. Je crée la classe MonAtelier1_2_E qui hérite de la classe Atelier1_2_E

    2. Je recopie les classes suivantes de l’atelier1_2_D:

      • Vehicule
      • Auto
      • Camion
      • Mobilette
      • Moto
    3. Je recopie les interfaces suivantes de l’atelier1_2_D:

      • Rouleur
      • Formateur
    4. J’ajoute un constructeur Vehicule(double totalKilometres)

    5. J’ajoute un constructeur Camion(double totalKilometres, double chargementEnKilos)

    6. Dans Auto, je redéfinis la méthode formater pour retourner:

      • la même chose que Vehicule.formater, mais en ajoutant " J'adore mon XXX!"
        • où: XXX sera remplacé par le nom du véhicule (ici auto)
    7. Dans Mobilette, je redéfinis la méthode rouler pour:

      • faire d’abord la même chose que Vehicule.rouler, puis
        • afficher "La mobilette devrait déjà être remisée!"
          • si la date actuelle est plus grande que le 1er octobre 2020
        • sinon afficher "ATTENTION: il reste JOURS avant de remiser la mobilette"
          • où JOURS est le nombre de jours qu’il reste avant le 1er octobre 2020
    8. Je corrige les erreurs de compilation

    9. J’ajoute une méthode main à la classe MonAtelier1_2_E:

      public static void main(String[] args) {
      
              new MonAtelier1_2_E().valider();
          }
      
    10. J’implante les méthodes pour remplir le contrat du Atelier1_2_E, p.ex:

      @Override
          public Object creerMoto(double kilometrage) {
              return new Moto(kilometrage);
          }
      
          @Override
          public Object creerMobilette(double kilometrage) {
              return new Mobilette(kilometrage);
          }
      
          @Override
          public Object creerAuto(double kilometrage) {
              return new Auto(kilometrage);
          }
      
          @Override
          public Object creerCamion(double kilometrage, double chargementEnKilos) {
              return new Camion(kilometrage, chargementEnKilos);
          }
      
      • NOTE: il y a maintenant des paramètres à passer au constructeur
    11. J’exécute mon projet et je valide mes classes et mes méthodes

    12. J’ajoute les fichiers du projet dans Git

    13. Je fais un commit et un push

    Réalisation #

    Étape 01: créer la classe MonAtelier1_2_E #

    1. Je crée une nouvelle classe nommée MonAtelier1_2_E
      • Clique-droit sur le projet => New => Class
        • Name: MonAtelier1_2_E

    Étape 02: hériter de Atelier1_2_E #

    1. J’ouvre MonAtelier1_2_E et j’ajoute extends Atelier1_2_E

    2. J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter le import de Atelier1_2_E

    3. J’utilise Ctrl+.Eclipse: Ctrl+1 pour générer les méthodes manquantes

      • option add unimplemented methods

    Étape 03: copier les classes et les interfaces à partir de atelier1_2_D #

    1. Pour les classes Auto, Camion, Mobilette, Moto et Vehicule

      • je fais un copier-coller:
        • à partir de la classe située dans le paquet atelier1_2_D
        • vers le paquet atelier1_2_E
    2. Pour les interfaces Rouleur et Formateur

      • je fais un copier-coller:
        • à partir de l’interface située dans le paquet atelier1_2_D
        • vers le paquet atelier1_2_E

    Étape 04: ajouter les constructeurs #

    1. Dans Vehicule, j’ajoute le constructeur suivant:

      public Vehicule(double totalKilometres) {
      		this.totalKilometres = totalKilometres;
      	}
      
    2. Dans Camion, j’ajoute le constructeur suivant:

      public Camion(double totalKilometres, double chargementEnKilos) {
      		super(totalKilometres);
      
      		this.chargementEnKilos = chargementEnKilos;
      	}
      
    3. J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter les constructeurs de

      • Auto, Moto et Mobilette

    Étape 05: redéfinir formater dans Auto #

    1. Dans Auto, je redéfinis formater:

      @Override
      	public String formater(){
      		return super.formater() + " J'adore mon " + nomVehicule() + "!";
      	}
      

    Étape 06: redéfinir rouler dans Mobilette #

    • Dans Mobilette, j’ajoute un attribut pour la date limite:
    public class Mobilette extends Vehicule {
        	
        	private LocalDate dateLimite = LocalDate.of(2020, 10, 1);
    
    • Dans Mobilette, je redéfinis la méthode rouler
    	@Override
        	public void rouler(double kilometres) {
        		super.rouler(kilometres);
        		
        		LocalDate aujourd_hui = LocalDate.now();
        		
        		if(aujourd_hui.compareTo(dateLimite) >= 0) {
        			
        			throw new RuntimeException("La mobilette devrait déjà être remisée!");
        			
        		}else {
        			
        			Period difference = Period.between(aujourd_hui, dateLimite);
        			
        			System.out.println("ATTENTION: il reste " + difference.getDays() + " jours avant de remiser la mobilette");
        		}
        	}
    

    Étape 07: ajouter la méthode main #

    1. J’ouvre MonAtelier1_2_E et j’ajoute la méthode main
    public class MonAtelier1_2_E extends Atelier1_2_E {
            
            public static void main(String[] args) {
                
                new MonAtelier1_2_E().valider();
            }
    

    Étape 08: exécuter pour valider #

    1. J’exécute mon programme

    2. Je vérifie que la validation est réussie:

    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Atelier 1.2 exercice E: constructeur et super
      • Objectifs
      • Réalisation
        • Étape 01: créer la classe MonAtelier1_2_E
        • Étape 02: hériter de Atelier1_2_E
        • Étape 03: copier les classes et les interfaces à partir de atelier1_2_D
        • Étape 04: ajouter les constructeurs
        • Étape 05: redéfinir formater dans Auto
        • Étape 06: redéfinir rouler dans Mobilette
        • Étape 07: ajouter la méthode main
        • Étape 08: exécuter pour valider