From 45a29fdaf728e7e2bb4ec5efd223ba0233fe888a Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:14:45 -0300 Subject: [PATCH 01/18] Commit 1 --- Customer.java | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ Movie.java | 25 ++++++++++++++++++++ Rental.java | 17 ++++++++++++++ 3 files changed, 106 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..ebe113d4 --- /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..a9c051ad --- /dev/null +++ b/Movie.java @@ -0,0 +1,25 @@ +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..9a39fc92 --- /dev/null +++ b/Rental.java @@ -0,0 +1,17 @@ +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 7b65ef4f49e7613d8dbb93a19a9b55f011d5784f Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:22:38 -0300 Subject: [PATCH 02/18] Commit 2 --- Customer.java | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/Customer.java b/Customer.java index ebe113d4..a2bdfdf3 100644 --- a/Customer.java +++ b/Customer.java @@ -26,39 +26,41 @@ 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; - } + // O switch saiu daqui e virou uma chamada de método + 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; } + + // 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 b1c10be2cfa3ab1b52ce6e5eb1db56ba72993986 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:23:06 -0300 Subject: [PATCH 03/18] Commit 3 --- Customer.java | 71 +++++++++------------------------------------------ 1 file changed, 12 insertions(+), 59 deletions(-) diff --git a/Customer.java b/Customer.java index a2bdfdf3..4134b4e3 100644 --- a/Customer.java +++ b/Customer.java @@ -1,66 +1,19 @@ -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(); - - // O switch saiu daqui e virou uma chamada de método - thisAmount = amountFor(each); - - frequentRenterPoints ++; - if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && - each.getDaysRented() > 1) frequentRenterPoints ++; - - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(thisAmount) + "\n"; - totalAmount += thisAmount; - } - result += "Amount owed is " + String.valueOf(totalAmount) + "\n"; - result += "You earned " + String.valueOf(frequentRenterPoints) + - " frequent renter points"; - return result; - } - - // Método extraído - private double amountFor(Rental each) { - double thisAmount = 0; - switch (each.getMovie().getPriceCode()) { +private double amountFor(Rental aRental) { // Nome alterado de 'each' para 'aRental' + double result = 0; // Alterado de 'thisAmount' para 'result' + 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; - } -} \ No newline at end of file + return result; + } \ No newline at end of file From c9c63680c2bb244c034cbc6418f2cfe706219da2 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:26:30 -0300 Subject: [PATCH 04/18] Commit 4 --- Customer.java | 55 +++++++++++++++++++++++++++++++++------------------ Rental.java | 45 ++++++++++++++++++++++++++++------------- 2 files changed, 67 insertions(+), 33 deletions(-) diff --git a/Customer.java b/Customer.java index 4134b4e3..a4e74b54 100644 --- a/Customer.java +++ b/Customer.java @@ -1,19 +1,36 @@ -private double amountFor(Rental aRental) { // Nome alterado de 'each' para 'aRental' - double result = 0; // Alterado de 'thisAmount' para 'result' - 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 +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(); + 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; + } + 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/Rental.java b/Rental.java index 9a39fc92..1a85a62c 100644 --- a/Rental.java +++ b/Rental.java @@ -1,17 +1,34 @@ public class Rental { - private Movie _movie; - private int _daysRented; + 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; - } + public Rental(Movie movie, int daysRented) { + _movie = movie; + _daysRented = daysRented; + } + public int getDaysRented() { + return _daysRented; + } + 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 13dee802931c8339640998a34419b1be0a1b0e77 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:27:12 -0300 Subject: [PATCH 05/18] Commit 5 --- Customer.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Customer.java b/Customer.java index a4e74b54..a1a62fc7 100644 --- a/Customer.java +++ b/Customer.java @@ -20,14 +20,12 @@ 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; + 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"; From 7db729bf95086c5da16ea3944e3e033fc5b9ce6b Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:27:43 -0300 Subject: [PATCH 06/18] Commit 6 --- Customer.java | 4 +--- Rental.java | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Customer.java b/Customer.java index a1a62fc7..a49cfb3a 100644 --- a/Customer.java +++ b/Customer.java @@ -21,9 +21,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 1a85a62c..b1979434 100644 --- a/Rental.java +++ b/Rental.java @@ -31,4 +31,9 @@ public double getCharge() { } return result; } + public int getFrequentRenterPoints() { + if ((getMovie().getPriceCode() == Movie.NEW_RELEASE) && getDaysRented() > 1) + return 2; + return 1; + } } \ No newline at end of file From 70b37d1a67d0f51f9d1b911face039b85d6c98ed Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:28:23 -0300 Subject: [PATCH 07/18] Commit 7 --- Customer.java | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Customer.java b/Customer.java index a49cfb3a..c8a90d92 100644 --- a/Customer.java +++ b/Customer.java @@ -15,18 +15,32 @@ 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"; + 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 e92c58763266597ab6e5cdf24246c22322af0c8e Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:29:21 -0300 Subject: [PATCH 08/18] Commit 8 --- Customer.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Customer.java b/Customer.java index c8a90d92..a84262a6 100644 --- a/Customer.java +++ b/Customer.java @@ -25,6 +25,17 @@ public String statement() { result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) + " 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; Enumeration rentals = _rentals.elements(); From 7885434ad8dcef1b7f886e28198a6e97bcd21680 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:29:55 -0300 Subject: [PATCH 09/18] Commit 9 --- Movie.java | 59 +++++++++++++++++++++++++++++++++-------------------- Rental.java | 18 +--------------- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/Movie.java b/Movie.java index a9c051ad..64752b0c 100644 --- a/Movie.java +++ b/Movie.java @@ -1,25 +1,40 @@ public class Movie { - public static final int CHILDRENS = 2; - public static final int REGULAR = 0; - public static final int NEW_RELEASE = 1; + 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; - 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; - } + 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; + } + 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 b1979434..53f3b90b 100644 --- a/Rental.java +++ b/Rental.java @@ -13,23 +13,7 @@ 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; + return _movie.getCharge(_daysRented); } public int getFrequentRenterPoints() { if ((getMovie().getPriceCode() == Movie.NEW_RELEASE) && getDaysRented() > 1) From ee6759a87ff2c34e4e478bcada8bedd515a632c0 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:30:34 -0300 Subject: [PATCH 10/18] Commit 10 --- Movie.java | 5 +++++ Rental.java | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Movie.java b/Movie.java index 64752b0c..b4dae36b 100644 --- a/Movie.java +++ b/Movie.java @@ -37,4 +37,9 @@ public double getCharge(int daysRented) { } return result; } + public int getFrequentRenterPoints(int daysRented) { + if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) + return 2; + return 1; + } } \ No newline at end of file diff --git a/Rental.java b/Rental.java index 53f3b90b..0bd80253 100644 --- a/Rental.java +++ b/Rental.java @@ -16,8 +16,6 @@ public double getCharge() { return _movie.getCharge(_daysRented); } public int getFrequentRenterPoints() { - if ((getMovie().getPriceCode() == Movie.NEW_RELEASE) && getDaysRented() > 1) - return 2; - return 1; + return _movie.getFrequentRenterPoints(_daysRented); } } \ No newline at end of file From 55ed4e50ee7bc88c30c603d2da5e556057c5ea5e Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:32:05 -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..ffbad9b9 --- /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 b4dae36b..093eba1e 100644 --- a/Movie.java +++ b/Movie.java @@ -3,17 +3,29 @@ public class Movie { public static final int REGULAR = 0; 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() { return _title; diff --git a/NewReleasePrice.java b/NewReleasePrice.java new file mode 100644 index 00000000..5f61365d --- /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..b438b0b3 --- /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..a627abc1 --- /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 d407a836f044ff9fe10175e1be52bdfa62586506 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:32:45 -0300 Subject: [PATCH 12/18] Commit 12 --- Movie.java | 18 +----------------- Price.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Movie.java b/Movie.java index 093eba1e..6c67e0cd 100644 --- a/Movie.java +++ b/Movie.java @@ -31,23 +31,7 @@ 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; + 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 b438b0b3..1007ee22 100644 --- a/Price.java +++ b/Price.java @@ -1,3 +1,22 @@ 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 a8ca2d6b39d2aab2918ad58a0fb616d03b00e332 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:33:42 -0300 Subject: [PATCH 13/18] Commit 13 --- ChildrensPrice.java | 6 ++++++ NewReleasePrice.java | 3 +++ Price.java | 20 +------------------- RegularPrice.java | 6 ++++++ 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/ChildrensPrice.java b/ChildrensPrice.java index ffbad9b9..f28c8157 100644 --- a/ChildrensPrice.java +++ b/ChildrensPrice.java @@ -2,4 +2,10 @@ 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 5f61365d..b9e49c5e 100644 --- a/NewReleasePrice.java +++ b/NewReleasePrice.java @@ -2,4 +2,7 @@ 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 1007ee22..5dd99de6 100644 --- a/Price.java +++ b/Price.java @@ -1,22 +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 a627abc1..a1b73f34 100644 --- a/RegularPrice.java +++ b/RegularPrice.java @@ -2,4 +2,10 @@ 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 a75f9a205d99d1468a2330710e7f960e74b18168 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:34:12 -0300 Subject: [PATCH 14/18] Commit 14 --- Movie.java | 4 +--- Price.java | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Movie.java b/Movie.java index 6c67e0cd..a335a373 100644 --- a/Movie.java +++ b/Movie.java @@ -34,8 +34,6 @@ public double getCharge(int daysRented) { return _price.getCharge(daysRented); } public int getFrequentRenterPoints(int daysRented) { - if ((getPriceCode() == Movie.NEW_RELEASE) && daysRented > 1) - return 2; - return 1; + return _price.getFrequentRenterPoints(daysRented); } } \ No newline at end of file diff --git a/Price.java b/Price.java index 5dd99de6..b92f59e4 100644 --- a/Price.java +++ b/Price.java @@ -1,4 +1,9 @@ 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; + return 1; + } } \ No newline at end of file From c6411212e923859383a4aef84d1a53a732a4c367 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:34:43 -0300 Subject: [PATCH 15/18] Commit 15 --- NewReleasePrice.java | 3 +++ Price.java | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NewReleasePrice.java b/NewReleasePrice.java index b9e49c5e..0aee1d9c 100644 --- a/NewReleasePrice.java +++ b/NewReleasePrice.java @@ -5,4 +5,7 @@ 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 b92f59e4..f92cd0a2 100644 --- a/Price.java +++ b/Price.java @@ -2,8 +2,6 @@ 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; return 1; } } \ No newline at end of file From f2439b46dce373516fb5ed296910b865e85de20d Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:37:00 -0300 Subject: [PATCH 16/18] Commit 16 --- Customer.java | 27 +++++++-------------------- HtmlStatement.java | 15 +++++++++++++++ Statement.java | 2 ++ TextStatement.java | 15 +++++++++++++++ 4 files changed, 39 insertions(+), 20 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 a84262a6..2bc3a496 100644 --- a/Customer.java +++ b/Customer.java @@ -14,29 +14,16 @@ 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()) { @@ -45,7 +32,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..b1956fe5 --- /dev/null +++ b/HtmlStatement.java @@ -0,0 +1,15 @@ +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..476d18a8 --- /dev/null +++ b/TextStatement.java @@ -0,0 +1,15 @@ +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 e749592a4c8926fe3d4459062d44f908203392f5 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:37:44 -0300 Subject: [PATCH 17/18] Commit 17 --- HtmlStatement.java | 17 +++++++++++++---- Statement.java | 5 ++++- TextStatement.java | 17 +++++++++++++---- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/HtmlStatement.java b/HtmlStatement.java index b1956fe5..1ee757f9 100644 --- a/HtmlStatement.java +++ b/HtmlStatement.java @@ -3,13 +3,22 @@ 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 " + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + " frequent renter points

