Programmation orientée objet TP 3
[Link] Prise en main de l’environnement Java
Exercice 1
Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de véhicules destinés à la
location.
Pour chaque véhicule, il est demandé de renseigner le modèle, l'année d'achat1, le prix d'achat (capable de
gérer les centimes), le numéro d'immatriculation et le permis (une lettre) nécessaire à la conduite de ce véhicule.
Plusieurs types de véhicules sont possibles à la location, certains ayant des caractéristiques particulières. Ainsi,
il est demandé de représenter l'information comme quoi une voiture dispose ou non d'un autoradio. Pour la location
d'un camion, le volume de stockage possible du camion doit être précisé. Enfin, des autocars peuvent aussi être
loués, et pour ces véhicules il est nécessaire de connaître leur volume (pas forcément entier) de stockage
possibles ainsi que le nombre de passagers qu'ils peuvent transporter.
Modélisation
1. Dessiner l'arbre d'héritage de classes, où figurera les noms des classes, les attributs et leurs types, et les
liens d'héritage.
2. Traduire la définition des classes en Java. Prévoyez un constructeur pertinent pour chaque classe.
3. Instancier dans un programme principal (méthode main() d'une classe, la classe Test par exemple)
chacune de ces classes (voir la dernière partie du TP pour des exemples de voitures, de camions et
d'autocars).
Codage des méthodes
1. Définir un constructeur qui initialise les différents champs de chacune des classes.
2. Écrire les méthodes ajouterAutoradio() et enleverAutoradio() qui permettent de fixer la
valeur de l'attribut autoradio d'une voiture.
3. Écrire la méthode age() qui retourne l'âge d'un véhicule (en nombre d'années). L'année actuelle sera
écrite en dur dans le code.
4. Écrire la méthode afficherVehicule() qui affiche sur la sortie standard (en utilisant la méthode
[Link](…)) une chaîne de caractères caractérisant un véhicule. Écrire la méthode
afficherVoiture() qui affiche une chaîne de caractères caractérisant une voiture.
5. Écrire une méthode peutTransporterVolume(…) qui, à partir d'un volume donné en paramètre,
retourne vrai ou faux selon que le camion peut ou non permettre le transport de ce volume.
6. Écrire une méthode coutLocation(…) qui calcule le coût quotidien de location d'un véhicule. Ce coût
est calculé comme suit : pour les véhicules de moins d'un an, le coût de location est le prix d'achat du
véhicule / 200, et pour les véhicules plus anciens, le coût de location est le prix d'achat / 250.
7. Écrire une méthode peutTransporterPassagers(…) dans la classe adéquate qui, à partir d'un
nombre de passagers et d'un volume moyen par passager (représentant les bagages), retourne vrai ou
faux selon que l'autocar peut ou non transporter ces passagers.
8. Écrire la méthode afficherCamion() qui affiche une chaîne de caractères caractérisant un camion.
9. Écrire la méthode afficherAutocar() qui affiche une chaîne de caractères caractérisant un autocar.
Classe contenant le programme principal
1. Écrire/compléter un programme de test créant une (instance de la classe) voiture Twingo, achetée cette
année 100000 MAD, immatriculée 1234A49, avec un autoradio et nécessitant un permis B. Puis afficher
la chaîne de caractères représentant la voiture. Le résultat est-il celui escompté ?
1
Les classes Date et Calendar existent en Java, mais le but du TP n'est pas de les utiliser. Nous représenterons une date simplement par
un entier représentant son année.
p. 1
2. Créer un camion J9, acheté 200000 MAD il y a 5 ans, immatriculé 9887B75, utilisable avec un permis
B, et pouvant transporter 25 m³. Afficher sur la sortie standard la chaîne de caractères représentant
le camion. Afficher si ce camion peut transporter 7 m³, on utilisera pour cela un appel à la méthode
peutTransporterVolume(…).
3. Afficher le coût de location de la Twingo précédemment créée, ainsi que celui du camion de type J9.
4. Créer un autocar de type FRI, acheté 900000 MAD en 2005, immatriculé 4567B01, nécessitant un
permis D, permettant de transporter 53 passagers et disposant d'une soute à bagages de 3 m³. Affichez
si cet autocar peut transporter 40 passagers ayant chacun 0,1 m³ de bagages.
5. Les classes de l'application sont appelées à être complétées et utilisées par plusieurs programmeurs.
Quelle solution proposez-vous, en ce qui concerne les champs (attributs et méthodes), pour assurer cette
gestion ? Implémentez-là.
p. 2
POO avec JAVA TP N°3
L'héritage appliqué aux employés d'une entreprise
Vous allez programmer le calcul des salaires hebdomadaires des employés d'une
entreprise.
Cette entreprise comporte plusieurs types d'employés :
Des employés caractérisés par un nom (String) qui sont payés suivant le
nombre d'heures (int) qu'ils ont travaillé dans la semaine. Ils sont payés à un
certain tarif horaire et leurs heures supplémentaires (au-delà de 39 heures)
sont payées 30 % de plus que les heures normales.
Administrateurs qui sont des employés, payés de la même façon, mais leurs
heures supplémentaires sont payées 50 % de plus que les heures normales.
Les commerciaux sont payés avec une somme fixe à laquelle on ajoute 1 %
du chiffre d'affaires (float) qu'ils ont fait dans la semaine.
NB : Tous les attributs sont déclarés private (getter, setter).
Ecrivez votre hiérarchie d'héritage sur papier et faites-la vérifier par
l'enseignant avant de commencer à coder.
Vous commencerez par écrire une classe Employe dont hériteront les autres
classes.
Ecrivez les autres classes : Administrateur, Commerciaux.
setInfosSalaire : pour entrer ou modifier les informations brutes
nécessaires au calcul des salaires (nombre d'heures de travail, chiffre
d'affaire,...).
Les classes comporteront au moins 2 constructeurs : un qui ne prend en
paramètre que le nom de l'employé et l'autre qui prend en paramètres le nom
et toutes les informations pour le calcul du salaire.
Le calcul des salaires se fera dans la méthode getSalaire()
Une classe Paie comportera une unique méthode main() qui entrera les
informations sur des employés des différents types (au moins 3 commerciaux). Les
employés seront enregistrés dans un tableau employes.
Au moins un des employés sera créé avec le constructeur qui n'a que le nom en
paramètre, et vous entrerez ensuite les informations pour son salaire avec la
méthode setInfosSalaire. Pour au moins un autre employé, vous utiliserez le
constructeur pour entrer les informations sur le salaire.
Loubna KARBIL 1
POO avec JAVA TP N°3
La méthode main() affichera le salaire hebdomadaire de chacun des employés dans
une boucle "for" qui parcourra le tableau des employés.
Loubna KARBIL 2