ISET Béjà Lammouchi R.
POO
TD – TP 2
Exercice 1
On suppose qu’on dispose de la classe A ainsi définie :
class A
{
void f (int n, float x) { ..... }
void g (byte b) { ..... }
.....
}
Soit ces déclarations :
A a ; int n ; byte b ; float x ; double y ;
Dire si les appels suivants sont corrects et sinon pourquoi.
a.f (n, x) ;
a.f (b+3, x) ;
a.f (b, x) ;
a.f (n, y) ;
a.f (n, (float)y) ;
a.f (n, 2*x) ;
a.f (n+5, x+0.5) ;
a.g (b) ;
a.g (b+1) ;
a.g (b++) ;
a.g (3) ;
Exercice 2
Quelles erreurs ont été commises dans la définition de classe suivante et dans son
utilisation ?
class A
{
static int f (int n)
{
q=n;
}
void g (int n)
{
q=n;
p=n;
}
static private final int p = 20 ;
private int q ;
}
public class EssaiA
{
public static void main (String args[])
{
A a = new A() ; int n = 5 ;
a.g(n) ;
Page 1 sur 2
ISET Béjà Lammouchi R.
a.f(n) ;
f(n) ;
}
}
Exercice 3
Créer une classe permettant de manipuler un point d’un axe, repéré par une abscisse (de type
int). On devra pouvoir effectuer des changements d’origine, en conservant en permanence
l’abscisse d’une origine courante (initialement 0). On prévoira simplement les méthodes
suivantes :
constructeur, recevant en argument l’abscisse "absolue" du point (c’est-à-dire repérée
par rapport au point d’origine 0 et non par rapport à l’origine courante),
affiche qui imprime à la fois l’abscisse de l’origine courante et l’abscisse du point par
rapport à cette origine,
setOrigine qui permet de définir une nouvelle abscisse pour l’origine (exprimée de
façon absolue et non par rapport à l’origine courante),
getOrigine qui permet de connaître l’abscisse de l’origine courante.
Ecrire un petit programme de test fournissant les résultats suivants :
Point a - abscisse = 3
relative à une origine d'abscisse 0
Point b - abscisse = 12
relative à une origine d'abscisse 0
On place l'origine en 3
Point a - abscisse = 0
relative à une origine d'abscisse 3
Point b - abscisse = 9
relative à une origine d'abscisse 3
Exercice 4
Réaliser une classe qui permet d’attribuer un numéro unique à chaque nouvel objet créé (1 au
premier, 2 au suivant…). On ne cherchera pas à réutiliser les numéros d’objets éventuellement
détruits. On dotera la classe uniquement d’un constructeur, d’une méthode getIdent
fournissant le numéro attribué à l’objet et d’une méthode getIdentMax fournissant le numéro
du dernier objet créé.
Écrire un petit programme d’essai.
Page 2 sur 2