Definir una clase Forma.
Atributo privado: color (string)
Constructor: recibe el color como parámetro
El color se modifica a través de set y get
Métodos abstractos:
area()
perimetro()
Definir una clase Circulo que hereda de Forma
Atributo privado: radio (int)
Constructor: recibe color y radio
Definir una clase Cuadrado que hereda de Forma
Atributo privado: lado1(int)
Constructor: recibe color y lado1
Definir una clase Rectángulo que hereda de Cuadrado
Atributo privado: lado2(int)
Constructor: recibe color, lado1 y lado2
Definir una clase Triangulo que hereda de Forma
Atributo privado: base(int), altura (int), lado1 (int), lado2(int), lado3(int)
Constructor: recibe color, base y altura
Constructor: recibe color, lado1, lado2, lado3
Constructor: recibe color, base, altura, lado1, lado2, lado3
package U2;
public class E00_00 {
public static void main(String[] args) {
System.out.println("*** Circulo ***");
Circulo c=new Circulo("rojo",5);
System.out.println(c.getColor() + " area:" + c.area() + " perimetro: " + c.perimetro());
System.out.println("*** Cuadrado ***");
Cuadrado cua=new Cuadrado("rojo",5);
System.out.println(cua.getColor() + " area:" + cua.area() + " perimetro: " + cua.perimetro());
System.out.println("*** Rectangulo ***");
Cuadrado r=new Rectangulo("rojo",5,4);
System.out.println(r.getColor() + " area:" + r.area() + " perimetro: " + r.perimetro());
System.out.println("*** Triangulo ***");
Triangulo t=new Triangulo("verde", 3, 5);
System.out.println(t.getColor() + " area:" + t.area() + " perimetro: " + t.perimetro());
System.out.println("*** Triangulo ***");
Triangulo t1=new Triangulo("verde", 5, 5,5);
System.out.println(t1.getColor() + " area:" + t1.area() + " perimetro: " + t1.perimetro());
System.out.println("*** Triangulo ***");
Triangulo t2=new Triangulo("verde", 3,5, 5, 5,5);
System.out.println(t2.getColor() + " area:" + t2.area() + " perimetro: " + t2.perimetro());
}
}
abstract class Forma{
private String color;
Forma(String c){
this.setColor(c);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
abstract double area();
abstract double perimetro();
}
class Triangulo extends Forma {
int base;
int altura;
int lado1;
int lado2;
int lado3;
Triangulo(String c, int b, int a, int l1, int l2, int l3){
super(c);
this.base=b;
this.altura=a;
this.lado1=l1;
this.lado2=l2;
this.lado3=l3;
}
Triangulo(String c, int b,int a){
super (c);
this.base=b;
this.altura=a;
}
Triangulo(String c,int l1, int l2, int l3){
super (c);
this.lado1=l1;
this.lado2=l2;
this.lado3=l3;
}
@Override
double area() {
double ar=(double)(this.base*this.altura)/2;
return ar;
}
@Override
double perimetro() {
int per=this.lado1+this.lado2+this.lado3;
return per;
}
}
class Rectangulo extends Cuadrado{
int lado2;
Rectangulo(String c, int l1, int l2){
super(c,l1);
this.lado2=l2;
}
double area() {
return super.lado1*lado2;
}
double perimetro() {
return super.lado1*2 + lado2*2;
}
}
class Cuadrado extends Forma{
int lado1;
Cuadrado(String c, int l){
super(c);
this.lado1=l;
}
@Override
double area() {
return Math.pow(this.lado1,2);
}
@Override
double perimetro() {
return 4*this.lado1;
}
}
class Circulo extends Forma{
private double radio;
Circulo (String c, double r){
super(c);
this.radio=r;
}
@Override
double area() {
return Math.PI*Math.pow(this.radio, 2);
}
@Override
double perimetro() {
return 2*Math.PI*this.radio;
}
}