Java - Implementar super()

 
Vista:
Imágen de perfil de Fernando
Val: 18
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Fernando (26 intervenciones) el 20/07/2018 15:02:03
Hola gente, verán, estoy haciendo un curso de java. Estoy trabado en un ejercicio. Es de herencia y polimorfismo.
Básicamente tengo una clase Shape de donde se desprenden 2 clases, Circle y Rectangle, la clase Square hereda de la clase Rectangle. El problema puntual que tengo es el siguiente:

Para cuadrado: 
f. Proporcione los constructores apropiados (como se muestra en el  diagrama de clases). Pista: 
public Square(double side) { 
super(side, side); // Call superclass Rectangle(double, double)  


5be7c3af48ea07aae1e5b10e1af8cefao

Basicamente, no sé como implementar super(side, side), no sé como seguir a partir de ahi

Esto es lo que tengo hecho hasta ahora:

Clase Shape



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
public class Shape {
    protected String color = "red";
    protected boolean filled = true;
 
    public Shape() {};
    public Shape(String color, boolean filled) {
        this.color = color;
        this.filled  = filled;
    };
 
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    public boolean isFilled() {
        return filled;
    }
 
    public void setFilled(boolean filled) {
        this.filled = filled;
    }
 
    public String toString() {
        return "Una figura de color " + this.getColor() + " y " + "llena " + this.isFilled();
    }
 
 
}

Clase Circle



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
public class Circle extends Shape {
    private double radius = 1.0;
 
    Circle(){};
    Circle(double radius){
        this.radius = radius;
    };
    Circle(double radius, String color, boolean filled) {
        this.radius = radius;
        this.color = color;
        this.filled = filled;
    };
 
    public double getRadius() {
        return radius;
    }
 
    public void setRadius(double radius) {
        this.radius = radius;
    }
 
    public double getArea() {
        double area = Math.PI * Math.pow(this.radius, 2);
        return area;
    }
 
    public double getPerimeter() {
        double perimeter = (2 * Math.PI) * this.radius;
        return perimeter;
    }
 
    public String toString() {
        return "Una figura de color " + this.getColor() + " y " + "llena " + this.isFilled();
    }
 
}

Clase Rectangle



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
42
43
44
45
46
47
public class Rectangle extends Shape{
    private double width = 1.0;
    private double length = 1.0;
 
    public Rectangle() {};
    public Rectangle(double width, double length){
        this.width = width;
        this.length = length;
    };
    public Rectangle(double width, double length, String color, boolean filled) {
        this.width = width;
        this.length = length;
        this.color = color;
        this.filled = filled;
    };
 
    public double getWidth() {
        return width;
    }
 
    public void setWidth(double width) {
        this.width = width;
    }
 
    public double getLength() {
        return length;
    }
 
    public void setLength(double length) {
        this.length = length;
    }
 
    public double getArea() {
        double area = this.width * this.length;
        return area;
    }
 
    public double getPerimeter() {
        double perimeter = (this.width * 2) + (this.length * 2);
        return perimeter;
    }
 
    public String toString() {
        return "Una figura de color " + this.getColor() + " y " + "llena " + this.isFilled();
    }
 
}

Clase Square



1
2
3
4
5
6
7
8
9
10
public class Square extends Rectangle{
 
    Square(){};
    Square(double side) {
        super(side, side);
    };
    Square(double side, String color, boolean filled) {
 
    };
}

Muchas gracias desde yá
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Yamil Bracho (2315 intervenciones) el 20/07/2018 15:52:47
super() indica la llamada al coinstructor de la clase Padre y en este caso tienes que Square desciende de Rectangle y en rectangle uno de sus constructores tiene la firma public Rectangle(double width, double length) asi que ese es el constructor que se esta ejecutando en la clase Square cuando llamas a super().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando
Val: 18
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Fernando (26 intervenciones) el 23/07/2018 21:52:27
Antes que anda gracias por comentar.

Ahora bien, me pide que haga 2 métodos, getSide() y setSide() que serían de la siguiente forma:

1
2
3
4
5
6
7
public double getSide() {
        return side;
    }
 
    public void setSide(double side) {
        this.side = side
    }

Sin embargo el IDE me dice que no encuentra la variable side, podría inicializarla así "protected double side"
Pero en el diagrama de clases no aparece ningún atributo en la clase Square.

Entonces, no sé si inicializar la variable side dentro de Square o que debo hacer?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Yamil Bracho (2315 intervenciones) el 23/07/2018 21:58:05
No has definido side en la jerarquia de objetos que tienes.
Shape
Rectangle
Square

En dond ela vas a definir, en rectangle o en Shape ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando
Val: 18
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Fernando (26 intervenciones) el 23/07/2018 22:10:49
Supongo que en Square al invocar a super(side, side), lo que está haciendo es pasarle al constructor de Rectangle que esta hecho así:
1
2
3
4
public Rectangle(double width, double length){
    this.width = width;
    this.length = length;
};

Por lo que pienso que width y length en la clase Square son side y side.
Es que yo miro el diagrama de clases y no veo por ningún lado que tenga que declarar side. A menos que el que haya hecho ese ejercicio se le haya olvidado escribir que hay que declarar side en algun lado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Yamil Bracho (2315 intervenciones) el 23/07/2018 22:29:50
Ciero asi que no se te hace falta crear la variable side.

Puedes agregar a Square

1
2
3
4
5
6
7
8
public double getSide() {
        return this.getWidth():
}
 
public void setSide(double side) {
       this.setWidth(side);
      this.setlength(side);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Fernando
Val: 18
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Implementar super()

Publicado por Fernando (26 intervenciones) el 23/07/2018 22:38:40
Muchas gracias, creo que así debía hacer.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar