U09-04-Clases en Java – Ejercicio Formas

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;
	}
}

Related Posts