bonjour à tous;
j'ai trouvé un exercice qui traite les notions d'héritage et polymorphisme.
j'ai rencontré quelques difficultés . Au dessus l'exercice et juste à après la solution que j'ai fait:
On souhaite disposer d’un ensemble de classes permettant de manipuler des formes tridimensionnelles. Pour cela on propose la hiérarchie de classes. Les contraintes sur ces classes sont les suivantes :
- La classe Forme ne pourra pas être instanciée.
- La classe Cube ne pourra pas être dérivée.
- Chaque forme possède un attribut de type Point3D qui représente son centre de gravité et un attribut réel représentant sa densité.
- Un objet de type Boule est caractérisé par son centre de gravité, sa densité et son rayon.
- Un objet de type CylindrePlein est caractérisé par son centre de gravité, sa densité, une hauteur et un rayon.
- Un objet de type Brique est caractérisé par son centre de gravité, sa densité, une largeur, une longueur et une hauteur.
- Un objet de type Cube est une brique pour laquelle largeur = longueur = hauteur.
Les formes disposent d’une méthode bouger prenant comme paramètres trois réels représentant les composantes x, y et z d’un vecteur de translation et des méthodes calculerSurface, calculerVolume et calculerPoids calculant respectivement la surface, le volume et le poids (volume x densité) de la forme.
De plus, toute forme est capable de donner sa représentation sous la forme d’une chaîne de caractères contenant le nom de sa classe et la description textuelle de chacun de ses attributs.
questions:
1-Ecrivez le code Java des classes Forme, Brique et Cube.
On ajoute à la classe Forme un attribut listeDeFormes de type Vector qui contiendra la liste des références de toutes les formes instanciées
Précisez la déclaration de cet attribut. Que faut-il modifier dans le code de la question
2-pour que cet attribut contienne effectivement la liste des références à toutes les formes instanciées ?
3-Ecrivez le code de la fonction poidsTotal qui permet de calculer et d’afficher sur la sortie standard (System.out) le poids total des formes contenues dans la liste listeDeFormes. Précisez dans quelle classe se place cette méthode.
mes réponses: j'ai pas fait tout l'exercice
la classe Point3D:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Point3D {
 protected  double x,y,z;
 
    public Point3D(double x, double y, double z){
	this.x=x;this.y=y;this.z=z;
    }
    public void bouger(double dx, double dy, double dz){
	x=x+dx; y=y+dy; z=z+dz;
    }
 
    public String toString(){
	return "Point3D (x ="+x+" , y ="+y+", z ="+z+")\n";
    }
}
la classe Forme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
abstract class Forme {
    Point3D centre;
    double d;
     public Forme(Point3D c, double r){
	centre=c;
	d=r;
    }
 
    public void bouger(double v1, double v2, double v3){
	centre.bouger(v1,v2,v3);
    }
 
    abstract public double calculerSurface();
    abstract public double calculerVolume();
 
    public double calculerPoids(){
	return d*calculerSurface();
    }
 
}
la classe Brique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Brique extends Forme{
    protected double largeur,longueur, hauteur;
 
    public Brique(Point3D p, double d, double l, double L, double h){
	super(p,d);
	largeur=l;
	longueur=L;
	hauteur=h;
    }
 
    public double calculerSurface(){
	return 2*(largeur*longueur + largeur*hauteur + longueur*hauteur);
    }
 
    public double calculerVolume(){
	return largeur*hauteur*longueur;
    }
 
}
la classe Cube:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
final class Cube extends Brique{
    public Cube(Point3D p, double d, double l){
	super(p,d,l,l,l);
    }
}
quelqu'un pourrait me guider pour les autres questions.
merci d'avance