Primi esercizi con interfacce: si hanno due figure geometriche quali quadrato e rettangolo,di entrambe le figure si vuole calcolare quello con area maggiore ed area minore. Riutilizziamo il codice centrale per calcolare Area Maggiore e Area Minore dei vari quadrati e rettangoli inseriti.
Classe per testare il programma
la classe che si ricorda del max e del min
L'interfaccia chiamata InterfaceX (che fantasia)
Classe Quadrato
Classe Rettangolo
Classe per testare il programma
Code:
public class index { public static void main(String[] args){ MaxAndMin quadrato = new MaxAndMin(); quadrato.addObject(new Quadrato(10.0)); quadrato.addObject(new Quadrato(20.0)); quadrato.addObject(new Quadrato(15.0)); Quadrato qmax = (Quadrato) quadrato.getMax(); System.out.println("Il quadrato con area maggiore e' il quadroto con lato "+qmax.getLato()); Quadrato qmin = (Quadrato) quadrato.getMin(); System.out.println("Il quadrato con area minore e' il quadroto con lato "+qmin.getLato()); MaxAndMin rettangolo = new MaxAndMin(); rettangolo.addObject(new Rettangolo(10,1)); rettangolo.addObject(new Rettangolo(20.0,1)); rettangolo.addObject(new Rettangolo(15.0,1)); Rettangolo rmax = (Rettangolo) rettangolo.getMax(); System.out.println("Il rettangolo con area maggiore e' il rettangolo con altezza "+rmax.getAltezza()+" e con lunghezza "+rmax.getLunghezza()); Rettangolo rmin = (Rettangolo) rettangolo.getMin(); System.out.println("Il rettangolo con area minore e' il rettangolo con altezza "+rmin.getAltezza()+" e con lunghezza "+rmin.getLunghezza()); } }
Code:
public class MaxAndMin { public MaxAndMin(){ max = null; min = null; } public Object getMax(){ return max; } public Object getMin(){ return min; } public void addObject(InterfaceX anObject){ if((max == null ) || (anObject.Area() > max.Area())){ max = anObject; } if(min == null || anObject.Area() < min.Area()){ min = anObject; } } private InterfaceX max; private InterfaceX min; }
Code:
public interface InterfaceX { double Area(); }
Code:
public class Quadrato implements InterfaceX{ public Quadrato(double lato){ this.lato = lato; } @Override public double Area() { return lato*lato; } public double getLato(){ return lato; } private double lato; }
Code:
public class Rettangolo implements InterfaceX{ public Rettangolo(double altezza,double lunghezza){ this.altezza = altezza; this.lunghezza = lunghezza; } @Override public double Area() { return (altezza*lunghezza)/2; } public double getAltezza(){ return altezza; } public double getLunghezza(){ return lunghezza; } private double altezza; private double lunghezza; }
Comment