"; + result += footerString(aCustomer); return result; } + public String headerString(Customer aCustomer) { + return "

Rentals for " + aCustomer.getName() + "

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

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

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

"; + } } \ No newline at end of file diff --git a/Statement.java b/Statement.java index 7e85dc72..12b15e1e 100644 --- a/Statement.java +++ b/Statement.java @@ -1,2 +1,5 @@ -public class Statement { +public abstract class Statement { + public abstract String headerString(Customer aCustomer); + public abstract String eachRentalString(Rental aRental); + public abstract String footerString(Customer aCustomer); } \ No newline at end of file diff --git a/TextStatement.java b/TextStatement.java index 476d18a8..79c55d3f 100644 --- a/TextStatement.java +++ b/TextStatement.java @@ -3,13 +3,22 @@ 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 " + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + " frequent renter points"; + result += footerString(aCustomer); return result; } + public String headerString(Customer aCustomer) { + return "Rental Record for " + aCustomer.getName() + "\n"; + } + public String eachRentalString(Rental aRental) { + return "\t" + aRental.getMovie().getTitle() + "\t" + String.valueOf(aRental.getCharge()) + "\n"; + } + public String footerString(Customer aCustomer) { + return "Amount owed is " + String.valueOf(aCustomer.getTotalCharge()) + "\n" + + "You earned " + String.valueOf(aCustomer.getTotalFrequentRenterPoints()) + " frequent renter points"; + } } \ No newline at end of file From c4859ba0b4501dcd17266d68401d9e1c47fae691 Mon Sep 17 00:00:00 2001 From: Enzostp Date: Mon, 24 Nov 2025 19:38:18 -0300 Subject: [PATCH 18/18] Commit 18 --- HtmlStatement.java | 12 ------------ Statement.java | 13 +++++++++++++ TextStatement.java | 12 ------------ 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/HtmlStatement.java b/HtmlStatement.java index 1ee757f9..24229d1f 100644 --- a/HtmlStatement.java +++ b/HtmlStatement.java @@ -1,16 +1,4 @@ -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; - } public String headerString(Customer aCustomer) { return "

Rentals for " + aCustomer.getName() + "

\n"; } diff --git a/Statement.java b/Statement.java index 12b15e1e..4ca805a2 100644 --- a/Statement.java +++ b/Statement.java @@ -1,5 +1,18 @@ +import java.util.Enumeration; + public abstract class Statement { public abstract String headerString(Customer aCustomer); public abstract String eachRentalString(Rental aRental); public abstract String footerString(Customer aCustomer); + + 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; + } } \ No newline at end of file diff --git a/TextStatement.java b/TextStatement.java index 79c55d3f..e95e1f89 100644 --- a/TextStatement.java +++ b/TextStatement.java @@ -1,16 +1,4 @@ -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; - } public String headerString(Customer aCustomer) { return "Rental Record for " + aCustomer.getName() + "\n"; }