Vous êtes sur la page 1sur 4

Master 2 BBSG

POO, langage Java

Henri Garreta et Laurent Tichit

3. Hritage
1. Une bibliothque 2. Polygones 3. Hritage ou composition ?

3.1. Une bibliothque


Pour la gestion dune bibliothque on nous demande dcrire une application traitant des documents de nature di erse ! des livres" qui peu ent #tre des romans ou des manuels" des revues" des dictionnaires" etc. $ous les documents ont un numro denregistrement %un entier& et un titre %une cha'ne de caractres&. (es li res ont" en plus" un auteur %une cha'ne& et un nombre de pages %un entier&. (es romans ont entuellement un pri) littraire %un entier con entionnel" parmi ! GONCOURT" MEDICIS" INTERALLIE" etc.&" tandis que les manuels ont un ni eau scolaire %un entier&. (es re ues ont un mois et une anne %des entiers& et les dictionnaires ont une langue %une cha'ne de caractres con enue" comme "anglais"" "allemand"" "espagnol"" etc.&. $ous les di ers ob*ets en question ici % livres" revues" dictionnaires" romans" etc.& doi ent pou oir #tre manipules en tant que documents. A. +,inisse- les classes Document" Livre" Roman" Manuel" Revue et Dictionnaire" entre lesquelles e)isteront les liens dhritage que la description prcdente suggre. +ans chacune de ces classes d,inisse le constructeur qui prend autant arguments quil y a de ariables dinstance et qui se limite . initialiser ces dernires a ec les aleurs des arguments" une mthode pu lic!String!toString"# produisant une description sous ,orme de cha'ne de caractres des ob*ets" si ous a e- dclar private les ariables dinstance %cest conseill" sau, indication contraire & d,inisse- galement des / accesseurs 0 publics get... permettant de consulter les aleurs de ces ariables. 1cri e- une classe e)cutable TestDocuments qui cre et a,,iche plusieurs documents de types di,,rentes. B. Une bibliothque sera reprsente par un tableau de documents %on erra un autre *our de meilleures manires de ,aire" bases sur lemploi dune Collection&. +,inisse- une classe $i liot%e&ue" a ec un tel tableau pour ariable dinstance et les mthodes ! $i liot%e&ue"int!capacit'# 2 constructeur qui cre une bibliothque ayant la capacit %nombre ma)imum de documents& indique" void!a((ic%erDocuments"# 2 a,,iche tous les ou rages de la bibliothque"

Document!document"int!i# 2 ren oie le ime document" oolean ! a)outer"Document ! doc# 2 a*oute le document indiqu et ren oie true! %(alse en cas dchec&" oolean!supprimer"Document!doc# 2 supprime le document indiqu et ren oie true! %(alse en cas dchec& void!a((ic%erAuteurs"# 2 a,,iche la liste des auteurs de tous les ou rages qui ont un auteur %au besoin" utilise- loprateur instanceo(& C. +,inisse-" a ec un e,,ort minimal" une classe Livrot%e&ue dont les instances ont les m#mes ,onctionnalits que les $i liot%e&ues mais sont entirement constitues de livres. 3omment optimiser dans la classe Livrot%e&ue la mthode a((ic%erAuteurs ?

3.2 Polygones
Pour cet e)ercice ous de e- disposer dune classe *oint a ec 4 au moins 4 deu) membres dinstance pri s + et , de type dou le %par e)emple&" un constructeur pu lic!*oint"dou le!+-!dou le! ,#" des accesseurs pu lic!dou le!+"# et pu lic!dou le!,"# et lhabituelle trans,ormation en cha'ne de caractres pu lic ! String ! toString"#. (a classe *oint d,inie . la srie prcdente de rait ,aire la,,aire. A. +,inisse- une classe *ol,gone comportant la ariable membre ! protected!*oint./!sommets 4 tableau contenant les sommets du polygone et les mthodes ! pu lic!*ol,gone"*oint./!sommets# 4 construction dun polygone . partir du tableau de ses sommets protected!*ol,gone"int!n rSommets# 4 dbut de la construction dun polygone . partir du nombre de ses sommets 5 ces derniers restent indtermins %ou plut6t alent null& et de ront #tre donns ultrieurement pu lic!*oint!getSommet"int!i# 4 obtention du ime sommet du polygone pu lic!dou le!aire"# 4 calcul de la sur,ace du polygone % oir indications ci2dessous& pu lic ! String ! toString"# 4 e)pression te)tuelle du polygone 5 par e)emple "."012-012#-"312-012#-"412-512#/" B. +,inisse- une classe Triangle" sous2classe de *ol,gone" a ec un constructeur pu lic!Triangle"*oint!a-!*oint! -!*oint!c# 4 construction du triangle ayant les trois sommets indiqus C. +,inisse- une classe Rectangle %sous2entendu" a ec des c6ts parallles au) a)es&" sous2classe de *ol,gone" munie dun constructeur pu lic ! Rectangle"dou le ! +Min- ! dou le ! +Ma+- ! dou le ! ,Min- ! dou le! ,Ma+# 4 construction dun rectangle parallle au) a)es D. +,inisse- une classe *ol,goneRegulier" sous2classe de *ol,gone" disposant dun constructeur pu lic ! *ol,goneRegulier"*oint ! centre- ! dou le ! ra,on- ! int! nom reSommets# 4 construction du polygone rgulier ayant le centre" le rayon et le nombre de sommets indiqus.

