Académique Documents
Professionnel Documents
Culture Documents
: 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
Exercice 2:
1/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
Exercice 4:
- Une méthode public f(int) qui possède les mêmes paramètres que f(int) de la classe mère
mais avec le type de retour différent, donc la définition de cette méthode ne respecte pas
ni les règles de redéfinition ni celles de surcharge ce qui génère une erreur de
compilation :
Exercice 5:
a.f(n) ;
Appel de f(int) de A (surcharge de f dans A)
a.f(x) ;
Appel de f(float) de A (surcharge de f dans A)
a.f(l) ;
2/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
Exercice 6:
B b=new B() ;
Cette instruction crée un objet b de type B.
A a =b ;
3/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
a.f(2):
La méthode f() est statique donc on ne peut pas la redéfinir, càd que son appel sera effectué
en se basant sur le type statique et pas sur le type dynamique.
NB. L’appel des méthodes d’instances, en revanche, se base sur le type dynamique.
Alors a.f(2) fait appel à la méthode f() de la classe A qui va retourner la valeur 7 (2+5).
a.g(3):
La méthode g() est une méthode d’instance donc son appel sera basé sur le type dynamique
de l’objet appelant. Donc, a.g(3) fait appel à la méthode g() redéfinie dans la classe B qui va
retourner la valeur 11 (3+8).
a.f(2)*a.g(3):
Exercice 7:
Le diagramme de classe de cette application est le suivant :
Point Forme
- abscisse : double # p : Point
- ordonnee : double
+ <<Forme>>(Point p)
+ <<Point>>() + deplacer(double dx, double dy): void
+ <<Point>>( double abscisse, double 1 n + surface() : double
ordonnee) + perimetre() : double
+ deplacerXY(double dx, double dy): void + getTypeForme(): String
+ distance(Point p) : double
Rectangle Ellipse
- longueur : double - grandRayon : double
- largeur : double - petitRayon : double
Cercle
Carre - rayon : double
- cote : double + <<Cercle>>(Point p, double rayon)
+ <<Carre>>(Point p, double cote) + getDiametre() : int
+ getTypeForme(): String + getTypeForme(): String
4/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
La classe Point :
package exercice7;
//Constructeurs
public Point() {
this.abscisse = 0;
this.ordonnee = 0;
}
public Point(double abscisse, double ordonnee) {
this.abscisse = abscisse;
this.ordonnee = ordonnee;
}
//getters et setters
public double getAbscisse() {
return abscisse;
}
public void setAbscisse(double abscisse) {
this.abscisse = abscisse;
}
public double getOrdonnee() {
return ordonnee;
}
public void setOrdonnee(double ordonnee) {
this.ordonnee = ordonnee;
}
5/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
La classe Forme :
package exercice7;
public Forme(Point p) {
this.p = p;
}
// Les getters et les setters
public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
//Les méthodes
public void deplacerForme(double dx, double dy) {
this.p.deplacerXY(dx, dy);
}
}
//Une méthode pour ajuster la précision des nombres réels
public double ajuster(double nbre) {
return Math.round(nbre*100)/100.0;
}
}
La classe Rectangle :
package exercice7;
6/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
@Override
public String getTypeForme() {
return super.getTypeForme() + "Rectangle";
}
La classe Ellipse :
package exercice7;
7/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
@Override
public String getTypeForme() {
return super.getTypeForme() + "Ellipse";
}
// p=2*PI * racine((a2+b2)/2)
@Override
public double perimetre() {
return ajuster(2 * Math.PI
* Math.sqrt((Math.pow(grandRayon, 2)
+ Math.pow(petitRayon, 2))/2));
}
// p= PI*(3(a+b)-racine((3a+b)(a+3b) ))
// et methode = "Ramanujan"
public double perimetre(String methode) {
return ajuster(Math.PI * (
3 * (grandRayon + petitRayon)
- Math.sqrt((3 * grandRayon + petitRayon)
* (grandRayon + 3 * petitRayon))
));
}
@Override
public double surface() {
return ajuster(Math.PI * grandRayon * petitRayon);
}
La classe Carre :
package exercice7;
@Override
public String getTypeForme() {
return "La forme Carré" ;
}
8/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
La classe Cercle :
package exercice7;
@Override
public String getTypeForme() {
return "La forme Cercle";
}
La classe TestFormes :
package exercice7;
9/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
//Périmètre
System.out.println();
System.out.println("Périmètre :");
System.out.println("Périmètre de " + r + " est: " +
r.perimetre());
System.out.println("Périmètre de " + c + " est: " +
c.perimetre());
System.out.println("Périmètre de " + el + " est: " +
el.perimetre());
System.out.println("Périmètre 2 de " + el + " est: " +
el.perimetre("Ramanujan"));
System.out.println("Périmètre de " + cr + " est: " +
cr.perimetre());
System.out.println("Périmètre 2 de " + cr + " est: " +
cr.perimetre("Ramanujan"));
//Surface
System.out.println();
System.out.println("Surface :");
System.out.println("Surface de " + r + " est: " + r.surface());
System.out.println("Surface de " + c + " est: " + c.surface());
System.out.println("Surface de " + el + " est: " + el.surface());
System.out.println("Surface de " + cr + " est: " + cr.surface());
}
}
10/11
AU. : 2019/2020/Session d’Automne
Filière : LST Génie Logiciel, S5
Module : I511
Professeur : M.OUALLA
Périmètre :
Périmètre de La forme Rectangle((3.0, 7.0),10.0 x 6.0) est: 32.0
Périmètre de La forme Carré((2.0, 6.0), 10.0) est: 40.0
Périmètre de La forme Ellipse((5.0, 8.0),7.0 x 2.0) est: 32.34
Périmètre 2 de La forme Ellipse((5.0, 8.0),7.0 x 2.0) est: 30.5
Périmètre de La forme Cercle((1.0, 2.0), 7.0) est: 43.98
Périmètre 2 de La forme Cercle((1.0, 2.0), 7.0) est: 43.98
Surface :
Surface de La forme Rectangle((3.0, 7.0),10.0 x 6.0) est: 60.0
Surface de La forme Carré((2.0, 6.0), 10.0) est: 100.0
Surface de La forme Ellipse((5.0, 8.0),7.0 x 2.0) est: 43.98
Surface de La forme Cercle((1.0, 2.0), 7.0) est: 153.94
11/11