From ed63284acaab595bf51abea3b6cbe51266cccbfc Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 12:13:09 -0300 Subject: [PATCH 01/18] Commit 1 --- Customer.java | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ Movie.java | 26 +++++++++++++++++++++ Rental.java | 18 +++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 Customer.java create mode 100644 Movie.java create mode 100644 Rental.java diff --git a/Customer.java b/Customer.java new file mode 100644 index 00000000..9740c58b --- /dev/null +++ b/Customer.java @@ -0,0 +1,64 @@ +import java.util.Enumeration; +import java.util.Vector; + +public class Customer { + private String _name; + private Vector _rentals = new Vector(); + + public Customer (String name){ + _name = name; + } + + public void addRental(Rental arg) { + _rentals.addElement(arg); + } + + public String getName (){ + return _name; + } + + public String statement() { + double totalAmount = 0; + int frequentRenterPoints = 0; + Enumeration rentals = _rentals.elements(); + String result = "Rental Record for " + getName() + "\n"; + while (rentals.hasMoreElements()) { + double thisAmount = 0; + Rental each = (Rental) rentals.nextElement(); + + //determine amounts for each line + switch (each.getMovie().getPriceCode()) { + case Movie.REGULAR: + thisAmount += 2; + if (each.getDaysRented() > 2) + thisAmount += (each.getDaysRented() - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + thisAmount += each.getDaysRented() * 3; + break; + case Movie.CHILDRENS: + thisAmount += 1.5; + if (each.getDaysRented() > 3) + thisAmount += (each.getDaysRented() - 3) * 1.5; + break; + } + + // add frequent renter points + frequentRenterPoints ++; + // add bonus for a two day new release rental + if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && + each.getDaysRented() > 1) frequentRenterPoints ++; + + //show figures for this rental + result += "\t" + each.getMovie().getTitle()+ "\t" + + String.valueOf(thisAmount) + "\n"; + totalAmount += thisAmount; + + } + //add footer lines + result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; + result += "You earned " + String.valueOf(frequentRenterPoints) + + " frequent renter points"; + return result; + } +} \ No newline at end of file diff --git a/Movie.java b/Movie.java new file mode 100644 index 00000000..2c87131a --- /dev/null +++ b/Movie.java @@ -0,0 +1,26 @@ +public class Movie { + + public static final int CHILDRENS = 2; + public static final int REGULAR = 0; + public static final int NEW_RELEASE = 1; + + private String _title; + private int _priceCode; + + public Movie(String title, int priceCode) { + _title = title; + _priceCode = priceCode; + } + + public int getPriceCode() { + return _priceCode; + } + + public void setPriceCode(int arg) { + _priceCode = arg; + } + + public String getTitle (){ + return _title; + } +} \ No newline at end of file diff --git a/Rental.java b/Rental.java new file mode 100644 index 00000000..b1bba3e8 --- /dev/null +++ b/Rental.java @@ -0,0 +1,18 @@ +public class Rental { + + private Movie _movie; + private int _daysRented; + + public Rental(Movie movie, int daysRented) { + _movie = movie; + _daysRented = daysRented; + } + + public int getDaysRented() { + return _daysRented; + } + + public Movie getMovie() { + return _movie; + } +} \ No newline at end of file From cdcda73d8a8a846f1d782845e7639753e350e9ab Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 13:50:56 -0300 Subject: [PATCH 02/18] Commit 2 --- Customer.java | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/Customer.java b/Customer.java index 9740c58b..35ea56a2 100644 --- a/Customer.java +++ b/Customer.java @@ -26,22 +26,8 @@ public String statement() { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); - //determine amounts for each line - switch (each.getMovie().getPriceCode()) { - case Movie.REGULAR: - thisAmount += 2; - if (each.getDaysRented() > 2) - thisAmount += (each.getDaysRented() - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - thisAmount += each.getDaysRented() * 3; - break; - case Movie.CHILDRENS: - thisAmount += 1.5; - if (each.getDaysRented() > 3) - thisAmount += (each.getDaysRented() - 3) * 1.5; - break; - } + // AQUI ESTÁ A MUDANÇA: Chamamos o método novo em vez de fazer o switch aqui + thisAmount = amountFor(each); // add frequent renter points frequentRenterPoints ++; @@ -61,4 +47,25 @@ public String statement() { " frequent renter points"; return result; } + + // NOVO MÉTODO EXTRAÍDO + private double amountFor(Rental each) { + double thisAmount = 0; + switch (each.getMovie().getPriceCode()) { + case Movie.REGULAR: + thisAmount += 2; + if (each.getDaysRented() > 2) + thisAmount += (each.getDaysRented() - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + thisAmount += each.getDaysRented() * 3; + break; + case Movie.CHILDRENS: + thisAmount += 1.5; + if (each.getDaysRented() > 3) + thisAmount += (each.getDaysRented() - 3) * 1.5; + break; + } + return thisAmount; + } } \ No newline at end of file From ef441f4b94d4326fdd002320b2004cbf5280fa14 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 13:57:06 -0300 Subject: [PATCH 03/18] Commit 3 --- Customer.java | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/Customer.java b/Customer.java index 35ea56a2..9dcd9e5f 100644 --- a/Customer.java +++ b/Customer.java @@ -26,46 +26,40 @@ public String statement() { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); - // AQUI ESTÁ A MUDANÇA: Chamamos o método novo em vez de fazer o switch aqui thisAmount = amountFor(each); - // add frequent renter points frequentRenterPoints ++; - // add bonus for a two day new release rental if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) frequentRenterPoints ++; - //show figures for this rental result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(thisAmount) + "\n"; totalAmount += thisAmount; } - //add footer lines result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; } - // NOVO MÉTODO EXTRAÍDO - private double amountFor(Rental each) { - double thisAmount = 0; - switch (each.getMovie().getPriceCode()) { + private double amountFor(Rental aRental) { + double result = 0; + switch (aRental.getMovie().getPriceCode()) { case Movie.REGULAR: - thisAmount += 2; - if (each.getDaysRented() > 2) - thisAmount += (each.getDaysRented() - 2) * 1.5; + result += 2; + if (aRental.getDaysRented() > 2) + result += (aRental.getDaysRented() - 2) * 1.5; break; case Movie.NEW_RELEASE: - thisAmount += each.getDaysRented() * 3; + result += aRental.getDaysRented() * 3; break; case Movie.CHILDRENS: - thisAmount += 1.5; - if (each.getDaysRented() > 3) - thisAmount += (each.getDaysRented() - 3) * 1.5; + result += 1.5; + if (aRental.getDaysRented() > 3) + result += (aRental.getDaysRented() - 3) * 1.5; break; } - return thisAmount; + return result; } } \ No newline at end of file From f52791545d598ea5593acf1ad0a87939ef9f6d8d Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 13:59:10 -0300 Subject: [PATCH 04/18] Commit 4 --- Customer.java | 21 +-------------------- Rental.java | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Customer.java b/Customer.java index 9dcd9e5f..7d48cb81 100644 --- a/Customer.java +++ b/Customer.java @@ -26,7 +26,7 @@ public String statement() { double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); - thisAmount = amountFor(each); + thisAmount = each.getCharge(); frequentRenterPoints ++; if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && @@ -43,23 +43,4 @@ public String statement() { return result; } - private double amountFor(Rental aRental) { - double result = 0; - switch (aRental.getMovie().getPriceCode()) { - case Movie.REGULAR: - result += 2; - if (aRental.getDaysRented() > 2) - result += (aRental.getDaysRented() - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - result += aRental.getDaysRented() * 3; - break; - case Movie.CHILDRENS: - result += 1.5; - if (aRental.getDaysRented() > 3) - result += (aRental.getDaysRented() - 3) * 1.5; - break; - } - return result; - } } \ No newline at end of file diff --git a/Rental.java b/Rental.java index b1bba3e8..82a9ad04 100644 --- a/Rental.java +++ b/Rental.java @@ -15,4 +15,24 @@ public int getDaysRented() { public Movie getMovie() { return _movie; } + + public double getCharge() { + double result = 0; + switch (getMovie().getPriceCode()) { + case Movie.REGULAR: + result += 2; + if (getDaysRented() > 2) + result += (getDaysRented() - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + result += getDaysRented() * 3; + break; + case Movie.CHILDRENS: + result += 1.5; + if (getDaysRented() > 3) + result += (getDaysRented() - 3) * 1.5; + break; + } + return result; + } } \ No newline at end of file From 029558e53270914c0d7a3c4d4d672f77f1b8f2f0 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:00:58 -0300 Subject: [PATCH 05/18] Commit 5 --- Customer.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Customer.java b/Customer.java index 7d48cb81..176b4c79 100644 --- a/Customer.java +++ b/Customer.java @@ -23,24 +23,17 @@ public String statement() { Enumeration rentals = _rentals.elements(); String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { - double thisAmount = 0; Rental each = (Rental) rentals.nextElement(); - - thisAmount = each.getCharge(); - frequentRenterPoints ++; if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) frequentRenterPoints ++; - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(thisAmount) + "\n"; - totalAmount += thisAmount; - + String.valueOf(each.getCharge()) + "\n"; + totalAmount += each.getCharge(); } result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points"; return result; } - } \ No newline at end of file From f553796d5cda5017908c120a55263ae0b3a265f9 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:01:51 -0300 Subject: [PATCH 06/18] Commit 6 --- Customer.java | 4 +--- Rental.java | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Customer.java b/Customer.java index 176b4c79..3fcaf029 100644 --- a/Customer.java +++ b/Customer.java @@ -24,9 +24,7 @@ public String statement() { String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); - frequentRenterPoints ++; - if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && - each.getDaysRented() > 1) frequentRenterPoints ++; + frequentRenterPoints += each.getFrequentRenterPoints(); result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(each.getCharge()) + "\n"; totalAmount += each.getCharge(); diff --git a/Rental.java b/Rental.java index 82a9ad04..35305d35 100644 --- a/Rental.java +++ b/Rental.java @@ -35,4 +35,11 @@ public double getCharge() { } return result; } + + public int getFrequentRenterPoints() { + if ((getMovie().getPriceCode() == Movie.NEW_RELEASE) && getDaysRented() > 1) + return 2; + else + return 1; + } } \ No newline at end of file From 0e2e26e6771f621ad4ea2176df02f940aaa9d3f2 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:04:36 -0300 Subject: [PATCH 07/18] Commit 7 --- Customer.java | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/Customer.java b/Customer.java index 3fcaf029..2c341cb5 100644 --- a/Customer.java +++ b/Customer.java @@ -17,21 +17,37 @@ public String getName (){ return _name; } - public String statement() { - double totalAmount = 0; - int frequentRenterPoints = 0; - Enumeration rentals = _rentals.elements(); - String result = "Rental Record for " + getName() + "\n"; - while (rentals.hasMoreElements()) { - Rental each = (Rental) rentals.nextElement(); - frequentRenterPoints += each.getFrequentRenterPoints(); - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(each.getCharge()) + "\n"; - totalAmount += each.getCharge(); - } - result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; - result += "You earned " + String.valueOf(frequentRenterPoints) + - " frequent renter points"; - return result; + public String statement() { + Enumeration rentals = _rentals.elements(); + String result = "Rental Record for " + getName() + "\n"; + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += "\t" + each.getMovie().getTitle()+ "\t" + + String.valueOf(each.getCharge()) + "\n"; + } + result += "Amount owed is " + String.valueOf(getTotalCharge()) + "\n"; + result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) + + " frequent renter points"; + return result; + } + + private double getTotalCharge() { + double result = 0; + Enumeration rentals = _rentals.elements(); + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += each.getCharge(); + } + return result; + } + + private int getTotalFrequentRenterPoints(){ + int result = 0; + Enumeration rentals = _rentals.elements(); + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += each.getFrequentRenterPoints(); + } + return result; } } \ No newline at end of file From 5574ccf99bb3b08191141d07cf7a2ec6ef782c56 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:05:46 -0300 Subject: [PATCH 08/18] Commit 8 --- Customer.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Customer.java b/Customer.java index 2c341cb5..d8ae0885 100644 --- a/Customer.java +++ b/Customer.java @@ -30,6 +30,21 @@ public String statement() { " frequent renter points"; return result; } + + public String htmlStatement() { + Enumeration rentals = _rentals.elements(); + String result = "

Rentals for " + getName() + "

\n"; + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += each.getMovie().getTitle()+ ": " + + String.valueOf(each.getCharge()) + "
\n"; + } + result += "

You owe " + String.valueOf(getTotalCharge()) + "

\n"; + result += "On this rental you earned " + + String.valueOf(getTotalFrequentRenterPoints()) + + " frequent renter points

"; + return result; + } private double getTotalCharge() { double result = 0; From 0b341a1b4b0f556e148dbdd162fdb1ec78e31664 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:07:18 -0300 Subject: [PATCH 09/18] Commit 9 --- Movie.java | 20 ++++++++++++++++++++ Rental.java | 18 +----------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Movie.java b/Movie.java index 2c87131a..3828d001 100644 --- a/Movie.java +++ b/Movie.java @@ -23,4 +23,24 @@ public void setPriceCode(int arg) { public String getTitle (){ return _title; } + + public double getCharge(int daysRented) { + double result = 0; + switch (getPriceCode()) { + case Movie.REGULAR: + result += 2; + if (daysRented > 2) + result += (daysRented - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + result += daysRented * 3; + break; + case Movie.CHILDRENS: + result += 1.5; + if (daysRented > 3) + result += (daysRented - 3) * 1.5; + break; + } + return result; + } } \ No newline at end of file diff --git a/Rental.java b/Rental.java index 35305d35..d088c41d 100644 --- a/Rental.java +++ b/Rental.java @@ -17,23 +17,7 @@ public Movie getMovie() { } public double getCharge() { - double result = 0; - switch (getMovie().getPriceCode()) { - case Movie.REGULAR: - result += 2; - if (getDaysRented() > 2) - result += (getDaysRented() - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - result += getDaysRented() * 3; - break; - case Movie.CHILDRENS: - result += 1.5; - if (getDaysRented() > 3) - result += (getDaysRented() - 3) * 1.5; - break; - } - return result; + return _movie.getCharge(_daysRented); } public int getFrequentRenterPoints() { From 581acf160aa251c7b0fdc0d12cacd0f08320cd67 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:08:05 -0300 Subject: [PATCH 10/18] Commit 10 --- Movie.java | 7 +++++++ Rental.java | 5 +---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Movie.java b/Movie.java index 3828d001..b12e71fb 100644 --- a/Movie.java +++ b/Movie.java @@ -43,4 +43,11 @@ public double getCharge(int daysRented) { } return result; } + + public int getFrequentRenterPoints(int daysRented) { + if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) + return 2; + else + return 1; + } } \ No newline at end of file diff --git a/Rental.java b/Rental.java index d088c41d..0ebc157e 100644 --- a/Rental.java +++ b/Rental.java @@ -21,9 +21,6 @@ public double getCharge() { } public int getFrequentRenterPoints() { - if ((getMovie().getPriceCode() == Movie.NEW_RELEASE) && getDaysRented() > 1) - return 2; - else - return 1; + return _movie.getFrequentRenterPoints(_daysRented); } } \ No newline at end of file From ad843c70f03584337c1d1f4e0b8d6b09d2fe8bd7 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:14:01 -0300 Subject: [PATCH 11/18] Commit 11 --- ChildrensPrice.java | 5 +++++ Movie.java | 20 ++++++++++++++++---- NewReleasePrice.java | 5 +++++ Price.java | 3 +++ RegularPrice.java | 5 +++++ 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 ChildrensPrice.java create mode 100644 NewReleasePrice.java create mode 100644 Price.java create mode 100644 RegularPrice.java diff --git a/ChildrensPrice.java b/ChildrensPrice.java new file mode 100644 index 00000000..6ba2f8a2 --- /dev/null +++ b/ChildrensPrice.java @@ -0,0 +1,5 @@ +public class ChildrensPrice extends Price { + public int getPriceCode() { + return Movie.CHILDRENS; + } +} \ No newline at end of file diff --git a/Movie.java b/Movie.java index b12e71fb..9575cdc9 100644 --- a/Movie.java +++ b/Movie.java @@ -5,19 +5,31 @@ public class Movie { public static final int NEW_RELEASE = 1; private String _title; - private int _priceCode; + private Price _price; public Movie(String title, int priceCode) { _title = title; - _priceCode = priceCode; + setPriceCode(priceCode); } public int getPriceCode() { - return _priceCode; + return _price.getPriceCode(); } public void setPriceCode(int arg) { - _priceCode = arg; + switch (arg) { + case REGULAR: + _price = new RegularPrice(); + break; + case CHILDRENS: + _price = new ChildrensPrice(); + break; + case NEW_RELEASE: + _price = new NewReleasePrice(); + break; + default: + throw new IllegalArgumentException("Incorrect Price Code"); + } } public String getTitle (){ diff --git a/NewReleasePrice.java b/NewReleasePrice.java new file mode 100644 index 00000000..940b5192 --- /dev/null +++ b/NewReleasePrice.java @@ -0,0 +1,5 @@ +public class NewReleasePrice extends Price { + public int getPriceCode() { + return Movie.NEW_RELEASE; + } +} \ No newline at end of file diff --git a/Price.java b/Price.java new file mode 100644 index 00000000..7be46775 --- /dev/null +++ b/Price.java @@ -0,0 +1,3 @@ +public abstract class Price { + public abstract int getPriceCode(); +} \ No newline at end of file diff --git a/RegularPrice.java b/RegularPrice.java new file mode 100644 index 00000000..803eb378 --- /dev/null +++ b/RegularPrice.java @@ -0,0 +1,5 @@ +public class RegularPrice extends Price { + public int getPriceCode() { + return Movie.REGULAR; + } +} \ No newline at end of file From f58cecd6e31054333d552e6485f461e66736c828 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:15:16 -0300 Subject: [PATCH 12/18] Commit 12 --- Movie.java | 20 ++------------------ Price.java | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Movie.java b/Movie.java index 9575cdc9..8c43230f 100644 --- a/Movie.java +++ b/Movie.java @@ -37,24 +37,8 @@ public String getTitle (){ } public double getCharge(int daysRented) { - double result = 0; - switch (getPriceCode()) { - case Movie.REGULAR: - result += 2; - if (daysRented > 2) - result += (daysRented - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - result += daysRented * 3; - break; - case Movie.CHILDRENS: - result += 1.5; - if (daysRented > 3) - result += (daysRented - 3) * 1.5; - break; - } - return result; - } + return _price.getCharge(daysRented); + } public int getFrequentRenterPoints(int daysRented) { if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) diff --git a/Price.java b/Price.java index 7be46775..b95d77ae 100644 --- a/Price.java +++ b/Price.java @@ -1,3 +1,23 @@ public abstract class Price { public abstract int getPriceCode(); + + public double getCharge(int daysRented) { + double result = 0; + switch (getPriceCode()) { + case Movie.REGULAR: + result += 2; + if (daysRented > 2) + result += (daysRented - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + result += daysRented * 3; + break; + case Movie.CHILDRENS: + result += 1.5; + if (daysRented > 3) + result += (daysRented - 3) * 1.5; + break; + } + return result; + } } \ No newline at end of file From 4d14c0b26da71c6e606b407c7267d59d06f32ee8 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:17:19 -0300 Subject: [PATCH 13/18] Commit 13 --- ChildrensPrice.java | 7 +++++++ NewReleasePrice.java | 4 ++++ Price.java | 21 +-------------------- RegularPrice.java | 7 +++++++ 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/ChildrensPrice.java b/ChildrensPrice.java index 6ba2f8a2..92eb085a 100644 --- a/ChildrensPrice.java +++ b/ChildrensPrice.java @@ -2,4 +2,11 @@ public class ChildrensPrice extends Price { public int getPriceCode() { return Movie.CHILDRENS; } + + public double getCharge(int daysRented) { + double result = 1.5; + if (daysRented > 3) + result += (daysRented - 3) * 1.5; + return result; + } } \ No newline at end of file diff --git a/NewReleasePrice.java b/NewReleasePrice.java index 940b5192..be1645bf 100644 --- a/NewReleasePrice.java +++ b/NewReleasePrice.java @@ -2,4 +2,8 @@ public class NewReleasePrice extends Price { public int getPriceCode() { return Movie.NEW_RELEASE; } + + public double getCharge(int daysRented){ + return daysRented * 3; + } } \ No newline at end of file diff --git a/Price.java b/Price.java index b95d77ae..a4eee68a 100644 --- a/Price.java +++ b/Price.java @@ -1,23 +1,4 @@ public abstract class Price { public abstract int getPriceCode(); - - public double getCharge(int daysRented) { - double result = 0; - switch (getPriceCode()) { - case Movie.REGULAR: - result += 2; - if (daysRented > 2) - result += (daysRented - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - result += daysRented * 3; - break; - case Movie.CHILDRENS: - result += 1.5; - if (daysRented > 3) - result += (daysRented - 3) * 1.5; - break; - } - return result; - } + public abstract double getCharge(int daysRented); } \ No newline at end of file diff --git a/RegularPrice.java b/RegularPrice.java index 803eb378..217f2150 100644 --- a/RegularPrice.java +++ b/RegularPrice.java @@ -2,4 +2,11 @@ public class RegularPrice extends Price { public int getPriceCode() { return Movie.REGULAR; } + + public double getCharge(int daysRented) { + double result = 2; + if (daysRented > 2) + result += (daysRented - 2) * 1.5; + return result; + } } \ No newline at end of file From 7cca8349611052f19252ef4e61580ea4851de543 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:18:20 -0300 Subject: [PATCH 14/18] Commit 14 --- Movie.java | 5 +---- Price.java | 7 +++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Movie.java b/Movie.java index 8c43230f..a43e2d88 100644 --- a/Movie.java +++ b/Movie.java @@ -41,9 +41,6 @@ public double getCharge(int daysRented) { } public int getFrequentRenterPoints(int daysRented) { - if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) - return 2; - else - return 1; + return _price.getFrequentRenterPoints(daysRented); } } \ No newline at end of file diff --git a/Price.java b/Price.java index a4eee68a..69b83c8b 100644 --- a/Price.java +++ b/Price.java @@ -1,4 +1,11 @@ public abstract class Price { public abstract int getPriceCode(); public abstract double getCharge(int daysRented); + + public int getFrequentRenterPoints(int daysRented) { + if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) + return 2; + else + return 1; + } } \ No newline at end of file From 4878adcfaa870747a91763cd8d493a19c36dd675 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:19:13 -0300 Subject: [PATCH 15/18] Commit 15 --- NewReleasePrice.java | 4 ++++ Price.java | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/NewReleasePrice.java b/NewReleasePrice.java index be1645bf..c7589de6 100644 --- a/NewReleasePrice.java +++ b/NewReleasePrice.java @@ -6,4 +6,8 @@ public int getPriceCode() { public double getCharge(int daysRented){ return daysRented * 3; } + + public int getFrequentRenterPoints(int daysRented) { + return (daysRented > 1) ? 2: 1; + } } \ No newline at end of file diff --git a/Price.java b/Price.java index 69b83c8b..611aff54 100644 --- a/Price.java +++ b/Price.java @@ -3,9 +3,6 @@ public abstract class Price { public abstract double getCharge(int daysRented); public int getFrequentRenterPoints(int daysRented) { - if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) - return 2; - else - return 1; + return 1; } } \ No newline at end of file From 5aabeef18eefbc410b0ec7c9247e50053c3f98d5 Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:52:36 -0300 Subject: [PATCH 16/18] Commit 16 --- Customer.java | 33 ++++++++------------------------- HtmlStatement.java | 20 ++++++++++++++++++++ Statement.java | 2 ++ TextStatement.java | 19 +++++++++++++++++++ 4 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 HtmlStatement.java create mode 100644 Statement.java create mode 100644 TextStatement.java diff --git a/Customer.java b/Customer.java index d8ae0885..e2216573 100644 --- a/Customer.java +++ b/Customer.java @@ -16,37 +16,20 @@ public void addRental(Rental arg) { public String getName (){ return _name; } + + public Enumeration getRentals() { + return _rentals.elements(); + } public String statement() { - Enumeration rentals = _rentals.elements(); - String result = "Rental Record for " + getName() + "\n"; - while (rentals.hasMoreElements()) { - Rental each = (Rental) rentals.nextElement(); - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(each.getCharge()) + "\n"; - } - result += "Amount owed is " + String.valueOf(getTotalCharge()) + "\n"; - result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) + - " frequent renter points"; - return result; + return new TextStatement().value(this); } public String htmlStatement() { - Enumeration rentals = _rentals.elements(); - String result = "

Rentals for " + getName() + "

\n"; - while (rentals.hasMoreElements()) { - Rental each = (Rental) rentals.nextElement(); - result += each.getMovie().getTitle()+ ": " + - String.valueOf(each.getCharge()) + "
\n"; - } - result += "

You owe " + String.valueOf(getTotalCharge()) + "

\n"; - result += "On this rental you earned " + - String.valueOf(getTotalFrequentRenterPoints()) + - " frequent renter points

"; - return result; + return new HtmlStatement().value(this); } - private double getTotalCharge() { + public double getTotalCharge() { double result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements()) { @@ -56,7 +39,7 @@ private double getTotalCharge() { return result; } - private int getTotalFrequentRenterPoints(){ + public int getTotalFrequentRenterPoints(){ int result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements()) { diff --git a/HtmlStatement.java b/HtmlStatement.java new file mode 100644 index 00000000..e6d8bc62 --- /dev/null +++ b/HtmlStatement.java @@ -0,0 +1,20 @@ +import java.util.Enumeration; + +public class HtmlStatement extends Statement { + public String value(Customer aCustomer) { + Enumeration rentals = aCustomer.getRentals(); + String result = "

Rentals for " + aCustomer.getName() + + "

\n"; + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += each.getMovie().getTitle()+ ": " + + String.valueOf(each.getCharge()) + "
\n"; + } + result += "

You owe " + + String.valueOf(aCustomer.getTotalCharge()) + "

\n"; + result += "On this rental you earned " + + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + + " frequent renter points

"; + return result; + } +} \ No newline at end of file diff --git a/Statement.java b/Statement.java new file mode 100644 index 00000000..7e85dc72 --- /dev/null +++ b/Statement.java @@ -0,0 +1,2 @@ +public class Statement { +} \ No newline at end of file diff --git a/TextStatement.java b/TextStatement.java new file mode 100644 index 00000000..89ef9eb6 --- /dev/null +++ b/TextStatement.java @@ -0,0 +1,19 @@ +import java.util.Enumeration; + +public class TextStatement extends Statement { + public String value(Customer aCustomer) { + Enumeration rentals = aCustomer.getRentals(); + String result = "Rental Record for " + aCustomer.getName() + "\n"; + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += "\t" + each.getMovie().getTitle()+ "\t" + + String.valueOf(each.getCharge()) + "\n"; + } + result += "Amount owed is " + + String.valueOf(aCustomer.getTotalCharge()) + "\n"; + result += "You earned " + + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + + " frequent renter points"; + return result; + } +} \ No newline at end of file From 729747f3e18b41ecf399ec00f03974673a53049a Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:53:37 -0300 Subject: [PATCH 17/18] Commit 17 --- HtmlStatement.java | 28 ++++++++++++++++++++-------- TextStatement.java | 26 +++++++++++++++++++------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/HtmlStatement.java b/HtmlStatement.java index e6d8bc62..a91aec27 100644 --- a/HtmlStatement.java +++ b/HtmlStatement.java @@ -3,18 +3,30 @@ public class HtmlStatement extends Statement { public String value(Customer aCustomer) { Enumeration rentals = aCustomer.getRentals(); - String result = "

Rentals for " + aCustomer.getName() + - "

\n"; + String result = headerString(aCustomer); while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); - result += each.getMovie().getTitle()+ ": " + - String.valueOf(each.getCharge()) + "
\n"; + result += eachRentalString(each); } - result += "

You owe " + - String.valueOf(aCustomer.getTotalCharge()) + "

\n"; - result += "On this rental you earned " + + result += footerString(aCustomer); + return result; + } + + private String headerString(Customer aCustomer) { + return "

Rentals for " + aCustomer.getName() + + "

\n"; + } + + private String eachRentalString(Rental aRental) { + return aRental.getMovie().getTitle()+ ": " + + String.valueOf(aRental.getCharge()) + "
\n"; + } + + private String footerString(Customer aCustomer) { + return "

You owe " + + String.valueOf(aCustomer.getTotalCharge()) + "

\n" + + "On this rental you earned " + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + " frequent renter points

"; - return result; } } \ No newline at end of file diff --git a/TextStatement.java b/TextStatement.java index 89ef9eb6..071f7626 100644 --- a/TextStatement.java +++ b/TextStatement.java @@ -3,17 +3,29 @@ public class TextStatement extends Statement { public String value(Customer aCustomer) { Enumeration rentals = aCustomer.getRentals(); - String result = "Rental Record for " + aCustomer.getName() + "\n"; + String result = headerString(aCustomer); while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(each.getCharge()) + "\n"; + result += eachRentalString(each); } - result += "Amount owed is " + - String.valueOf(aCustomer.getTotalCharge()) + "\n"; - result += "You earned " + + result += footerString(aCustomer); + return result; + } + + private String headerString(Customer aCustomer) { + return "Rental Record for " + aCustomer.getName() + "\n"; + } + + private String eachRentalString(Rental aRental) { + return "\t" + aRental.getMovie().getTitle()+ "\t" + + String.valueOf(aRental.getCharge()) + "\n"; + } + + private String footerString(Customer aCustomer) { + return "Amount owed is " + + String.valueOf(aCustomer.getTotalCharge()) + "\n" + + "You earned " + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + " frequent renter points"; - return result; } } \ No newline at end of file From 0010aa1b2a7a65ee4dba5dc57c34ef4e836d82fa Mon Sep 17 00:00:00 2001 From: EduardoFontanela Date: Mon, 24 Nov 2025 14:55:03 -0300 Subject: [PATCH 18/18] Commit 18 --- HtmlStatement.java | 18 +++--------------- Statement.java | 19 ++++++++++++++++++- TextStatement.java | 18 +++--------------- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/HtmlStatement.java b/HtmlStatement.java index a91aec27..127971aa 100644 --- a/HtmlStatement.java +++ b/HtmlStatement.java @@ -1,28 +1,16 @@ -import java.util.Enumeration; - public class HtmlStatement extends Statement { - public String value(Customer aCustomer) { - Enumeration rentals = aCustomer.getRentals(); - String result = headerString(aCustomer); - while (rentals.hasMoreElements()) { - Rental each = (Rental) rentals.nextElement(); - result += eachRentalString(each); - } - result += footerString(aCustomer); - return result; - } - private String headerString(Customer aCustomer) { + protected String headerString(Customer aCustomer) { return "

Rentals for " + aCustomer.getName() + "

\n"; } - private String eachRentalString(Rental aRental) { + protected String eachRentalString(Rental aRental) { return aRental.getMovie().getTitle()+ ": " + String.valueOf(aRental.getCharge()) + "
\n"; } - private String footerString(Customer aCustomer) { + protected String footerString(Customer aCustomer) { return "

You owe " + String.valueOf(aCustomer.getTotalCharge()) + "

\n" + "On this rental you earned " + diff --git a/Statement.java b/Statement.java index 7e85dc72..95910d28 100644 --- a/Statement.java +++ b/Statement.java @@ -1,2 +1,19 @@ -public class Statement { +import java.util.Enumeration; + +public abstract class Statement { + + public String value(Customer aCustomer) { + Enumeration rentals = aCustomer.getRentals(); + String result = headerString(aCustomer); + while (rentals.hasMoreElements()) { + Rental each = (Rental) rentals.nextElement(); + result += eachRentalString(each); + } + result += footerString(aCustomer); + return result; + } + + protected abstract String headerString(Customer aCustomer); + protected abstract String eachRentalString(Rental aRental); + protected abstract String footerString(Customer aCustomer); } \ No newline at end of file diff --git a/TextStatement.java b/TextStatement.java index 071f7626..1e7439fb 100644 --- a/TextStatement.java +++ b/TextStatement.java @@ -1,27 +1,15 @@ -import java.util.Enumeration; - public class TextStatement extends Statement { - public String value(Customer aCustomer) { - Enumeration rentals = aCustomer.getRentals(); - String result = headerString(aCustomer); - while (rentals.hasMoreElements()) { - Rental each = (Rental) rentals.nextElement(); - result += eachRentalString(each); - } - result += footerString(aCustomer); - return result; - } - private String headerString(Customer aCustomer) { + protected String headerString(Customer aCustomer) { return "Rental Record for " + aCustomer.getName() + "\n"; } - private String eachRentalString(Rental aRental) { + protected String eachRentalString(Rental aRental) { return "\t" + aRental.getMovie().getTitle()+ "\t" + String.valueOf(aRental.getCharge()) + "\n"; } - private String footerString(Customer aCustomer) { + protected String footerString(Customer aCustomer) { return "Amount owed is " + String.valueOf(aCustomer.getTotalCharge()) + "\n" + "You earned " +