E. 1cri e- une classe Test*ol,gone a ec une mthode main construisant et a,,ichant des polygones de di erses sortes et permettant de ri,ier que la mthode aire est correcte. 7oye-2 ous pourquoi certains membres de la classe *ol,gone ont t dclars protected au lieu de private ? 8urions2nous pu ,aire autrement ? Indications" 1. 7oici une manire de calculer laire S dun polygone ayant les sommets %x9" y9&" %x1" y1&" ... %xn21" yn21& ! S : ; | %x9 < x1& = %y9 4 y1& < %x1 < x2& = %y1 4 y2& < ... < %xn 4 2 < xn 4 1& = %yn 4 2 4 yn 4 1& < %xn 4 1 < x9& = %yn 4 1 4 y9& | Indications" 2. (es sommets %xi" yi& dun polygone rgulier qui a n sommets" le point %xc" yc& pour centre" r pour rayon et un sommet ayant yc pour ordonne" sont donns par ! xi : xc < r = cos %2 = pi = i > n& 5 yi : yc < r = sin %2 = pi = i > n&

3.3 Hritage ou composition ?


Prrequis. ?i ous ne la e- pas encore ,ait" *ete- un @il sur la documentation de la classe )ava1util1Arra,List. Une arraylist %ou un vector& AL se comporte comme un tableau T" cest2.2 dire quelle o,,re laccs inde) optimis %on dit / en temps constant 0& . ses lments" sau, quau lieu de / x!6!T.i/ 0 il ,aut crire / x!6!AL1get"i# 0 et au lieu de / T.i/!6!x 0 il ,aut crire / AL1set"i-x# 0. 3ependant" une arraylist a un a antage considrable sur un tableau ! elle soccupe de lallocation de son espace mmoire" laugmentant lorsque cest ncessaire" sans que le programmeur ait . sen soucier. Exercice. Un journal est une collection dvnements. Un vnement est ,ait de deu) champs ! une date et un texte. Un *ournal doit possder les oprations sui antes ! unJournal1a)outer"unTexte# 4 a*out au *ournal dun nement compos de la date courante %que cette mthode obtient automatiquement& et du te)te indiqu unJournal1toString"# 4 ren oie une cha'ne de caractres contenant tous les nements du *ournal unJournal1toString"uneC aine# 4 ren oie une cha'ne de caractres contenant tous les nements dont le te)te contient la cha'ne indique A.B. Pour les dates" re oye- si ncessaire le)ercice 3 de la srie 1. A. 1cri e- une classe Evenement et une classe 7ournal. (a classe Evenement" interne . 7ournal" sera aussi simple que possible %les deu) champs indiqus" un constructeur lmentaire et la mthode toString habituelle&. +ans cette question" la classe 7ournal doit #tre une sous2classe de )ava1util1Arra,List. B. 1cri e- une classe Test7ournal a ec une mthode main simple qui lit et e)cute des commandes comme ! 8 texte ? a*out au *ournal de l nement ayant le te)te indiqu listage de tous les nements du *ournal

9 c a!ne *

listage des nements qui contiennent la cha'ne indique abandon du programme

C. Ccri e- la classe 7ournal mais" au lieu den ,aire une sous2classe de Arra,List mette-2y un membre de type Arra,List. (a classe Test7ournal doit ,onctionner sans changement. D. "tre ou avoir # +ans la question A ous a e- li les classes Arra,List et 7ournal par un lien d ritage ! un ob*et 7ournal / est 0 un ob*et Arra,List 5 dans la question C ous les a e- lis par un lien de composition ! un ob*et 7ournal / a 0 un ob*et Arra,List. +aprs ous" quels sont les mrites de lune et lautre manire de ,aire? +ans quel cas contr6le-2 ous mieu) le comportement dun ob*et 7ournal ? ?uppose- quon ous demande dinterdire les suppressions d nements du *ournal 5 est2il ,acile dobtenir cela dans la solution A? 7oye-2 ous dans quelle situation lhritage peut2il de enir pr,rable" oire ncessaire ?

Vous aimerez peut-être aussi