From 8e1d4fb0961ccff2c5965e9746a3d65a2f059e96 Mon Sep 17 00:00:00 2001 From: Orange Date: Wed, 9 Nov 2016 18:17:16 +0100 Subject: [PATCH] implements confrontatore --- src/FigureGeometriche/Confrontatore.java | 3 ++ src/FigureGeometriche/ConfrontoArea.java | 9 +++++ src/FigureGeometriche/ConfrontoPerimetro.java | 9 +++++ src/FigureGeometriche/Manager.java | 38 +++++++------------ src/FigureGeometriche/Test.java | 4 +- 5 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 src/FigureGeometriche/Confrontatore.java create mode 100644 src/FigureGeometriche/ConfrontoArea.java create mode 100644 src/FigureGeometriche/ConfrontoPerimetro.java diff --git a/src/FigureGeometriche/Confrontatore.java b/src/FigureGeometriche/Confrontatore.java new file mode 100644 index 0000000..db1a8e0 --- /dev/null +++ b/src/FigureGeometriche/Confrontatore.java @@ -0,0 +1,3 @@ +public interface Confrontatore{ + boolean confronto(Object ob1, Object ob2); +} \ No newline at end of file diff --git a/src/FigureGeometriche/ConfrontoArea.java b/src/FigureGeometriche/ConfrontoArea.java new file mode 100644 index 0000000..db87ded --- /dev/null +++ b/src/FigureGeometriche/ConfrontoArea.java @@ -0,0 +1,9 @@ +public class ConfrontoArea implements Confrontatore{ + + public boolean confronto(Object ob1, Object ob2){ + FiguraGeometrica fg1 = (FiguraGeometrica) ob1; + FiguraGeometrica fg2 = (FiguraGeometrica) ob2; + + return fg1.calcolaArea()>fg2.calcolaArea(); + } +} \ No newline at end of file diff --git a/src/FigureGeometriche/ConfrontoPerimetro.java b/src/FigureGeometriche/ConfrontoPerimetro.java new file mode 100644 index 0000000..e39223e --- /dev/null +++ b/src/FigureGeometriche/ConfrontoPerimetro.java @@ -0,0 +1,9 @@ +public class ConfrontoPerimetro implements Confrontatore{ + + public boolean confronto(Object ob1, Object ob2){ + FiguraGeometrica fg1 = (FiguraGeometrica) ob1; + FiguraGeometrica fg2 = (FiguraGeometrica) ob2; + + return fg1.calcolaPerimetro()>fg2.calcolaPerimetro(); + } +} \ No newline at end of file diff --git a/src/FigureGeometriche/Manager.java b/src/FigureGeometriche/Manager.java index 71dc6e0..6e53fc0 100644 --- a/src/FigureGeometriche/Manager.java +++ b/src/FigureGeometriche/Manager.java @@ -26,47 +26,35 @@ public class Manager{ return fg; } - - public FiguraGeometrica getAreaMax() { + + public FiguraGeometrica getMax(String tipo){ + Confrontatore conf = null; + if(tipo.equals("perimetro")) conf = new ConfrontoPerimetro(); + if(tipo.equals("area")) conf = new ConfrontoArea(); + FiguraGeometrica max = figure.get(0); for (int i = 1; i < figure.size(); i++) - if (max.calcolaArea() < figure.get(i).calcolaArea()) + if (!conf.confronto(max, figure.get(i))) max = figure.get(i); return max; } - public FiguraGeometrica getAreaMin() { - FiguraGeometrica min = figure.get(0); + public FiguraGeometrica getMin(String tipo){ + Confrontatore conf = null; + if(tipo.equals("perimetro")) conf = new ConfrontoPerimetro(); + if(tipo.equals("area")) conf = new ConfrontoArea(); - for (int i = 1; i < figure.size(); i++) - if (min.calcolaArea() > figure.get(i).calcolaArea()) - min = figure.get(i); - - return min; - } - - public FiguraGeometrica getPerimetroMax(){ FiguraGeometrica max = figure.get(0); for (int i = 1; i < figure.size(); i++) - if (max.calcolaPerimetro() < figure.get(i).calcolaPerimetro()) + if (conf.confronto(max, figure.get(i))) max = figure.get(i); - + return max; } - public FiguraGeometrica getPerimetroMin(){ - FiguraGeometrica min = figure.get(0); - - for (int i = 1; i < figure.size(); i++) - if (min.calcolaPerimetro() > figure.get(i).calcolaPerimetro()) - min = figure.get(i); - - return min; - } - public void print(PrintStream ps){ for(FiguraGeometrica fg: figure) fg.print(ps); diff --git a/src/FigureGeometriche/Test.java b/src/FigureGeometriche/Test.java index 5e8acaf..4e4267b 100644 --- a/src/FigureGeometriche/Test.java +++ b/src/FigureGeometriche/Test.java @@ -9,8 +9,8 @@ public class Test { PrintStream ps = System.out; ps.println("Figura con area maggiore"); - manager.getAreaMax().print(ps); + manager.getMax("area").print(ps); ps.println("Figura con perimetro minore"); - manager.getPerimetroMin().print(ps); + manager.getMin("perimetro").print(ps); } }