Vous êtes sur la page 1sur 3

TD 3 java

Aroua Hedhili Sbai


March 2020

Programmation Orientée Objets


ING3

Exercice 1
Il s’agit de modéliser un crayon de couleur. Pour cela, écrire les deux classes:

1. une classe Crayon qui utilise deux attributs privés epaisseur et longueur qui seront initialisés à
l’aide du constructeur de cette classe,
2. une classe CrayonCouleur qui hérite de la classe Crayon et aura un attribut supplémentaire
couleur qui sera une chaı̂ne de caractères.
Ces deux classes possèdent des constructeurs permettant d’initialiser leurs attributs.
3. Les opérations que l’on souhaite faire sur un crayon (de couleur ou non) sont:

(a) modifier la valeur de son attribut longueur par une méthode nommée changeLongueur qui
ne retourne rien; on fait de sorte que la longueur du crayon ne puisse pas être négative.
(b) modifier la valeur de son attribut epaisseur par une méthode nommée changeEpaisseur qui
ne retourne rien; on fait de sorte que l’épaisseur du crayon ne puisse pas être négative.
(c) afficher les caractéristiques d’un crayon par une méthode nommée description.

4. Les opérations que l’on souhaite faire sur un crayon de couleur sont:

(a) modifier la valeur de son attribut couleur par une méthode nommée changeCouleur qui ne
retourne rien.
(b) modifier les valeurs de tous ses attributs (longueur, epaisseur et couleur ) par une méthode
nommée changeCaracteristiques qui ne retourne rien et qui utilisera les autres méthodes.
(c) afficher les caractéristiques d’un crayon de couleur, par redéfinition et utilisation de la
méthode description d’un crayon standard.

5. Écrire une classe TestCrayon contenant une méthode main pour tester ces classes.

1
Exercice 3
1. Modélisation du concept de ville
Une ville est décrite par son nom et son nombre d’habitants.

• Le nom d’une ville ne peut pas varier; Il doit être connu dès l’instantiation de l’objet. Par la
suite, ce nom servira de clé de recherche d’informations. Il faut donc que ce nom soit stocker
en majuscule. Pour cela vous disposez de la méthode toUpperCase de la classe String.
• Le nombre d’habitants peut être inconnu lors de l’instantiation. Il doit toujours être
supérieur à 0. Il doit pouvoir varier pour un même objet Ville.
• Un objet Ville doit fournir une méthode String obtenirInformations() qui permet de con-
naı̂tre les informations (attributs) encapsulées sous la forme d’une chaı̂ne de caractères.
2. Modélisation du concept de capitale
Une capitale est une ville et contient l’information du pays où elle est située. Un objet Capitale
doit fournir une méthode String obtenirInformations() qui permet de connaı̂tre les informations
(attributs) encapsulées sous la forme d’une chaı̂ne de caractères.
3. Modélisation d’un Atlas
On souhaite maintenant mémoriser un ensemble de villes (et les capitales). Écrire la classe Atlas
qui implémente une structure de tableau pour le stockage des villes. Cette classe doit proposer
les deux méthodes suivantes:

(a) void insere(Ville v) insère une Ville en fonction de son nom.


(b) Ville rechercher(String cle) qui restitue l’objet Ville dont le nom est passé en paramètre.

4. Écrire la classe TesAtlas contenant une méthode main pour tester ces classes.

Exercice 4
En vue de la gestion d’une bibliothèque on nous demande d’écrire une application pour traiter des
documents de nature diverse: des livres, qui peuvent être des romans ou des manuels, des revues, des
dictionnaires, etc.
Tous les documents ont un numéro d’enregistrement (un entier) et un titre (une chaı̂ne de caractères).
Les livres ont, en plus, un auteur (une chaı̂ne) et un nombre de pages (un entier). Les romans ont
éventuellement un prix littéraire (un entier, parmi : GONCOURT, MEDICIS1 , NOBEL2 , etc), tandis
que les manuels ont un niveau scolaire (entier). Les revues ont un mois et une année (des entiers) et
les dictionnaires ont une langue (un entier, parmi ANGLAIS, ALLEMAND, ESPAGNOL, etc.).
Ces diverses sortes de choses doivent pouvoir être manipulées en tant que documents.
1. Écrire les classes Document, Livre, Roman, Manuel, Revue et Dictionnaire, entre lesquelles exis-
teront les liens d’héritage que la description précédente suggère.
1 Prix littéraire français fondé en 1958 et décerné à un roman ou à un recueil de nouvelles d’un auteur de langue

française. Depuis 1970, il couronne également un écrivain étranger


2 Prix décerné par diverses institutions ou académies suédoises ou norvégienne. Il est attribué tous les ans aux auteurs

de contributions remarquables dans différents domaines: physique, chimie, physiologie ou médecine, littérature, paix,
sciences économiques (depuis 1969).

2
Dans chacune de ces classes définir le constructeur qui prend autant arguments qu’il y a d’attributs
et qui se limite à initialiser ces derniers avec les valeurs des arguments. Définir également une
méthode toString produisant une description sous forme de chaı̂ne de caractères des instances
de la classe. Enfin, si les variables d’instance ont été déclarées private, définir également des
accesseurs publics permettant de consulter les valeurs de ces variables.
Écrire une classe TestDocuments qui construit et affiche une série de documents de classes dif-
férentes.
2. Une bibliothèque sera représentée par un tableau de documents. Définir une classe Bibliotheque,
avec les méthodes:
• Bibliotheque(int capacite): constructeur qui crée une bibliothèque ayant la capacité (nombre
maximum de documents) indiquée,
• void afficherDocuments(): affiche tous les ouvrages de la bibliothèque,
• void afficherAuteurs(): affiche la liste des auteurs de la bibliothèque (au besoin, utilisez
l’opérateur instanceof ),
• boolean ajouter(Document doc): ajoute le document référencé par doc et renvoie true (false
en cas d’échec),
• Document document(int i): renvoie le ième document,
• boolean supprimer(Document doc): supprime le document référencé par doc et renvoie true
(false en cas d’échec)

3. Écrire, avec un effort minimal, une classe Livrotheque ayant les mêmes fonctionnalités que Bib-
liotheque mais entièrement constituée de livres.

Vous aimerez peut-être aussi