Vous êtes sur la page 1sur 4

TRAVAUX PRATIQUES : Le polymorphisme et l’héritage en java

Exercice 1 : Fichier, disque dur et disquette

Un fichier est caractérisé par : son nom, son extension, son emplacement et sa
taille sur disque (en kilo octets).
Les fichiers sont enregistrés dans des supports magnétiques pouvant être des
disquettes ou des disques durs
Une disquette est caractérisée par son nom logique, la taille d’un secteur en
kilo octets, le nombre de secteurs par pistes et le nombre de pistes par surface.
Un disque dur est caractérisé par son nom logique, la taille d’un secteur en kilo
octets, le nombre de secteurs par piste, le nombre de pistes par surfaces et le
nombre de surfaces.
Afin de pouvoir gérer son contenu, on suppose que chaque disque contient deux
structures de données afin de sauvegarder les caractéristiques des fichiers :
฀ Le premier contient une liste chainée (LinkedList) afin de sauvegarder les
caractéristiques d’un fichier donné.
฀ Le second contient une collection HashMap pour chaque fichier on
sauvegarde à travers une clé key le nom du fichier.(table d’adressage
pour le disque).

On se propose alors de développer les classes Fichier, Disquette et Disque


Dur:
La classe Fichier doit contenir :
➢ Un constructeur paramétré qui accepte comme arguments une liste
de valeurs permettant l’initialisation des différents attributs de
l’objet en question;
➢ Des mutateurs permettant la modification des valeurs des attributs
d’un objet;
➢ Des accesseurs permettant le renvoi des valeurs des attributs d’un
objet;
Chacune des deux classes Disquette et DisqueDur doit contenir :

Page1|4
➢ Un constructeur paramétré qui accepte comme arguments une liste
de valeurs permettant l’initialisation des différents attributs de
l’objet en question;
➢ Une méthode getEspaceDisque() permettant de calculer et de
retourner la taille totale du disque concerné (en kilo octets)
➢ Une méthode getEspaceLibre() permettant de calculer et de
retourner l’espace libre dans un disque (en kilo octets)
➢ Une méthode ajouterFichier() qui étant donnée un fichier f et
une clé key, permettant d’ajouter ce fichier au disque (ajouter un
fichier revient tout simplement à l’insérer à la fin du la liste chainée
si la taille de disque suffit, et attacher la clé au nom du fichier dans
la HashMap map).
➢ Une méthode explorerExtension() permettent d’afficher tous les
fichiers (nom, extension, emplacement et taille) ayant comme
extension celle qui est introduite comme paramètre. Dans le but
d’expérimenter le comportement de toutes les classes déjà
développées on se propose d’ajouter une nouvelle classe nommée
Application basée principalement sur la méthode main ().
Dans cette méthode principale on doit :
➢ Construire les fichiers suivants :
➢ (Nom : " examen " ; Extension : " doc " ; Taille 2 kilo ;
Emplacement : " C:\word ")
➢ (Nom : " bulletin " ; Extension : " xls " ; Taille 1 kilo ; Emplacement
: " C:\excel ")
➢ (Nom : " nature " ; Extension : " gif "; Taille 25 kilo ; Emplacement
: " C : ")
➢ construire le disque dur suivant :
(Nom logique : " C : "; Taille d’un secteur : 0.9375 kilo octet ; Nombre de
surfaces: 16 ; Nombre de piste par surface : 1024 ; Nombre de secteurs
par pistes : 520)
➢ ajouter tous les fichiers crées à ce disque
➢ afficher les noms des fichiers ayant comme extension « doc ».

Exercice 2 : Robot
Page2|4
Partie I :
1. Ecrire en java la classe Robot obéissant au schéma UML suivant.

Orientation : est un attribut qui désigne l’orientation du Robot (1 =


Nord, 2 =Est, 3 = Sud, 4 = West)
฀ La méthode tourner () qui permet de tourner l’orientation du Robot.
฀ Les constructeurs qui permettent d’initialiser les attributs du Robot
฀ La méthode affiche () qui permet d’afficher l’état et l’orientation d’un
Robot
2. Ecrire une classe TestRobot qui utilise cette classe ; sa fonction main
comprendra la création d’un tableau de quatre Robot, initialiser leur attributs, les
afficher, les mettre en marche (etat=true) ainsi que les orienter vers des
orientations différentes chacun de l’autre.
Partie II
Soit une classe RobotMobile qui hérite de Robot et ayant en plus les attributs
entiers privés abs et ord : ce sont les attributs qui définissent la positon de
RobotMobile (abscisse et ordonné) ainsi qu’une méthode void avancer(int x)
qui permet d’avancer le Robot selon son orientation :
฀ si on avance de x vers l’Est l’abscisse augmente de x,
฀ si on avance vers le West de x l’abscisse diminue de x,
฀ si on avance vers le nord de x l’ordonnée augmente de x,
฀ si on avance vers le Sud de x l’ordonnée diminue de x,
Et une méthode void affichePosition() qui affiche la position (coordonnées).

Page3|4
1. Ecrire un constructeur sans argument de la classe RobotMobile
2. Ecrire un constructeur à quatre arguments (type, code, abs et ord) de la
classe RobotMobile
3. Redéfinissez la méthode affiche tout en utilisant celle de la classe mère et la
méthode affichePosition().
4. Ecrire une classe testRobotMobile qui permet de créer un RobotMobile, lui
afficher les attributs et lui appliquer la séquence d’actions suivante tout en
affichant chaque fois la position du Robot ainsi que son orientation. a. Tourner
vers l’Est
b. Avancer de 4 vers le West
c. Avancer de 6 vers le Nord
d. Avancer de 14 vers l’Est
e. Reculer de 8 vers le sud

Page4|4

Vous aimerez peut-être aussi