42 0 130KB
TD 3 java Aroua Hedhili Sbai March 2020
Programmation Orient´ee Objets ING3 Exercice 1 Il s’agit de mod´eliser un crayon de couleur. Pour cela, ´ecrire les deux classes: 1. une classe Crayon qui utilise deux attributs priv´es epaisseur et longueur qui seront initialis´es ` a l’aide du constructeur de cette classe, 2. une classe CrayonCouleur qui h´erite de la classe Crayon et aura un attribut suppl´ementaire couleur qui sera une chaˆıne de caract`eres. Ces deux classes poss`edent des constructeurs permettant d’initialiser leurs attributs. 3. Les op´erations que l’on souhaite faire sur un crayon (de couleur ou non) sont: (a) modifier la valeur de son attribut longueur par une m´ethode nomm´ee changeLongueur qui ne retourne rien; on fait de sorte que la longueur du crayon ne puisse pas ˆetre n´egative. (b) modifier la valeur de son attribut epaisseur par une m´ethode nomm´ee changeEpaisseur qui ne retourne rien; on fait de sorte que l’´epaisseur du crayon ne puisse pas ˆetre n´egative. (c) afficher les caract´eristiques d’un crayon par une m´ethode nomm´ee description. 4. Les op´erations que l’on souhaite faire sur un crayon de couleur sont: (a) modifier la valeur de son attribut couleur par une m´ethode nomm´ee changeCouleur qui ne retourne rien. (b) modifier les valeurs de tous ses attributs (longueur, epaisseur et couleur ) par une m´ethode nomm´ee changeCaracteristiques qui ne retourne rien et qui utilisera les autres m´ethodes. (c) afficher les caract´eristiques d’un crayon de couleur, par red´efinition et utilisation de la m´ethode description d’un crayon standard. ´ 5. Ecrire une classe TestCrayon contenant une m´ethode main pour tester ces classes.
1
Exercice 3 1. Mod´ elisation du concept de ville Une ville est d´ecrite par son nom et son nombre d’habitants. • Le nom d’une ville ne peut pas varier; Il doit ˆetre connu d`es l’instantiation de l’objet. Par la suite, ce nom servira de cl´e de recherche d’informations. Il faut donc que ce nom soit stocker en majuscule. Pour cela vous disposez de la m´ethode toUpperCase de la classe String. • Le nombre d’habitants peut ˆetre inconnu lors de l’instantiation. sup´erieur ` a 0. Il doit pouvoir varier pour un mˆeme objet Ville.
Il doit toujours ˆetre
• Un objet Ville doit fournir une m´ethode String obtenirInformations() qui permet de connaˆıtre les informations (attributs) encapsul´ees sous la forme d’une chaˆıne de caract`eres. 2. Mod´ elisation du concept de capitale Une capitale est une ville et contient l’information du pays o` u elle est situ´ee. Un objet Capitale doit fournir une m´ethode String obtenirInformations() qui permet de connaˆıtre les informations (attributs) encapsul´ees sous la forme d’une chaˆıne de caract`eres. 3. Mod´ elisation d’un Atlas ´ On souhaite maintenant m´emoriser un ensemble de villes (et les capitales). Ecrire la classe Atlas qui impl´emente une structure de tableau pour le stockage des villes. Cette classe doit proposer les deux m´ethodes suivantes: (a) void insere(Ville v) ins`ere une Ville en fonction de son nom. (b) Ville rechercher(String cle) qui restitue l’objet Ville dont le nom est pass´e en param`etre. ´ 4. Ecrire la classe TesAtlas contenant une m´ethode main pour tester ces classes.
Exercice 4 En vue de la gestion d’une biblioth`eque on nous demande d’´ecrire une application pour traiter des documents de nature diverse: des livres, qui peuvent ˆetre des romans ou des manuels, des revues, des dictionnaires, etc. Tous les documents ont un num´ero d’enregistrement (un entier) et un titre (une chaˆıne de caract`eres). Les livres ont, en plus, un auteur (une chaˆıne) et un nombre de pages (un entier). Les romans ont ´eventuellement un prix litt´eraire (un entier, parmi : GONCOURT, MEDICIS1 , NOBEL2 , etc), tandis que les manuels ont un niveau scolaire (entier). Les revues ont un mois et une ann´ee (des entiers) et les dictionnaires ont une langue (un entier, parmi ANGLAIS, ALLEMAND, ESPAGNOL, etc.). Ces diverses sortes de choses doivent pouvoir ˆetre manipul´ees en tant que documents. ´ 1. Ecrire les classes Document, Livre, Roman, Manuel, Revue et Dictionnaire, entre lesquelles existeront les liens d’h´eritage que la description pr´ec´edente sugg`ere. 1 Prix litt´ eraire fran¸cais fond´ e en 1958 et d´ ecern´ e ` a un roman ou ` a un recueil de nouvelles d’un auteur de langue fran¸caise. Depuis 1970, il couronne ´ egalement un ´ ecrivain ´ etranger 2 Prix d´ ecern´ e par diverses institutions ou acad´ emies su´ edoises ou norv´ egienne. Il est attribu´ e tous les ans aux auteurs de contributions remarquables dans diff´ erents domaines: physique, chimie, physiologie ou m´ edecine, litt´ erature, paix, sciences ´ economiques (depuis 1969).
2
Dans chacune de ces classes d´efinir le constructeur qui prend autant arguments qu’il y a d’attributs et qui se limite ` a initialiser ces derniers avec les valeurs des arguments. D´efinir ´egalement une m´ethode toString produisant une description sous forme de chaˆıne de caract`eres des instances de la classe. Enfin, si les variables d’instance ont ´et´e d´eclar´ees private, d´efinir ´egalement des accesseurs publics permettant de consulter les valeurs de ces variables. ´ Ecrire une classe TestDocuments qui construit et affiche une s´erie de documents de classes diff´erentes. 2. Une biblioth`eque sera repr´esent´ee par un tableau de documents. D´efinir une classe Bibliotheque, avec les m´ethodes: • Bibliotheque(int capacite): constructeur qui cr´ee une biblioth`eque ayant la capacit´e (nombre maximum de documents) indiqu´ee, • void afficherDocuments(): affiche tous les ouvrages de la biblioth`eque, • void afficherAuteurs(): affiche la liste des auteurs de la biblioth`eque (au besoin, utilisez l’op´erateur instanceof ), • boolean ajouter(Document doc): ajoute le document r´ef´erenc´e par doc et renvoie true (false en cas d’´echec), • Document document(int i): renvoie le i`eme document, • boolean supprimer(Document doc): supprime le document r´ef´erenc´e par doc et renvoie true (false en cas d’´echec) ´ 3. Ecrire, avec un effort minimal, une classe Livrotheque ayant les mˆemes fonctionnalit´es que Bibliotheque mais enti`erement constitu´ee de livres.
3