esempi capitolo 12

This commit is contained in:
Fabio Scotto di Santolo
2018-10-11 21:22:13 +02:00
parent 94009e9901
commit 2a92059d31
11 changed files with 170 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
package com.oracle.java8.professional.oop;
public interface Danneggiabile {
void riceviColpo(double intensita);
boolean isDistrutto();
}

View File

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

View File

@@ -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();
}
}

View File

@@ -0,0 +1,10 @@
package com.oracle.java8.professional.oop;
public interface Localizzabile {
double getX();
double getY();
double getZ();
}

View File

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

View File

@@ -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();
}
}

View File

@@ -0,0 +1,7 @@
package com.oracle.java8.professional.oop;
public class Singleton1 {
public static final Singleton1 instance = new Singleton1();
private Singleton1() {}
}

View File

@@ -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() {}
}

View File

@@ -0,0 +1,5 @@
package com.oracle.java8.professional.oop;
public enum Singleton3 {
INSTANCE;
}

View File

@@ -0,0 +1,6 @@
package com.oracle.java8.professional.oop;
public interface Urticante {
double getDanno();
}

View File

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