ENSA de Fès Programma1on JAVA
TP2: Programmation orientée objet avec JAVA
Exercice 1 : Gestion d’une personne
Créez une classe en Java appelée Personne qui contient :
1. Deux attributs privés :
o nom (de type String).
o âge (de type int).
2. Un constructeur pour initialiser ces attributs.
3. Une méthode publique appelée afficherDetails qui affiche les informations de la
personne.
4. Une méthode publique appelée estMajeur qui retourne true si la personne est
majeure (âge >= 18), sinon false.
Objectif :
1. Créez une instance de la classe Personne et testez ses méthodes dans une classe
principale appelée Main.
Exercice 2 : Laboratoire
On se propose de développer un programme, pour gérer les bureaux d’un laboratoire de
Recherche. Pour cela nous avons besoin d’un ensemble de classes :
§ Une adresse est composée par pays, ville et code postal
§ Un chercheur est caractérisé par son nom, son poste et le numéro de son ordinateur
§ Un laboratoire est caractérisé par son nom, sa spécialité. Il possède un nombre de
bureaux
§ Un laboratoire dispose d’une adresse et de 50 bureaux maximum
§ Un bureau est identifié par son code, son nom et il contient un ensemble de chercheurs,
§ Chaque bureau peut contenir jusqu’à 5 chercheurs.
A. Proposer une modélisation de la gestion d’un
laboratoire
B. Créer les classes nécessaires à la gestion d’un
laboratoire
C. Dans une classe Test :
1- Créer un objet adresse, affecter des valeurs à l’objet adresse créé et afficher le.
3IACN/GSCI 1/4 Année universitaire 2017/2018
ENSA de Fès Programma1on JAVA
2- Créer trois objets Chercheur, affecter des valeurs à ces chercheurs et afficher
toutes les informations relatives à ces chercheurs.
3- Créer deux Bureaux bureau1 et bureau2, chaque bureau contient 3
chercheurs
4- Créer un Laboratoire laboratoire1 qui contient deux bureaux.
5- Afficher les caractéristiques de l’objet laboratoire1.
Exercice 3 : Bibliothèque
Pour la gestion d'une bibliothèque on nous demande d'écrire une application manipulant des
documents de nature diverse : des livres, des dictionnaires, etc.
Tous les documents ont un numéro d'enregistrement et un titre. Les livres ont, en plus, un auteur
et un nombre de pages, les dictionnaires ont une langue et un nombre d'articles.
Ces divers objets doivent pouvoir être manipulés de façon homogène en tant que documents.
A. Définissez les classes Document, Livre et Dictionnaire. Donnez à chacune le
constructeur qui prend autant arguments qu'il y a de variables d'instance à initialiser, et
qui se limite à recopier les valeurs des arguments dans les variables correspondantes.
Définissez également les accesseurs (getNumero(), getTitre(), etc.) nécessaires, ainsi
que la méthode toString() habituelle.
B. Définissez une classe Bibliothèque réduite à une méthode main permettant de tester les
classes et les méthodes précédentes, ainsi que celles que vous écrirez pour la question
suivante.
C. Définissez la classe ListeDeDocuments permettant de créer une liste (vide) et d'y ajouter
des documents.
La liste peut être représentée par un objet [Link]. Dans cette classe, définissez
les méthodes :
{ void add(Document d) qui ajoute un document à la liste,
{ void afficherTousLesDocuments() qui affiche tous les documents de la liste,
{ void afficherTousLesLivres() qui affiche tous les livres (uniquement) de la liste.
Exercice 4 : Les métiers
Ecrire les classes nécessaires au fonctionnement du programme suivant (en ne fournissant que
les méthodes nécessaires à ce fonctionnement). N'oubliez pas de commenter votre code :
3IACN/GSCI 2/4 Année universitaire 2017/2018
ENSA de Fès Programma1on JAVA
Sortie de ce programme :
Je suis AHMED le Menuisier
Je suis ALI le Plombier
Je suis AMINE le Menuisier
Exercice 5
1. Créez une classe Liquide contenant seulement une méthode imprimer() qui
affiche : ”je suis un liquide”
2. Créez 2 classes dérivées de la classe Liquide, les classes Cafe et Lait, dont les
méthodes imprimer() affichent respectivement ”je suis un Café”, ”je suis du
Lait”
3. Enfin créerez une classe Tasse ayant un attribut l de la classe Liquide et une
méthode AjouterLiquide (Liquide li) et une méthode imprimer()
4. Testez l’utilisation : créer un tableau de Tasses qui contient différents liquides
Exercice 6 :
1. Ecrire une classe Animal qui dispose d’un attribut entier nbpattes. Cette classe dispose des
méthodes suivantes :
– Le constructeur, qui prend en argument un entier (le nombre de pattes),
– String toString() qui renvoie une chaîne de caractères contenant le nombre de pattes de
l’animal,
– affiche() qui affiche le nombre de pattes de l’animal.
2. Ecrire une classe Autruche qui hérite de Animal.
3. Ecrire une classe Lapin qui hérite de Animal.
4. Ecrire une classe Main dans laquelle la méthode main() crée un lapin et une autruche.
Exercice 7 : Comptes bancaires
On souhaite écrire un programme Java pour la gestion des comptes d’une banque.
A. Une opération bancaire est définie par le montant de l’opération (positif ou négatif), la date
de cette opération et un libellé.
Exemple : 19/1/2004 | cheque n° 123456 | -53,60 €
• Ecrire une classe Operation permettant de modéliser de telles opérations : définir les
attributs nécessaires, qui seront encapsulés ; écrire un constructeur ; les assesseurs
(méthodes get…), et redéfinir la méthode toString
B. On simplifiera les types de comptes bancaires en considérant le diagramme de classes
suivant :
3IACN/GSCI 3/4 Année universitaire 2017/2018
ENSA de Fès Programma1on JAVA
• Ecrire chacune de ces classes. Choisir avec perspicacité le type de chaque attribut, en
expliquant plus particulièrement le choix de la structure pour représenter sous la forme
d’une liste l’historique des opérations effectuées sur un compte.
• Ecrire pour chaque classe un ou plusieurs constructeurs appropriés.
• Encapsuler chaque attribut, et écrire une méthode get_ correspondant à chaque attribut.
• Redéfinir la méthode toString de chaque classe permettant de construire une String
représentant les informations caractérisant un de ces comptes bancaires.
Dans la classe Compte, écrire 2 méthodes verser(float montant, String libelle) et retirer(float
montant, String libelle) permettant de verser et de retirer de l’argent sur le compte, en créant à
chaque fois un objet de la classe Operation qui sera rangé dans la liste des opérations, afin d’en
garder un historique.
C. Ecrire une classe EMontantMinException, héritant de la classe Exception qui
pourra être déclenchée par la méthode retirer si on essaye de retirer plus d’argent que le
solde du compte ou le montant du découvert autorisé.
NB : la méthode retirer devra être définie au niveau de la classe Compte et redéfinie au
niveau de la classe CompteCourant pour traiter le cas du découvert autorisé.
D. Ecrire une méthode float CalculInterets dans la classe CompteEpargne qui calcule les
intérêts produits par ce compte (résultat de la fonction). Ces intérêts seront versés sur le
compte.
E. Ecrire une méthode Historique(int nombreOperations)affichant le solde du compte et la
succession des dernières " nombreOperations " opérations.
F. Ecrire un programme Java pour utiliser ces classes.
Ce programme proposera tout d’abord de créer un compte en demandant s’il s’agit d’un compte
courant ou d’un compte épargne.
Ensuite il proposera ensuite un système de choix permettant d’effectuer une succession
d’opérations sur ce compte : versement, retrait, calcul et ajout des intérêts (uniquement pour les
comptes épargnes), consultation du solde et de l’historique.
3IACN/GSCI 4/4 Année universitaire 2017/2018