Vous êtes sur la page 1sur 4

UniversitMontpellierIIL3Informatique

ProgrammationparobjetsenJava(504)

2008/09

TD3
Hritage
Exercice1:Promenadedansunehirarchied'hritage
Onconsidreunehirarchieconstituedetroisclasses,A,BetC,dcritespartiellementci
dessous.
public class A
{
private int i;
public A(int x) { i = x; }
public String quiEsTu (){return "je suis un A";}
public String toString() { return "i = " + i;}
public String presenteToi(){ return quiEsTu() + toString()); }
}// fin classe A
public class B extends A
{
private int j;
public B(int x, int y)
{ super(x);
j = y;
}
public String quiEsTu (){return "je suis un B";}
public String toString(){return super.toString() + "\n j = " + j;}
} // fin classe B
public class C extends B
{
// aucun attribut suplmentaire
public C(int x, int y) { super(x,y);}
public String quiEsTu (){return "je suis un C";}
} // fin classe C
aDtaillerlesactionseffectuesparl'instructionsuivante:

C obj = new C(5,10);


b Quelles sontlesmthodes excutes lorsdel'appel obj.presenteToi() cidessous?

Justifier(donnerlesprincipesquiexpliquent,lorsd'unappel,lechoixdelamthodedetelle
outelleclasse).
C obj = new C(5,10);
System.out.println(obj.presenteToi());

c Mmequestionavecl'appelcidessous(oobjestdetypeA,toutenrfrenantune

instancedeC):
Java

TD3

page1

A obj = new C(5,10);


System.out.println(obj.presenteToi());

Java

TD3

page2

Exercice2:Unehirarchiedepokemons
LesPokmonssontdesgentilsanimauxquisontpassionnsparlaprogrammationobjeten
gnraletparlepolymorphismeenparticulier.
Ilexistequatregrandescatgoriesdepokmons:
-

Lespokmonssportifs:Cespokmonssontcaractrissparunnom,unpoids(enkg),
unnombredepattes,unetaille(enmtres)etunefrquencecardiaquemesureennombre
depulsationslaminute.Cespokmonssedplacentsurlaterreunecertainevitesse
quelonpeutcalculergrcelaformulesuivante:vitesse=nombredepattes*taille*3

Lespokmonscasaniers:Cespokmonssontcaractrissparunnom,unpoids(enkg),
unnombredepattes,unetaille(enmtres)etlenombredheuresparjouroilsregardent
latlvision.Cespokmonssedplacentgalementsurlaterreunecertainevitesseque
lonpeutcalculergrcelaformulesuivante:vitesse=nombredepattes*taille*3

Lespokmonsdesmers:Cespokmonssontcaractrissparunnom,unpoids(enkg)
etunnombredenageoires.Cespokmonsnesedplacentquedanslamerunevitesse
quelonpeutcalculergrcelaformulesuivante: vitesse=poids/25*nombrede
nageoires

Lespokmonsdecroisire:Cespokmonssontcaractrissparunnom,unpoids(en
kg)etunnombredenageoires.Cespokmonsnesedplacentquedanslamerune
vitessequelonpeutcalculergrcelaformulesuivante:vitesse=(poids/25*nombre
denageoires)/2

Pour chacune de ces quatre catgories de pokmons, on dsire disposer dune mthode
toStringquiretourne(dansunechanedecaractres)lescaractristiquesdupokmon.
ParexemplelamthodetoStringappliquesurunpokmonsportifretournerait:
"Je suis le pokmon Pikachu mon poids est de 18 kg, ma vitesse est de 5,1 km/h j'ai 2
pattes, ma taille est de 0,85m ma frquence cardiaque est de 120 pulsations la minute"

Cettemmemthodeappliquesurunpokmoncasanierpourraitretourner:
"Je suis le pokmon Salameche mon poids est de 12 kg, ma vitesse est de 3,9 km/h j'ai 2
pattes, ma taille est de 0,65m je regarde la tl 8h par jour"

Surunpokmondesmers:
"Je suis le pokmon Rondoudou mon poids est de 45 kg, ma vitesse est de 3,6 km/h j'ai 2
nageoires"

Etenfinsurunpokmondecroisire:
"Je suis le pokmon Bulbizarre mon poids est de 15 kg, ma vitesse est de 0,9 km/h j'ai 3
nageoires"

RaliserundiagrammedeclassespermettantdegrertoutelahirarchiedesPokmons.
CetexerciceserarepriscommepremiretapeduTP3.

Java

TD3

page3

Exercice3:Expressionsarithmtiques
On considre l'valuation d'expressions arithmtiques formes l'aide des quatre
oprateursbinaires+,,*,/.
Uneexpressionestdfiniercursivementdelafaonsuivante:
-

soitc'estuneconstante(parexemple1.5)
soit c'est une expression "complexe" de la forme (a op b) o a et b sont des
expressionsetopestl'undesquatreoprateurs.

EcrirelesclassesJavapermettantdeconstruireetvaluerdesexpressions,defaonce
quel'onpuissecrireparexemple(etparexempledansunemthodemainappartenant
uneautreclasse):
Constante a = new Constante (5);
Constante b = new Constante (2);
Constante c = new Constante(3);
ExpressionComplexe e1 = new ExpressionComplexe (a, '+', b);
ExpressionComplexe e2 = new ExpressionComplexe (e1, '*', c);
ExpressionComplexe e3 =
new ExpressionComplexe(new Constante(4), '*', e2);
System.out.println(a.eval());
System.out.println(e1.eval());
System.out.println(e2.eval());
System.out.println(e3.eval());

Java

//
//
//
//

5.0
7.0
21.0
84.0

TD3

page4

Vous aimerez peut-être aussi