TD 01 : Initiation à la Programmation Orientée Objet - E

Transcription

TD 01 : Initiation à la Programmation Orientée Objet - E
Université Abderrahmane Mira de Bejaia
Faculté des Sciences Exactes
Département d’informatique
Année Universitaire : 2015/2016
2ème Année Licence – Informatique- (S3)
Module : Programmation Orientée Objet
Chargés de cours : Dr BRAHAMI Née EL BOUHISSI Houda & Dr MEHAOUED Kamal
TD 01 : Initiation à la Programmation Orientée Objet
Exercice 01 :
Réaliser une classe Point permettant de représenter un point sur un axe. Chaque point sera
caractérisé par un nom (de type char) et une abscisse (de type double). On prévoira :
• Un constructeur recevant en arguments le nom et l’abscisse d’un point,
• Une méthode affiche imprimant (en fenêtre console) le nom du point et son abscisse,
• Une méthode translate effectuant une translation définie par la valeur de son argument.
Écrire un petit programme utilisant cette classe pour créer un point, en afficher les
caractéristiques, le déplacer et en afficher à nouveau les caractéristiques.
Exercice 02 : Que fournit le programme suivant ?
class A
{ public A (int coeff)
{ nbre *= coeff ;
nbre += decal ; }
public void affiche ()
{ System.out.println ("nbre = " + nbre + " decal = " + decal) ;}
private int nbre = 20 ;
private int decal ;
}
public class InitChmp
{ public static void main (String args[])
{ A a = new A (5) ; a.affiche() ; } }
Exercice 03 : Quelle erreur a été commise dans cette définition de classe ?
class ChCt
{ public ChCt (float r)
{x=r;}
.....
private final float x ;
private final int n = 10 ;
private final int p ;
}
Exercice 04 : Que fournit le programme suivant ?
class Entier
{ public Entier (int nn) { n = nn ; }
public void incr (int dn) { n += dn ; }
public void imprime () { System.out.println (n) ; }
private int n ;
}
public class TstEnt
{ public static void main (String args[])
{ Entier n1 = new Entier (2) ; System.out.print ("n1 = ") ; n1.imprime() ;
Entier n2 = new Entier (5) ; System.out.print ("n1 = ") ; n2.imprime() ;
n1.incr(3) ; System.out.print ("n1 = ") ; n1.imprime() ;
System.out.println ("n1 == n2 est " + (n1 == n2)) ;
n1 = n2 ; n2.incr(12) ; System.out.print ("n2 = ") ; n2.imprime() ;
TD 01 – Programmation Orientée Objet –
Page 1/3
System.out.print ("n1 = ") ; n1.imprime() ;
System.out.println ("n1 == n2 est " + (n1 == n2)) ;
} }
Exercice 05 : Soit le programme suivant comportant la définition d’une classe nommée
Point et son utilisation :
class Point
{ public Point (int abs, int ord) { x = abs ; y = ord ; }
public void deplace (int dx, int dy) { x += dx ; y += dy ; }
public void affiche () { System.out.println ("Je suis un point de coordonnees " + x + " " + y) ;}
private double x ; // abscisse
private double y ; // ordonnee
}
public class TstPnt
{ public static void main (String args[])
{ Point a ;
a = new Point(3, 5) ; a.affiche() ;
a.deplace(2, 0) ; a.affiche() ;
Point b = new Point(6, 8) ; b.affiche() ;
}
}
Question : Modifier la définition de la classe Point en supprimant la méthode affiche et en
introduisant deux méthodes d’accès nommées abscisse et ordonnee fournissant respectivement
l’abscisse et l’ordonnée d’un point. Adapter la méthode main en conséquence.
Exercice 06 : 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) ;
a.f(n) ;
f(n) ; } }
Exercice 07 : Soit l'extrait de programme suivant :
class Plante {
private String nom;
public int prix;
private Plante (String s) { ... }
public Plante (String nom, int prix) { …..}
private void fixePrix(int p) { prix = p; }
public String toString() {
return "(" + nom + "," + prix + ")"; } }
class Essai{
public static void main(String[] args) {
Plante a = new Plante("Rose",6);
Plante b = new Plante("Orchidée");
b.prix = 3000; b.fixePrix(8000);
System.out.println(a); } }
Question : Compte tenu de l'accessibilité des membres ou des méthodes de la classe Plante,
déterminer quelles sont les instructions qui sont correctes et celles qui ne le sont pas.
Exercice 08 : Parmi les méthodes de la classe suivante, lesquelles peuvent être statiques et
lesquelles ne peuvent en aucun cas être statiques ?
TD 01 – Programmation Orientée Objet –
Page 2/3
class Exo13_3{
int x, y;
String nom;
void afficher(){
System.out.println(nom + " " + x + " " + y);
}
void ajouter(Exo13_3 obj){
x = x + obj.x;
y = y + obj.y;
nom = nom + obj.nom;
}
Exo13_3 nouveau(int n){
Exo13_3 res = new Exo13_3();
res.x = n;
res.y = n*2;
res.nom = "Auto_"+n;
return res;
}
boolean plusGrand(Exo13_3 obj){
if (obj.x == x){
return y>obj.y;
}else{
return x>obj.x;
}
}
boolean compare(Exo13_3 obj1, Exo13_3 obj2){
if (obj1.x == obj2.x){
return obj1.y>obj2.y;
}else{
return obj1.x>obj2.x;
}
Exercice 09 : Soit les classes suivantes :
class Compteur{
int x;
Compteur(int n){ x=n; }
Compteur incremente(){
x++; return this; }
int value(){ return x; } }
class Exo13_4{
public static void main(String[] argv){
Compteur c1, c2, c3;
c1 = new Compteur(0);
c1.incremente();
c2 = new Compteur(1);
c3 = c1;
if (c1 == c3){ System.out.println("c1 et c3 sont egaux");
}else{ System.out.println("c1 et c3 ne sont pas egaux"); }
if (c1.value() == c2.value()){ System.out.println("c1 et c2 ont meme valeur");
}else{ System.out.println("c1 et c2 n’ont pas la meme valeur"); }
if (c1 == c2){ System.out.println("c1 et c2 sont egaux");
}else{ System.out.println("c1 et c2 ne sont pas egaux"); }
if (c1.value() == c1.incremente().value()){ System.out.println("c1 et c1 incremente ont meme valeur");
}else{ System.out.println("c1 et c1 incremente n’ont pas la meme valeur"); }
if (c1 == c1.incremente()){ System.out.println("c1 et c1 incremente sont egaux");
}else{ System.out.println("c1 et c1 incremente ne sont pas egaux"); } } }
Question : Essayez de prédire le résultat de l’exécution de ce
programme. Que peut-on en déduire sur la notion d’égalité d’objets en java ?
TD 01 – Programmation Orientée Objet –
programme.
Testez
le
Page 3/3

Documents pareils