From 2a92059d31575b790c65b1696b80c1c13f270c7b Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Thu, 11 Oct 2018 21:22:13 +0200 Subject: [PATCH] esempi capitolo 12 --- .../java8/professional/oop/Danneggiabile.java | 8 ++++ .../oop/DanneggiabileComponent.java | 19 ++++++++ .../oracle/java8/professional/oop/Figura.java | 13 ++++++ .../java8/professional/oop/Localizzabile.java | 10 ++++ .../oop/LocalizzabileComponent.java | 28 +++++++++++ .../oracle/java8/professional/oop/Mina.java | 46 +++++++++++++++++++ .../java8/professional/oop/Singleton1.java | 7 +++ .../java8/professional/oop/Singleton2.java | 14 ++++++ .../java8/professional/oop/Singleton3.java | 5 ++ .../java8/professional/oop/Urticante.java | 6 +++ .../professional/oop/UrticanteComponent.java | 14 ++++++ 11 files changed, 170 insertions(+) create mode 100644 src/com/oracle/java8/professional/oop/Danneggiabile.java create mode 100644 src/com/oracle/java8/professional/oop/DanneggiabileComponent.java create mode 100644 src/com/oracle/java8/professional/oop/Figura.java create mode 100644 src/com/oracle/java8/professional/oop/Localizzabile.java create mode 100644 src/com/oracle/java8/professional/oop/LocalizzabileComponent.java create mode 100644 src/com/oracle/java8/professional/oop/Mina.java create mode 100644 src/com/oracle/java8/professional/oop/Singleton1.java create mode 100644 src/com/oracle/java8/professional/oop/Singleton2.java create mode 100644 src/com/oracle/java8/professional/oop/Singleton3.java create mode 100644 src/com/oracle/java8/professional/oop/Urticante.java create mode 100644 src/com/oracle/java8/professional/oop/UrticanteComponent.java diff --git a/src/com/oracle/java8/professional/oop/Danneggiabile.java b/src/com/oracle/java8/professional/oop/Danneggiabile.java new file mode 100644 index 0000000..cfd5ec4 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Danneggiabile.java @@ -0,0 +1,8 @@ +package com.oracle.java8.professional.oop; + +public interface Danneggiabile { + + void riceviColpo(double intensita); + + boolean isDistrutto(); +} diff --git a/src/com/oracle/java8/professional/oop/DanneggiabileComponent.java b/src/com/oracle/java8/professional/oop/DanneggiabileComponent.java new file mode 100644 index 0000000..9ab288c --- /dev/null +++ b/src/com/oracle/java8/professional/oop/DanneggiabileComponent.java @@ -0,0 +1,19 @@ +package com.oracle.java8.professional.oop; + +public class DanneggiabileComponent implements Danneggiabile { + private double vita; + + public DanneggiabileComponent(double vita) { + this.vita = vita; + } + + @Override + public void riceviColpo(double intensita) { + this.vita -= intensita; + } + + @Override + public boolean isDistrutto() { + return this.vita <= 0; + } +} diff --git a/src/com/oracle/java8/professional/oop/Figura.java b/src/com/oracle/java8/professional/oop/Figura.java new file mode 100644 index 0000000..3f84afd --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Figura.java @@ -0,0 +1,13 @@ +package com.oracle.java8.professional.oop; + +public abstract class Figura { + private double x, y; + + public abstract void disegna(); + + public void sposta(double deltaX, double deltaY) { + x += deltaX; + y += deltaY; + disegna(); + } +} diff --git a/src/com/oracle/java8/professional/oop/Localizzabile.java b/src/com/oracle/java8/professional/oop/Localizzabile.java new file mode 100644 index 0000000..e4002e6 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Localizzabile.java @@ -0,0 +1,10 @@ +package com.oracle.java8.professional.oop; + +public interface Localizzabile { + + double getX(); + + double getY(); + + double getZ(); +} diff --git a/src/com/oracle/java8/professional/oop/LocalizzabileComponent.java b/src/com/oracle/java8/professional/oop/LocalizzabileComponent.java new file mode 100644 index 0000000..b1ba571 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/LocalizzabileComponent.java @@ -0,0 +1,28 @@ +package com.oracle.java8.professional.oop; + +public class LocalizzabileComponent implements Localizzabile { + private double x; + private double y; + private double z; + + public LocalizzabileComponent(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public double getX() { + return this.x; + } + + @Override + public double getY() { + return this.y; + } + + @Override + public double getZ() { + return this.z; + } +} diff --git a/src/com/oracle/java8/professional/oop/Mina.java b/src/com/oracle/java8/professional/oop/Mina.java new file mode 100644 index 0000000..0393091 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Mina.java @@ -0,0 +1,46 @@ +package com.oracle.java8.professional.oop; + +public class Mina implements Localizzabile, Danneggiabile, Urticante { + private static final double DANNO = 20; + private static final double VITA = 50; + + private final Danneggiabile dh; + private final Urticante uh; + private final Localizzabile lh; + + public Mina(double x, double y, double z) { + this.dh = new DanneggiabileComponent(VITA); + this.uh = new UrticanteComponent(DANNO); + this.lh = new LocalizzabileComponent(x, y, z); + } + + @Override + public void riceviColpo(double intensita) { + dh.riceviColpo(intensita); + } + + @Override + public boolean isDistrutto() { + return dh.isDistrutto(); + } + + @Override + public double getX() { + return lh.getX(); + } + + @Override + public double getY() { + return lh.getY(); + } + + @Override + public double getZ() { + return lh.getZ(); + } + + @Override + public double getDanno() { + return uh.getDanno(); + } +} diff --git a/src/com/oracle/java8/professional/oop/Singleton1.java b/src/com/oracle/java8/professional/oop/Singleton1.java new file mode 100644 index 0000000..f8e027c --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Singleton1.java @@ -0,0 +1,7 @@ +package com.oracle.java8.professional.oop; + +public class Singleton1 { + public static final Singleton1 instance = new Singleton1(); + + private Singleton1() {} +} diff --git a/src/com/oracle/java8/professional/oop/Singleton2.java b/src/com/oracle/java8/professional/oop/Singleton2.java new file mode 100644 index 0000000..373e07b --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Singleton2.java @@ -0,0 +1,14 @@ +package com.oracle.java8.professional.oop; + +public class Singleton2 { + private static Singleton2 instance; + + public static synchronized Singleton2 getInstance() { + if (instance == null) { + instance = new Singleton2(); + } + return instance; + } + + private Singleton2() {} +} diff --git a/src/com/oracle/java8/professional/oop/Singleton3.java b/src/com/oracle/java8/professional/oop/Singleton3.java new file mode 100644 index 0000000..993f2f3 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Singleton3.java @@ -0,0 +1,5 @@ +package com.oracle.java8.professional.oop; + +public enum Singleton3 { + INSTANCE; +} diff --git a/src/com/oracle/java8/professional/oop/Urticante.java b/src/com/oracle/java8/professional/oop/Urticante.java new file mode 100644 index 0000000..92dc4b0 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/Urticante.java @@ -0,0 +1,6 @@ +package com.oracle.java8.professional.oop; + +public interface Urticante { + + double getDanno(); +} diff --git a/src/com/oracle/java8/professional/oop/UrticanteComponent.java b/src/com/oracle/java8/professional/oop/UrticanteComponent.java new file mode 100644 index 0000000..71fb9d6 --- /dev/null +++ b/src/com/oracle/java8/professional/oop/UrticanteComponent.java @@ -0,0 +1,14 @@ +package com.oracle.java8.professional.oop; + +public class UrticanteComponent implements Urticante { + private double danno; + + public UrticanteComponent(double danno) { + this.danno = danno; + } + + @Override + public double getDanno() { + return this.danno; + } +}