Licence Informatique
Universit´e Bordeaux 1
2006-2007
UE INF203
Programmation par objets
Travaux Dirig´es
feuille 7
Partie 1 : H´
eritage, classe abstraite, m´
ethode abstraite
Exercice 1. On consid`ere les fichiers fournis en annexe. Se placer dans le r´epertoire partie1. Compiler
puis ex´ecuter le fichier TestFigures1. ´
Etudier les codes sources fournis et r´epondre plus particuli`erement
aux questions suivantes :
– Quelle est la signification du mot cl´e abstract dans la d´eclaration de la classe FigureCentree ?
– D´eterminer pour chacune des classes FigureCentree,Rectangle,Cercle,CercleTroue les m´ethodes
h´erit´ees, les m´ethodes surcharg´ees, les m´ethodes red´efinies, les nouvelles m´ethodes ?
– Justifier les lignes suivantes :
pu bli c F ig ur eC en tr ee ( Po int u ){
ce ntr e = new Po int ( u );
}
– Quel est le rˆole du mot cl´e super dans chacune des lignes suivantes
C er cle Tr ou e ( Ce rcl e c , do ubl e r ay ) {
su per ( c . mo nC en tre () , c . m onR ay on () );
trou = new Cercle ( super . mon Centr e () , ray );
}
public double aire() {
return super . ai re () - tr ou . a ir e ();
}
Exercice 2. On veut placer les figures cr´ees dans un tableau de FigureCentree. Pour ce faire on
utilise TestFigures2.java. Compiler et ex´ecuter cette classe.
On veut maintenant afficher les aires. D´ecommenter les derni`eres lignes du programme et apporter les
corrections n´ecessaires aux classes pr´ec´edemment d´efinies.
Exercice 3. Ajouter `a l’interface FigureAvecCentre les m´ethodes suivantes :
/* * Appl ique `a la figure une r otation de cen tr e donn´e */
public void rot atio nPiS ur2 ( Point cen treRo t );
/* * Appl ique `a la figure une r otation autour de son ce nt re */
public void r otat ionP iSu r2 ();
Modifier les diverses classes en cons´equence.
Partie 2 : Notion de paquetage
On d´esire permettre aux sous-classes (classes d´eriv´ees) l’acc`es aux champs de la super classe.
Si on utilise le modificateur de port´ee private, les champs ne sont connus que pour les instances de la
classe. Il ne sont donc pas accessibles pour les classes d´eriv´ees.
Si on utilise le modificateur de port´ee public, les champs sont toujours accessibles et on rompt l’encap-
sulation.
Il existe en Java la notion de paquetage (package). Un paquetage est un regroupement de classes d´efini
par le programmeur. Par exemple le paquetage java.io regroupe les classes concernant les entr´ees-sorties.
Le modificateur de port´ee protected donne l’acc`es au champ pour toutes les classes du paquetage et
pour les classes d´eriv´ees de la classe consid´er´ee. Dans tous les autres cas, le champ n’est pas accessible.