/**
* {@link <a href=
* "https://[Log in to view URL]" target=
* "_blank">Astrazione, incapsulamento, ereditarietà, polimorfismo</a>}
*
* @author itammb ( Italia Massimiliano Buscati )
* @version JDK 1.15
*
*/
class Main {
public static abstract class Figura {
// incapsulamento
private String colore;
// costruttore
public Figura(String colore) {
this.colore = colore;
System.out.println("super.costruttore");
}
public String getColore() {
return colore;
}
// metodo senza corpo
protected abstract double area();
protected abstract double calculate(double a, double b);
@Override
public String toString() {
return String.format("Figura [colore=%s]", colore);
}
}
public static final class Cerchio extends Figura {
// errore
// private String colore;
private double raggio;
public Cerchio(String color, double raggio) {
// chiama il costruttore padre
super(color);
this.raggio = raggio;
}
public double area() {
return calculate(Math.PI, Math.pow(raggio, 2));
}
protected double calculate(double a, double b) {
return a * b;
}
@Override
public String toString() {
return String.format("Cerchio [raggio=%s, area()=%s, toString()=%s, getColore()=%s]", raggio, area(),
super.toString(), getColore());
}
}
public static class Rettangolo extends Figura {
private double area, lunghezza, larghezza;
public Rettangolo(String colore, double lunghezza, double larghezza) {
super(colore);
// overloading
area = calculate(lunghezza, larghezza);
this.lunghezza = lunghezza;
this.larghezza = larghezza;
}
public Rettangolo(String colore, int lunghezza, int larghezza) {
super(colore);
// overloading
area = calculate(lunghezza, larghezza);
this.lunghezza = lunghezza;
this.larghezza = larghezza;
}
public double getLunghezza() {
return lunghezza;
}
public double getLarghezza() {
return larghezza;
}
protected int calculate(int a, int b) {
return a * b;
}
protected double calculate(double a, double b) {
return a * b;
}
public double area() {
return area;
}
@Override
public String toString() {
return String.format(
"Rettangolo [area=%s, lunghezza=%s, larghezza=%s, getLunghezza()=%s, getLarghezza()=%s, area()=%s, getColore()=%s, toString()=%s]",
area, lunghezza, larghezza, getLunghezza(), getLarghezza(), area(), getColore(), super.toString());
}
}
public static void main(String args[]) throws Exception {
// Unit test - astrazione, incapsulamento, ereditarietà, polimorfismo
System.out.println( new Cerchio( "rosso", 20d ).toString() );
System.out.println( new Rettangolo( "blu", 20d, 20d ).toString() );
// Unit test - overloading del metodo
System.out.println( new Rettangolo( "verde", 20, 20 ));
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: