Skip to content

studoo-app/JAVA-TD6-SIO2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

separe

TD6 JAVA - Training POO 1

Version

Objectifs

  • Les concepts d’interfaces en Java.
  • La lecture et l’interprétation d’un diagramme de classe.
  • L’implémentation d’un diagramme de classe simple.
  • La refactorisation du code afin d’améliorer sa modularité et sa maintenabilité.

Vous travaillerez sur une application de gestion de véhicules. L’exercice se découpe en trois parties progressives.

Partie 1 : Rappels – Implémentation d’un diagramme de classes simple

Objectifs :

  • Lire et comprendre un diagramme de classes.
  • Implémenter en Java une hiérarchie de classes de base.

Énoncé :

Vous disposez du diagramme de classes suivant :

classDiagram
    class Vehicule {
        <<Abstract>>
        # String marque
        # String modele
        + demarrer() void
        + arreter() void
    }

    class Voiture {
        - int nbPortes
        + klaxonner() void
    }

    class Camion {
        - double capaciteChargement
        + klaxonner() void
    }

    Vehicule <|-- Voiture
    Vehicule <|-- Camion

Loading

Tâches :

  1. Créez une classe abstraite Vehicule qui contient les attributs marque et modele, ainsi que les méthodes demarrer() et arreter().
  2. Créez deux classes concrètes, Voiture et Camion, qui étendent Vehicule. Chacune doit implémenter une méthode klaxonner().
  3. Veillez à respecter les conventions de nommage et la bonne organisation du code (constructeurs, getters/setters si nécessaire, commentaires).

Partie 2 : Correction et optimisation – Introduction d’une interface

Objectifs :

  • Identifier des comportements communs.
  • Extraire ces comportements dans une interface.
  • Refactoriser le code pour améliorer la flexibilité.

Énoncé :

En observant votre code de la Partie 1, vous remarquez que la méthode klaxonner() est présente dans les deux classes Voiture et Camion.

Tâches :

  1. Créez une interface nommée Klaxonnable qui déclare la méthode klaxonner().
  2. Faites en sorte que les classes Voiture et Camion implémentent cette interface.
classDiagram
    class Vehicule {
        <<Abstract>>
        # String marque
        # String modele
        + demarrer() void
        + arreter() void
    }

    class Voiture {
        - int nbPortes
        + klaxonner() void
    }

    class Camion {
        - double capaciteChargement
        + klaxonner() void
    }

    class Klaxonnable {
        <<interface>>
        + klaxonner() void
    }

    Vehicule <|-- Voiture
    Vehicule <|-- Camion
    Klaxonnable <|.. Voiture
    Klaxonnable <|.. Camion
Loading

Partie 3 : Extension – Implémentation de diagrammes de classes complexes avec interfaces

Objectifs :

  • Appliquer vos connaissances pour étendre l’application.
  • Créer de nouvelles interfaces et classes en suivant un nouveau diagramme de classes.

Énoncé :

Vous allez maintenant ajouter de nouvelles fonctionnalités à votre application en suivant le diagramme de classes suivant :

classDiagram
%% Classes de base
    class Vehicule {
        # String marque
        # String modele
        + demarrer() void
        + arreter() void
    }

    class Voiture {
        # int nbPortes
        + klaxonner() void
    }

    class Camion {
        # double capaciteChargement
        + klaxonner() void
    }

%% Classes étendues
    class VoitureDeCourse {
        - boolean turboActive
        + activerTurbo() void
        + desactiverTurbo() void
    }

    class CamionDeTransport {
        - double chargeActuelle
        + charger(poids: double) void
        + decharger(poids: double) void
    }

%% Interfaces
    class Klaxonnable {
        <<interface>>
        + klaxonner() void
    }

    class Transportable {
        <<interface>>
        + charger(poids: double) void
        + decharger(poids: double) void
    }

%% Relations d'héritage
    Vehicule <|-- Voiture
    Vehicule <|-- Camion
    Voiture <|-- VoitureDeCourse
    Camion <|-- CamionDeTransport

%% Implémentation d'interfaces
    Klaxonnable <|.. Voiture
    Klaxonnable <|.. Camion
    Transportable <|.. CamionDeTransport

Loading

Releases

No releases published

Packages

No packages published

Languages