
Ayuda con polimorfismo.
Publicado por Junior__935 (1 intervención) el 21/01/2023 20:59:02
Hola, tengo un ejercicio sobre polimorfismo que no tengo muy claro como proceder y hacer lo que me pide.
Me pide lo siguiente: Construye la clase ConjuntoDeFiguras para que gestione un array de figuras de cualquier
clase. (utiliza las clases: figura, rectángulo y circulo del ejemplo del moodle herencia).
Entre sus métodos públicos debes incluir las siguientes operaciones con carácter polimórfico:
- Añadir una nueva figura
- Calcular el área total de las figuras almacenadas
- Imprimir por pantalla los datos de todas las figuras almacenadas.
La clase tendrá la siguiente estructura:
public class ConjuntoDeFiguras {
Figura[]A;
ConjuntoDeFiguras(){
A = new Figura[10];
}
void añade(Figura f){ }
double areaTotal(){ }
void imprimeTodo(){}
}
Prueba la clase ConjuntoDeFiguras desde el programa principal siguiente, en una clase nueva, usando
objetos de las clases especializadas Círculo y Rectángulo.
public static void main (String [] args){
double[] Lados = {3d,4d};
ConjuntoDeFiguras c = new ConjuntoDeFiguras();
c.añade(new Rectangulo(Lados, Color.green));
c.añade(new Circulo(5,Color.red));
c.imprimeTodo();
}
Las clases que me piden (Rectángulo y círculo) ya las tengo creadas con sus códigos respectivos, pero la duda me surge principalmente con la de ConjuntodeFiguras. No sé muy bien como debo añadir lo que me pide. Estoy bastante atascado.
Facilito el código de las clases creadas hasta ahora:
Y eso sería todo. Se agradecería cualquier tipo de ayuda.
Me pide lo siguiente: Construye la clase ConjuntoDeFiguras para que gestione un array de figuras de cualquier
clase. (utiliza las clases: figura, rectángulo y circulo del ejemplo del moodle herencia).
Entre sus métodos públicos debes incluir las siguientes operaciones con carácter polimórfico:
- Añadir una nueva figura
- Calcular el área total de las figuras almacenadas
- Imprimir por pantalla los datos de todas las figuras almacenadas.
La clase tendrá la siguiente estructura:
public class ConjuntoDeFiguras {
Figura[]A;
ConjuntoDeFiguras(){
A = new Figura[10];
}
void añade(Figura f){ }
double areaTotal(){ }
void imprimeTodo(){}
}
Prueba la clase ConjuntoDeFiguras desde el programa principal siguiente, en una clase nueva, usando
objetos de las clases especializadas Círculo y Rectángulo.
public static void main (String [] args){
double[] Lados = {3d,4d};
ConjuntoDeFiguras c = new ConjuntoDeFiguras();
c.añade(new Rectangulo(Lados, Color.green));
c.añade(new Circulo(5,Color.red));
c.imprimeTodo();
}
Las clases que me piden (Rectángulo y círculo) ya las tengo creadas con sus códigos respectivos, pero la duda me surge principalmente con la de ConjuntodeFiguras. No sé muy bien como debo añadir lo que me pide. Estoy bastante atascado.
Facilito el código de las clases creadas hasta ahora:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.awt.Color;
public class Clase_rectangulo extends Figura{
private double[] Lados = new double[2];
Clase_rectangulo(){
}
Clase_rectangulo(double[] Lados) {
EstableceLados(Lados);
}
Clase_rectangulo(double[]Lados, Color color) {
super(color);
EstableceLados(Lados);
}
Clase_rectangulo(double[] Lados, Color color, int[] Posicion) {
super(color, Posicion);
EstableceLados(Lados);
}
public void EstableceLados(double[] Lados) {
this.Lados[0] = Lados[0];
this.Lados[1] = Lados[1];
}
public double[] DimeLados() {
return Lados;
}
public double Perimetro() {
return 2d*Lados[0] + 2d*Lados[1];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.awt.Color;
public class Clase_circulo extends Figura {
private double Radio;
Clase_circulo(){
}
public double getRadio() {
return Radio;
}
public void setRadio(double radio) {
Radio = radio;
}
Clase_circulo(double Radio) {
super();
EstableceRadio(Radio);
}
Clase_circulo(double Radio,Color color) {
super(color);
EstableceRadio(Radio);
}
Clase_circulo(double Radio, Color color, int[] Posicion) {
super(color, Posicion);
EstableceRadio(Radio);
}
public void EstableceRadio(double Radio) {
this.Radio = Radio;
}
public double DimeRadio() {
return Radio;
}
public double Perimetro() {
return 2.0d*Math.PI*Radio;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.awt.Color;
public class Figura {
private Color ColorFigura;
private int[] Posicion = new int[2];
Figura() {
EstableceColor(Color.black);
Posicion[0] = 0;
Posicion[1] = 0;
}
Figura(Color color) {
EstableceColor(color);
Posicion[0] = 0;
Posicion[1] = 0;
}
Figura(Color color, int[] Posicion) {
EstableceColor(color);
EstableceCentro(Posicion);
}
public void EstableceColor(Color color) {
ColorFigura = color;
}
public Color DimeColor() {
return ColorFigura;
}
public void EstableceCentro(int[] Posicion) {
this.Posicion[0] = Posicion[0];
this.Posicion[1] = Posicion[1];
}
public int[] DimeCentro() {
return Posicion;
}
public double Perimetro() {
return 0d;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Conjuntodefiguras extends Figura {
Figura[]A;
Conjuntodefiguras(){
A = new Figura[10];
A [0] = new Figura();
A [1] = new Clase_circulo();
A [2] = new Clase_rectangulo();
}
void añade(Figura f){
}
double areaTotal(){
return 2.0d*Math.PI ;
}
void imprimeTodo(){}
System.out.println("Color: " + .Color)
}
Y eso sería todo. Se agradecería cualquier tipo de ayuda.
Valora esta pregunta


0