Vous êtes sur la page 1sur 6

Filière : DUT - Génie Informatique

Élément : Programmation Orientée Objet


Semestre : II
Pr. Salek RIADI

TD/TP N°3

Exercice 1
Quels résultats fournit le programme suivant (TestA.java) ?

2022/2023 1/6
Filière : DUT - Génie Informatique
Élément : Programmation Orientée Objet
Semestre : II
Pr. Salek RIADI

/* TestA.java */
class A {
private static int nb = 0;
A(){ nb++; }
public static int getNB(){ return nb; }
public void f(byte b) { System.out.println("je suis void f(byte b) ");}
public void f(int n) {
System.out.println("je suis void f(int n) ");
nb += n;
}
public void f(float x) {System.out.println("je suis void f(float x) ");}
public void f(double y) {System.out.println("je suis void f(double y) ");}
public void f(int n, double y) {
System.out.println("je suis void f(int n, double y) ");
nb += n;
}
public void f(int n, float x) {
System.out.println("je suis void f(int n, float x) ");
nb += n;
}
public void f(float x1, float x2) {System.out.println("je suis void f(float x1, float x2)");}
public void f(float x, int n) {
System.out.println("je suis void f(float x, int n)");
nb += n;
}
}

public class TestA {


public static void main(String args[]) {
byte b = 1; int i = 1; short s = 1; long l = 1; float x = 1;
A a1 = new A();
a1.f(b);
a1.f(i);
a1.f(x);
a1.f(s);
System.out.println("nb = " + A.getNB());
A a2 = new A();
a2.f(2.*l);
a2.f(b + 1, x) ;
a2.f(x, i) ;
a2.f(i, 2. * l) ;
System.out.println("nb = " + A.getNB());
}
}

2022/2023 2/6
Filière : DUT - Génie Informatique
Élément : Programmation Orientée Objet
Semestre : II
Pr. Salek RIADI

Exercice 2
On dispose de la classe suivante :

class Point {
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void deplace(double dx, double dy) {
x += dx;
y += dy;
}
public void affiche() {
System.out.println("Point de coordonnees " + x + " " + y);
}
public double getX() {
return x;
}
public double getY() {
return y;
}
private double x, y;
}

On souhaite réaliser une classe Cercle disposant des méthodes suivantes :


­ constructeur recevant en argument les coordonnées du centre du cercle et son rayon,
­ deplaceCentre pour modifier les coordonnées du centre du cercle,
­ changeRayon pour modifier le rayon du cercle,
­ getCentre qui fournit en résultat un objet de type Point correspondant au centre du
cercle,
­ affiche qui affiche les coordonnées du centre du cercle et son rayon.
1. Définir la classe Cercle comme classe dérivée de Point.
2. Ecrire la classe TestCercle pour tester les fonctionnalités de la classe Cercle.

Exercice 3
Quels résultats fournit le programme suivant (MainClass.java) ?

2022/2023 3/6
Filière : DUT - Génie Informatique
Élément : Programmation Orientée Objet
Semestre : II
Pr. Salek RIADI

/*MainClass.java*/
class A {
public void f(double x) {
System.out.println("A.f(double=" + x + ") ");
}
}

class B extends A {
}

class C extends A {
public void f(long q) {
System.out.println("C.f(long=" + q + ") ");
}
}

class D extends C {
public void f(float x) {
System.out.println("F.f(float=" + x + ") ");
}
public void f(int n) {
System.out.println("F.f(int=" + n + ") ");
}
}

public class MainClass {


public static void main(String arg[]) {
int n = 3; long q = 4; float x = 5.f; double y = 6.;
A a = new A(); B b = new B(); C c = new C(); D d = new D();
a.f(x);
b.f(x);
a = c;
a.f(q);
a.f(x);
d.f(n);
d.f(y);
a = d;
a.f(n);
a.f(x);
c = d;
c.f(q);
c.f(y);
}
}

2022/2023 4/6
Filière : DUT - Génie Informatique
Élément : Programmation Orientée Objet
Semestre : II
Pr. Salek RIADI

Exercice 4
Quels résultats fournit le programme suivant (MainClass.java) ?

/*MainClass.java*/
class A {}
class B extends A{
public B (int v){
super();
System.out.println ("Entree constructeur B - i=" + i ) ;
i=v;
System.out.println ("Sortie constructeur B - i=" + i) ;
}
public int i ;
}
class C extends B{
public C (int v, int w){
super(v);
System.out.println ("Entree constructeur C - i=" + i + " j=" + j) ;
j=w;
System.out.println ("Sortie constructeur C - i=" + i + " j=" + j) ;
}
public int j = 7 ;
}
class D extends C{
public D (int v, int w, int u){
super(v,w) ;
System.out.println ("Entree constructeur D - i=" + i + " j=" + j + " k=" + k) ;
k = u;
System.out.println ("Sortie constructeur D - i=" + i + " j=" + j + " k=" + k) ;
}
public int k = 17 ;
}
public class MainClass{
public static void main (String args[]){
A a = new A();
B b = new B(5);
C c = new C(3, 9);
D d = new D(4, 9, 6);
}
}

2022/2023 5/6
Filière : DUT - Génie Informatique
Élément : Programmation Orientée Objet
Semestre : II
Pr. Salek RIADI

Exercice 5
1. Quels résultats fournit le programme suivant (MainClass.java) ?

/*MainClass.java*/
class Point{
public Point (int x, int y) {
this.x = x;
this.y = y;
}
public static boolean identiques (Point a, Point b){
return ( (a.x==b.x) && (a.y==b.y) ) ;
}
public boolean identique (Point a){
return ( (a.x==x) && (a.y==y) ) ;
}
private int x, y ;
}
class PointNom extends Point{
PointNom (int x, int y, char nom){
super (x, y) ;
this.nom = nom;
}
private char nom;
}
public class MainClass{
public static void main (String args[]){
Point p = new Point (2, 4);
PointNom pn1 = new PointNom (2, 4, 'A');
PointNom pn2 = new PointNom (2, 4, 'B');
System.out.println (pn1.identique(pn2));
System.out.println (p.identique(pn1));
System.out.println (pn1.identique(p));
System.out.println (Point.identiques(pn1, pn2));
}
}

2. Compléter la classe PointNom en ajoutant une méthode statique identiques et une méthode
identique fournissant toutes les deux la valeur true lorsque les deux points concernés ont
à la fois mêmes coordonnées et même nom.
3. Quels résultats fournira alors le programme précédent (MainClasss.java)?

2022/2023 6/6

Vous aimerez peut-être aussi