You are on page 1of 2

Page 1/2

Master ISI
Module : Programmation Java Avanc
TP3

Exercice 1.



















1. De quelles variables d'instance de Shape hrite la classe Circle ?
2. La variable radius tant dclare private, on ne peut pas la modifier de l'extrieur
de la classe. Ajoutez une mthode setRadius pour pouvoir le fixer et getRadius pour
le lire.
3. Ajoutez une variable surface la classe Circle. Modifiez les mthodes setRadius et
toString en consquence. Ajoutez les mthodes d'accs ce champ. On notera que le
fait de protger les variables par private et de restreindre leur accs l'utilisation de
mthode permet de maintenir la cohrence d'un tat.
4. crivez une mthode c1.isBigger(Circle c2) renvoyant ``vrai'' si le cercle c1 est plus
grand que c2. Comment crire une mthode ayant un comportement similaire, mais
prenant les deux cercles en argument ?
5. tendez la classe Circle avec une classe Cylinder ajoutant une variable h pour la
hauteur et une mthode volume. On ajoutera les constructeurs adquats et on
surchargera toString en consquence.
6. tendez la classe Circle avec une classe ColoredCircle. La classe Cylinder
hrite-t'elle de l'attribut de coloration ?
// Shape.java
public class Shape {
double x, y ;
public Shape() {
x =0 ; y =0 ;
}
public Shape(double x, double y) {
this.x =x ; this.y =y ;
}
public String toString() {return "Position : (" +x +"," +y +")" ; }
}
// Circle.java
public class Circle extends Shape {
final static double PI =3.141592564 ;
private double radius ;
public Circle() {
radius =0 ;
}
public Circle(double x, double y, double r) {
super(x,y) ;
radius =r ;
}
public String toString() {
return super.toString() +" Rayon : " +radius ;
}
}
public class MainShape {
public static void main(String[] args) {
Circle c1,c2 ;
c1 =new Circle(1,1,3) ;
c2 =new Circle() ;
System.out.println(c1.toString() +"\n" +c2.toString()) ;
}
}
Page 2/2

Exercice 2.
On veut modliser la gestion d'une bibliothque : on dfinira un certain nombre de
classes : Main, Ouvrage, BiblioTab, Bibliotheque, Periodique, CD, Livre. Les livres
auront comme proprits : auteur, titre, diteur ; les priodiques : nom, numro,
priodicit ; les CDs : titre, auteur. De plus tous les ouvrages auront une date
d'emprunt (potentiellement nulle), une cote (le numro par ordre de cration). On
implmentera galement sur chaque objet une mthode toString() renvoyant toutes
les informations sur l'ouvrage sous forme d'une chane de caractres.
La classe BiblioTab permettra de stocker dans une structure les livres (ajout et
suppression, la suppression prenant en argument la cote de l'ouvrage). Elle aura
galement une mthode toString() affichant le nombres d'ouvrages, puis chaque
ouvrage successivement. La classe Bibliotheque sera simplement une version
abstraite dclarant les mmes mthodes que BiblioTab mais sans les implmenter.
BiblioTab hritera de Bibliotheque.
La classe Main ne contiendra que la mthode main et testera la bibliothque en y
insrant et supprimant quelques ouvrages, puis en affichant le contenu de la
bibliothque.
1. Reprsentez les diffrentes classes dans un graphe d'hritage. On mettra en
vidence pour chaque classe les mthodes et les champs qu'elle dfinit, redfinit ou
hrite. On souhaite que tous les champs soient dclars privs et que l'on puisse y
accder de l'extrieur que par des mthodes.
2. Implmentez les classes ci-dessus. Pour la classe BiblioTab on utilisera un tableau
de longueur suffisante (on vrifiera quand mme chaque opration d'insertion
que l'on ne dpasse pas les bornes du tableau). Quel sont les inconvnients de
cette mthode ?
Dans ce qui suit, on veut implmenter une deuxime version de la bibliothque, que
l'on appellera BiblioList et qui hritera galement de Bibliotheque. Cette nouvelle
implmentation utilisera la classe LinkedList dfinie dans l'API Java standard.
1. Modifiez le minimum de choses dans la classe Main pour permettre l'utilisation de
BiblioList.
2. En utilisant les mthodes boolean add(Object o) qui permet d'ajouter un objet dans
la liste, boolean remove(Object o), Object get(int index) et int size(), implmentez la
classe BiblioList.
N.B. Vous devrez videmment ajouter au dbut du fichier BiblioList.java la commande
import java.util.*;

You might also like