From e97cf12d15a5c76277eff1dd21fd24223e9737c3 Mon Sep 17 00:00:00 2001 From: brianblessou Date: Sun, 12 May 2019 16:44:36 +0200 Subject: [PATCH] Add Class inheritance and refactoring of the code --- .../main/java/com/gildedrose/AgedBrie.java | 22 ++--------- .../java/com/gildedrose/BackStageItem.java | 26 ++----------- .../java/com/gildedrose/ConjuredItem.java | 14 +++++++ .../java/com/gildedrose/GildedRoseItem.java | 4 ++ .../main/java/com/gildedrose/RegularItem.java | 37 +++++++++++++------ 5 files changed, 50 insertions(+), 53 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/ConjuredItem.java diff --git a/Java/src/main/java/com/gildedrose/AgedBrie.java b/Java/src/main/java/com/gildedrose/AgedBrie.java index 89de2fd5..7a11eadd 100644 --- a/Java/src/main/java/com/gildedrose/AgedBrie.java +++ b/Java/src/main/java/com/gildedrose/AgedBrie.java @@ -1,32 +1,16 @@ package com.gildedrose; -public class AgedBrie { - private Item item; +public class AgedBrie extends RegularItem { public AgedBrie(Item item) { this.item=item; } public void updateQuaility() { - increaseQuality(); if (itemHasExpired()) { - increaseQuality(); - } - } - - private void increaseQuality() { - if (item.quality < 50) { - item.quality += 1; - } - } - - private boolean itemHasExpired() { - boolean condition; - if (item.sellIn < 0) { - condition = true; + increaseQualityBy(2); } else { - condition = false; + increaseQualityBy(1); } - return condition; } } diff --git a/Java/src/main/java/com/gildedrose/BackStageItem.java b/Java/src/main/java/com/gildedrose/BackStageItem.java index 6a6e6e27..e8fb4a02 100644 --- a/Java/src/main/java/com/gildedrose/BackStageItem.java +++ b/Java/src/main/java/com/gildedrose/BackStageItem.java @@ -1,38 +1,20 @@ package com.gildedrose; -public class BackStageItem { - private Item item; - +public class BackStageItem extends RegularItem{ public BackStageItem(Item item) { this.item=item; } public void update() { - increaseQuality(); + increaseQualityBy(1); if (item.sellIn < 10) { - increaseQuality(); + increaseQualityBy(1); } if (item.sellIn < 5) { - increaseQuality(); + increaseQualityBy(1); } if (itemHasExpired()) { item.quality -= item.quality; } } - - private void increaseQuality() { - if (item.quality < 50) { - item.quality += 1; - } - } - - private boolean itemHasExpired() { - boolean condition; - if (item.sellIn < 0) { - condition = true; - } else { - condition = false; - } - return condition; - } } diff --git a/Java/src/main/java/com/gildedrose/ConjuredItem.java b/Java/src/main/java/com/gildedrose/ConjuredItem.java new file mode 100644 index 00000000..bd9c27d9 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/ConjuredItem.java @@ -0,0 +1,14 @@ +package com.gildedrose; + +public class ConjuredItem extends RegularItem { + public ConjuredItem(Item item) { + this.item=item; + } + + public void updateQuality() { + decreaseQualityBy(1); + if (itemHasExpired()) { + decreaseQualityBy(1); + } + } +} diff --git a/Java/src/main/java/com/gildedrose/GildedRoseItem.java b/Java/src/main/java/com/gildedrose/GildedRoseItem.java index f3489042..87b77e4c 100644 --- a/Java/src/main/java/com/gildedrose/GildedRoseItem.java +++ b/Java/src/main/java/com/gildedrose/GildedRoseItem.java @@ -5,6 +5,7 @@ class GildedRoseItem { public static final String SULFURA = "Sulfuras, Hand of Ragnaros"; public static final String AGED_BRIE = "Aged Brie"; public static final String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert"; + public static final String CONJURED = "Conjured Mana Cake"; public GildedRoseItem(Item[] items) { @@ -22,6 +23,9 @@ class GildedRoseItem { } else if (item.name.equals(BACKSTAGE)) { BackStageItem backStageItem = new BackStageItem(item); backStageItem.update(); + } else if (item.name.equals(CONJURED)) { + ConjuredItem conjuredItem = new ConjuredItem(item); + conjuredItem.updateQuality(); } else { RegularItem regularItem = new RegularItem(item); regularItem.updateQuality(); diff --git a/Java/src/main/java/com/gildedrose/RegularItem.java b/Java/src/main/java/com/gildedrose/RegularItem.java index 6976fd38..9bc06654 100644 --- a/Java/src/main/java/com/gildedrose/RegularItem.java +++ b/Java/src/main/java/com/gildedrose/RegularItem.java @@ -1,21 +1,25 @@ package com.gildedrose; public class RegularItem { - private Item item; + public Item item; + + public RegularItem() { + + } public RegularItem(Item item) { this.item = item; } public void updateQuality() { - if (itemHasExpired(item)) { - decreaseQualityTwice(); + if (itemHasExpired()) { + decreaseQualityBy(2); } else { - decreaseQuality(); + decreaseQualityBy(1); } } - private boolean itemHasExpired(Item item) { + protected boolean itemHasExpired() { boolean condition; if (item.sellIn < 0) { condition = true; @@ -25,16 +29,25 @@ public class RegularItem { return condition; } - - private void decreaseQualityTwice() { - decreaseQuality(); - decreaseQuality(); + protected void increaseQualityBy(int factor) { + item.quality += factor; + qualityOfAnItemIsNotMoreThan(50); } - private void decreaseQuality() { - if (item.quality > 0) { - item.quality -= 1; + protected void decreaseQualityBy(int factor) { + item.quality -= factor; + qualityOfAnItemIsNeverNegative(); + } + + private void qualityOfAnItemIsNotMoreThan(int limit) { + if (item.quality > limit) { + item.quality = limit; } } + private void qualityOfAnItemIsNeverNegative() { + if (item.quality < 0) { + item.quality = 0; + } + } }