From 8a99093420488521138c3c119e3fb29141c755c1 Mon Sep 17 00:00:00 2001 From: KeithTatsu Date: Mon, 3 Jun 2019 16:17:53 -0300 Subject: [PATCH] =?UTF-8?q?Agregada=20posible=20soluci=C3=B3n=20para=20que?= =?UTF-8?q?=20picoFino=20s=C3=B3lo=20se=20desgaste=20contra=20diamante?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fiuba/algo3/tp2/herramienta/Hacha.java | 25 +++++++++++++++++++ .../algo3/tp2/herramienta/Herramienta.java | 17 ++++++++++--- src/fiuba/algo3/tp2/herramienta/Pico.java | 25 +++++++++++++++++++ src/fiuba/algo3/tp2/herramienta/PicoFino.java | 24 +++++++++++++----- src/fiuba/algo3/tp2/material/Diamante.java | 6 +++++ src/fiuba/algo3/tp2/material/Madera.java | 6 +++++ src/fiuba/algo3/tp2/material/Material.java | 4 +++ src/fiuba/algo3/tp2/material/Metal.java | 6 +++++ src/fiuba/algo3/tp2/material/Piedra.java | 6 +++++ .../algo3/tp2/herramienta/PicoFinoTest.java | 3 +-- 10 files changed, 110 insertions(+), 12 deletions(-) diff --git a/src/fiuba/algo3/tp2/herramienta/Hacha.java b/src/fiuba/algo3/tp2/herramienta/Hacha.java index e48d848..a867550 100644 --- a/src/fiuba/algo3/tp2/herramienta/Hacha.java +++ b/src/fiuba/algo3/tp2/herramienta/Hacha.java @@ -2,10 +2,35 @@ import fiuba.algo3.tp2.herramienta.durabilidad.Durabilidad; import fiuba.algo3.tp2.herramienta.golpe.Golpe; +import fiuba.algo3.tp2.material.*; public class Hacha extends Herramienta { public Hacha(Durabilidad durabilidad, Golpe golpe) { super(durabilidad, golpe); } + + public void reducirDurabilidad(Madera madera) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(madera); + } + + public void reducirDurabilidad(Piedra piedra) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(piedra); + } + + public void reducirDurabilidad(Metal metal) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(metal); + } + + public void reducirDurabilidad(Diamante diamante) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(diamante); + } } diff --git a/src/fiuba/algo3/tp2/herramienta/Herramienta.java b/src/fiuba/algo3/tp2/herramienta/Herramienta.java index 3b77be0..6ad43b1 100644 --- a/src/fiuba/algo3/tp2/herramienta/Herramienta.java +++ b/src/fiuba/algo3/tp2/herramienta/Herramienta.java @@ -1,7 +1,6 @@ package fiuba.algo3.tp2.herramienta; -import fiuba.algo3.tp2.material.Material; -import fiuba.algo3.tp2.material.MaterialDestruidoNoSePuedeGolpearException; +import fiuba.algo3.tp2.material.*; import fiuba.algo3.tp2.herramienta.durabilidad.Durabilidad; import fiuba.algo3.tp2.herramienta.golpe.Golpe; @@ -24,11 +23,21 @@ public BigDecimal getDurabilidad() { public void golpear(Material material) throws MaterialDestruidoNoSePuedeGolpearException { - durabilidad.reducir(); - golpe.golpear(material); + // durabilidad.reducir(); + // golpe.golpear(material); + + material.reducir(this); } public BigDecimal getFuerza() { return golpe.getFuerza(); } + + public abstract void reducirDurabilidad(Madera madera) throws MaterialDestruidoNoSePuedeGolpearException; + + public abstract void reducirDurabilidad(Piedra piedra) throws MaterialDestruidoNoSePuedeGolpearException; + + public abstract void reducirDurabilidad(Metal metal) throws MaterialDestruidoNoSePuedeGolpearException; + + public abstract void reducirDurabilidad(Diamante diamante) throws MaterialDestruidoNoSePuedeGolpearException; } diff --git a/src/fiuba/algo3/tp2/herramienta/Pico.java b/src/fiuba/algo3/tp2/herramienta/Pico.java index 9c3d49d..76c2564 100644 --- a/src/fiuba/algo3/tp2/herramienta/Pico.java +++ b/src/fiuba/algo3/tp2/herramienta/Pico.java @@ -2,10 +2,35 @@ import fiuba.algo3.tp2.herramienta.durabilidad.Durabilidad; import fiuba.algo3.tp2.herramienta.golpe.Golpe; +import fiuba.algo3.tp2.material.*; public class Pico extends Herramienta { public Pico(Durabilidad durabilidad, Golpe golpe) { super(durabilidad, golpe); } + + public void reducirDurabilidad(Madera madera) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(madera); + } + + public void reducirDurabilidad(Piedra piedra) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(piedra); + } + + public void reducirDurabilidad(Metal metal) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(metal); + } + + public void reducirDurabilidad(Diamante diamante) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(diamante); + } } diff --git a/src/fiuba/algo3/tp2/herramienta/PicoFino.java b/src/fiuba/algo3/tp2/herramienta/PicoFino.java index 21104e9..a57af50 100644 --- a/src/fiuba/algo3/tp2/herramienta/PicoFino.java +++ b/src/fiuba/algo3/tp2/herramienta/PicoFino.java @@ -10,12 +10,24 @@ public PicoFino(Durabilidad durabilidad, Golpe golpe) { super(durabilidad, golpe); } - @Override - public void golpear(Material material) - throws MaterialDestruidoNoSePuedeGolpearException { + public void reducirDurabilidad(Madera madera) throws MaterialDestruidoNoSePuedeGolpearException { - //durabilidad.reducir(); - //Falta el caso de diamante en el que si se reduce la durabilidad. - golpe.golpear(material); + golpe.golpear(madera); + } + + public void reducirDurabilidad(Piedra piedra) throws MaterialDestruidoNoSePuedeGolpearException { + + golpe.golpear(piedra); + } + + public void reducirDurabilidad(Metal metal) throws MaterialDestruidoNoSePuedeGolpearException { + + golpe.golpear(metal); + } + + public void reducirDurabilidad(Diamante diamante) throws MaterialDestruidoNoSePuedeGolpearException { + + durabilidad.reducir(); + golpe.golpear(diamante); } } diff --git a/src/fiuba/algo3/tp2/material/Diamante.java b/src/fiuba/algo3/tp2/material/Diamante.java index df62dbb..b3fd348 100644 --- a/src/fiuba/algo3/tp2/material/Diamante.java +++ b/src/fiuba/algo3/tp2/material/Diamante.java @@ -1,5 +1,6 @@ package fiuba.algo3.tp2.material; +import fiuba.algo3.tp2.herramienta.Herramienta; import fiuba.algo3.tp2.herramienta.golpe.Golpe; import java.math.BigDecimal; @@ -13,4 +14,9 @@ public Diamante() { public void golpearCon(Golpe golpe) throws MaterialDestruidoNoSePuedeGolpearException { golpe.golpear(this); } + + public void reducir(Herramienta herramienta) throws MaterialDestruidoNoSePuedeGolpearException { + + herramienta.reducirDurabilidad(this); + } } diff --git a/src/fiuba/algo3/tp2/material/Madera.java b/src/fiuba/algo3/tp2/material/Madera.java index 8eb9827..c229b28 100644 --- a/src/fiuba/algo3/tp2/material/Madera.java +++ b/src/fiuba/algo3/tp2/material/Madera.java @@ -1,5 +1,6 @@ package fiuba.algo3.tp2.material; +import fiuba.algo3.tp2.herramienta.Herramienta; import fiuba.algo3.tp2.herramienta.golpe.Golpe; import java.math.BigDecimal; @@ -15,4 +16,9 @@ public Madera() { public void golpearCon(Golpe golpe) throws MaterialDestruidoNoSePuedeGolpearException { golpe.golpear(this); } + + public void reducir(Herramienta herramienta) throws MaterialDestruidoNoSePuedeGolpearException { + + herramienta.reducirDurabilidad(this); + } } diff --git a/src/fiuba/algo3/tp2/material/Material.java b/src/fiuba/algo3/tp2/material/Material.java index dfed0e2..c6f50f6 100644 --- a/src/fiuba/algo3/tp2/material/Material.java +++ b/src/fiuba/algo3/tp2/material/Material.java @@ -1,5 +1,7 @@ package fiuba.algo3.tp2.material; +import fiuba.algo3.tp2.herramienta.Herramienta; + import java.math.BigDecimal; public abstract class Material implements Golpeable { @@ -28,4 +30,6 @@ public void reducirDurabilidad(BigDecimal danio) throws MaterialDestruidoNoSePue durabilidad = new BigDecimal(0); } } + + public abstract void reducir(Herramienta herramienta) throws MaterialDestruidoNoSePuedeGolpearException; } diff --git a/src/fiuba/algo3/tp2/material/Metal.java b/src/fiuba/algo3/tp2/material/Metal.java index ab24257..4c1210e 100644 --- a/src/fiuba/algo3/tp2/material/Metal.java +++ b/src/fiuba/algo3/tp2/material/Metal.java @@ -1,5 +1,6 @@ package fiuba.algo3.tp2.material; +import fiuba.algo3.tp2.herramienta.Herramienta; import fiuba.algo3.tp2.herramienta.golpe.Golpe; import java.math.BigDecimal; @@ -13,4 +14,9 @@ public Metal() { public void golpearCon(Golpe golpe) throws MaterialDestruidoNoSePuedeGolpearException { golpe.golpear(this); } + + public void reducir(Herramienta herramienta) throws MaterialDestruidoNoSePuedeGolpearException { + + herramienta.reducirDurabilidad(this); + } } diff --git a/src/fiuba/algo3/tp2/material/Piedra.java b/src/fiuba/algo3/tp2/material/Piedra.java index 633de17..cdc1214 100644 --- a/src/fiuba/algo3/tp2/material/Piedra.java +++ b/src/fiuba/algo3/tp2/material/Piedra.java @@ -1,5 +1,6 @@ package fiuba.algo3.tp2.material; +import fiuba.algo3.tp2.herramienta.Herramienta; import fiuba.algo3.tp2.herramienta.golpe.Golpe; import java.math.BigDecimal; @@ -13,4 +14,9 @@ public Piedra() { public void golpearCon(Golpe golpe) throws MaterialDestruidoNoSePuedeGolpearException { golpe.golpear(this); } + + public void reducir(Herramienta herramienta) throws MaterialDestruidoNoSePuedeGolpearException { + + herramienta.reducirDurabilidad(this); + } } diff --git a/test/fiuba/algo3/tp2/herramienta/PicoFinoTest.java b/test/fiuba/algo3/tp2/herramienta/PicoFinoTest.java index c210620..e6b70cf 100644 --- a/test/fiuba/algo3/tp2/herramienta/PicoFinoTest.java +++ b/test/fiuba/algo3/tp2/herramienta/PicoFinoTest.java @@ -66,7 +66,7 @@ public void dadoUnPicoFino_CuandoSeUsaUnaVezContraMetal_NoDeberiaDismiuirLaDurab assertEquals(durabilidad, picoFino.getDurabilidad()); } -/* + @Test public void dadoUnPicoFino_CuandoSeUsaUnaVezContraDiamante_DeberiaDisminuirLaDurabilidadEn100() throws Exception{ @@ -79,5 +79,4 @@ public void dadoUnPicoFino_CuandoSeUsaUnaVezContraDiamante_DeberiaDisminuirLaDur assertEquals(durabilidad.subtract(new BigDecimal(100)), picoFino.getDurabilidad()); } - */ }