Vous êtes sur la page 1sur 3

TP 1 : Sous-classes, Héritage

On dispose de la classe suivante :

public class Point {


private double x, y;
public Point (double x, double y) {
setX(x); setY(y);
}
public void move(double dx, double dy) {
x += dx; y += dy;
}
public void display() {
System.out.println("Point at (" + x + "," + y + ")");
}
public double getX() { return x; }
public void setX(int X) { this.x=X;}
public double getY() { return y; }
public void setY(int Y) { this.y=Y;}
}

On souhaite réaliser deux classe Cercle et Cylindre disposant des fonctionnalités suivantes :

1. La classe Cercle
 Un constructeur recevant en argument les coordonnées du centre du cercle et son
rayon.
 Une fonction moveCenter() pour déplacer les coordonnées du
centre du cercle (incréments dx et dy).
 Une fonction changeRadius() pour modifier le rayon du cercle.
 Une fonction getCenter() qui fournit en résultat un objet de
type Point correspondant au centre du cercle.
 Une fonction air() qui permet de calculer l’air du cercle.
Sachant que l’air du cercle est *rayon² et que la constante  en Java est « Math.PI »
 Redéfinir la méthode toString() afin qu'elle retourne une chaine de caractères contenant
les coordonnées du centre du cercle ainsi que son rayon.
 display() qui affiche les coordonnées du centre du cercle et son rayon

Implémenter la classe Cercle comme classe dérivée (sous-classe) de la classe Point.

2. La Classe Cylindre
 Un constructeur vide permet d’initialiser l’hauteur du cylindre à 0.
 Un constructeur recevant en argument les coordonnées du centre du cylindre, son
rayon et son hauteur.
 Une fonction volume qui permet de calculer le volume du cylindre. Sachant que le
volume du cylindre est *rayon²*hauteur
 Redéfinir la méthode toString() afin qu'elle retourne une chaine de caractères contenant
les coordonnées du centre du cylindre, son rayon ainsi que son hauteur.

Implémenter la classe Cylindre comme classe dérivée (sous-classe) de la classe Cercle.

Mr. Mohamed Salah MEDDEB RSI21 1


package cercle;
class Point {
private double x, y;
public Point(double x, double y) {
setX(x);
setY(y);
}
public void move(double dx, double dy) {
x += dx;
y += dy;
}
public void display() {
System.out.println("Point at (" + x + "," + y + ")");
}
public double getX() {
return x;
}
public void setX(double X) {
this.x = X;
}
public double getY() {
return y;
}
public void setY(double Y) {
this.y = Y;
}
}

public class Cercle extends Point {


private double r;
public Cercle(double x, double y, double r) {
super(x, y);
this.r = r;
}

public double getR() {


return r;
}

public void setR(double r) {


this.r = r;
}

public void moveCenter(double dx, double dy) {


super.move(dx, dy);
}

public void changeRadius(double r) {


this.r = r;
}

Mr. Mohamed Salah MEDDEB RSI21 2


public Point getCenter() {
Point centre = new Point(getX(), getY());
return centre;
}

public void display() {


System.out.println("Cercle with center at (" + super.getX() + ", "
+ super.getY() + ") and radius of " + r);
}
}

class Cylindre extends Cercle {


protected int hauteur;
// st hérités x et y de point et rayon de cercle
public Cylindre(int x, int y, double r, int h) {
super(x, y, r);
// appel au constructeur de superclasse, ici cercle(x,y,r)
}

public void sethauteur(int h) {


hauteur = h;
}

public double gethauteur() {


return hauteur;
}

public double volume() {


return Math.PI * getR() * getR() * hauteur;
}

public String toString() {


return ("centre =" + "(" + getX() + "," + getY() + "), Rayon=" + getR() + "et hauteur="
+ hauteur);
}
} // fin class Cylindre

Mr. Mohamed Salah MEDDEB RSI21 3