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
        • Projets vedettes 2025
        • 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
        • Calendrier
        • Structure du cours
        • Évaluations
        • 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
      • Jquery
      • Jquery Ui
      • Point de vue sur l'IA
    Atelier 1.2 exercice B: polymorphisme
    • Atelier 1.2 exercice B: polymorphisme
      • Objectifs
      • Réalisation
        • Étape 01: créer la classe MonAtelier1_2_B
        • Étape 02: hériter de Atelier1_2_B
        • Étape 03: créer la classe MonAccepteur
        • Étape 04: créer la classe MonFormateur
        • Étape 05: remplir les méthdes de MonAtelier1_2_B
        • Étape 06: ajouter la méthode main
        • Étape 07: exécuter pour valider

    Atelier 1.2 exercice B: polymorphisme #

    Objectifs #

    1. Je crée la classe MonAtelier1_2_B qui hérite de la classe Atelier1_2_B

    2. Je crée la classe MonAccepteur qui implante l’interface Accepteur

      • la méthode accepterSiDeuxRoues(Vehicule vehicule) doit:
        • retourner vrai si le vehicule a deux roues
        • retourner faux sinon
      • la méthode accepterSiEconomique(Vehicule vehicule) doit:
        • retourner vrai si la consommation du vehicule est 6.0 ou moins
        • retourner faux sinon
      • la méthode accepterSiMoto(Vehicule vehicule) doit:
        • retourner vrai si le vehicule est une Moto
        • retourner faux sinon
    3. Je crée la classe MonFormateur qui implante l’interface Formateur

      • la méthode formater(Vehicule vehicule) doit retourner:
        • "Un/e VEHICULE est un véhicule à ROUES roues. Sa comsomation d'essence est CONSO litres par kilomètre."
        • où:
          • Un ou Une selon le type de vehicule
          • VEHICULE est remplacé par le type de vehicule
          • ROUES est remplacé par le nombre de roues du vehicule
          • CONSO est remplacé par la consommation du vehicule
    4. J’implante les méthodes fournirAccepteur et fournirFormateur

    5. J’ajoute une méthode main à la classe MonAtelier1_2_B:

      public static void main(String[] args) {
      
              new MonAtelier1_2_B().valider();
          }
      
    6. J’exécute mon projet et je valide mes classes et mes méthodes

    7. J’ajoute les fichiers du projet dans Git

    8. Je fais un commit et un push

    Réalisation #

    Étape 01: créer la classe MonAtelier1_2_B #

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

    Étape 02: hériter de Atelier1_2_B #

    1. J’ouvre MonAtelier1_2_B et j’ajoute extends Atelier1_2_B

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

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

      • option add unimplemented methods

    Étape 03: créer la classe MonAccepteur #

    1. Je crée une nouvelle classe nommée MonAccepteur

      • Clique-droit sur le projet => New => Class
        • Name: MonAccepteur
    2. J’ouvre MonAccepteur et j’ajoute implements Accepteur

    3. J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter le import de Accepteur

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

      • option add unimplemented methods
    5. Je remplis la méthode accepterSiDeuxRoues

      @Override
      	public boolean accepterSiDeuxRoues(Vehicule vehicule) {
      		return vehicule.nombreDeRoues() == 2;
      	}
      
    6. Je remplis la méthode accepterSiEconomique

      @Override
      	public boolean accepterSiEconomique(Vehicule vehicule) {
      		return vehicule.consommationLitresParKilometre() <= 6.0;
      	}
      
    7. Je remplis la méthode accepterSiMoto

      @Override
      	public boolean accepterSiMoto(Vehicule vehicule) {
      		return vehicule instanceof Moto;
      	}
      

    Étape 04: créer la classe MonFormateur #

    1. Je crée une nouvelle classe nommée MonFormateur

      • Clique-droit sur le projet => New => Class
        • Name: MonFormateur
    2. J’ouvre MonFormateur et j’ajoute implements Formateur

    3. J’utilise Ctrl+.Eclipse: Ctrl+1 pour ajouter le import de Formateur

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

      • option add unimplemented methods
    5. Je remplis la méthode formater comme suit:

      
      	@Override
      	public String formater(Vehicule vehicule) {
      
      		StringBuilder builder = new StringBuilder();
      
      		if(vehicule instanceof Auto) {
      			builder.append("Une auto");
      		}else if(vehicule instanceof Camion) {
      			builder.append("Un camion");
      		}else if(vehicule instanceof Fourgonnette) {
      			builder.append("Une fourgonnette");
      		}else if(vehicule instanceof Moto) {
      			builder.append("Une moto");
      		}else if(vehicule instanceof Mobilette) {
      			builder.append("Une mobilette");
      		}
      
      		builder.append(" est un véhicule à ");
      		builder.append(vehicule.nombreDeRoues());
      		builder.append(" roues. Sa consommation d'essence est ");
      		builder.append(vehicule.consommationLitresParKilometre());
      		builder.append(" litres par kilomètre.");
      
      		return builder.toString();
      	}
      

    Étape 05: remplir les méthdes de MonAtelier1_2_B #

    1. Je peux maintenant remplir fournirAccepteur comme suit:

      @Override
          public Accepteur fournirAccepteur() {
              return new MonAccepteur();
          }
      
    2. Et fournirFormateur comme suit:

      @Override
          public Formateur fournirFormateur() {
              return new MonFormateur();
          }
      

    Étape 06: ajouter la méthode main #

    1. J’ouvre MonAtelier1_2_B et j’ajoute la méthode main

      public static void main(String[] args) {
      
              new MonAtelier1_2_B().valider();
          }
      

    Étape 07: 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 B: polymorphisme
      • Objectifs
      • Réalisation
        • Étape 01: créer la classe MonAtelier1_2_B
        • Étape 02: hériter de Atelier1_2_B
        • Étape 03: créer la classe MonAccepteur
        • Étape 04: créer la classe MonFormateur
        • Étape 05: remplir les méthdes de MonAtelier1_2_B
        • Étape 06: ajouter la méthode main
        • Étape 07: exécuter pour valider