From ffa779e2da001f12de8317328a1a754ea85b1637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= <75435563+MaJuks@users.noreply.github.com> Date: Tue, 26 Nov 2024 19:27:41 -0300 Subject: [PATCH 01/16] COMMIT 1 Adicionando arquivos a serem trabalhados --- index/Customer.java | 64 +++++++++++++++++++++++++++++++++++++++++++++ index/Main.java | 15 +++++++++++ index/Movie.java | 26 ++++++++++++++++++ index/Rental.java | 18 +++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 index/Customer.java create mode 100644 index/Main.java create mode 100644 index/Movie.java create mode 100644 index/Rental.java diff --git a/index/Customer.java b/index/Customer.java new file mode 100644 index 00000000..9740c58b --- /dev/null +++ b/index/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/index/Main.java b/index/Main.java new file mode 100644 index 00000000..04149b4a --- /dev/null +++ b/index/Main.java @@ -0,0 +1,15 @@ +/** +* Engenharia de Software Moderna +* Prof. Marco Tulio Valente +* +* Roteiro Prático sobre refactoring +* +* Classes iniciais do sistema de videolocadora +* +*/ + +class Main { + public static void main(String[] args) { + System.out.println("Apenas um exemplo de refatoração..."); + } + } \ No newline at end of file diff --git a/index/Movie.java b/index/Movie.java new file mode 100644 index 00000000..eca0f4e8 --- /dev/null +++ b/index/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/index/Rental.java b/index/Rental.java new file mode 100644 index 00000000..e5697b17 --- /dev/null +++ b/index/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 b37aa9a7bfddab781991de75ef1aae7310e3d74e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= <75435563+MaJuks@users.noreply.github.com> Date: Tue, 26 Nov 2024 19:48:53 -0300 Subject: [PATCH 02/16] COMMIT 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit COMMIT 2 Extrair o método amountFor em Customer --- index/Customer.java | 108 ++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 9740c58b..48f871fb 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -2,63 +2,65 @@ import java.util.Vector; public class Customer { - private String _name; - private Vector _rentals = new Vector(); + private String _name; + private Vector _rentals = new Vector<>(); - public Customer (String name){ - _name = name; - } + 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(); + public void addRental(Rental arg) { + _rentals.addElement(arg); + } - //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; + 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 = rentals.nextElement(); + double thisAmount = amountFor(each); + + frequentRenterPoints++; + if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { + frequentRenterPoints++; + } + + result += "\t" + each.getMovie().getTitle() + "\t" + thisAmount + "\n"; + totalAmount += thisAmount; } - // 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 ++; + result += "Amount owed is " + totalAmount + "\n"; + result += "You earned " + frequentRenterPoints + " frequent renter points"; + return result; + } - //show figures for this rental - result += "\t" + each.getMovie().getTitle()+ "\t" + - String.valueOf(thisAmount) + "\n"; - totalAmount += thisAmount; + private double amountFor(Rental each) { + double thisAmount = 0; - } - //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 + 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; + } +} From bcc06fe3e7d59269d8d9419faaa39a55f763ca00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= <75435563+MaJuks@users.noreply.github.com> Date: Tue, 26 Nov 2024 19:50:01 -0300 Subject: [PATCH 03/16] COMMIT 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit COMMIT 3 Renomeado parâmetro de amountFor para aRental --- index/Customer.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 48f871fb..27668310 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -27,37 +27,40 @@ public String statement() { Rental each = rentals.nextElement(); double thisAmount = amountFor(each); + frequentRenterPoints++; if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { frequentRenterPoints++; } + result += "\t" + each.getMovie().getTitle() + "\t" + thisAmount + "\n"; totalAmount += thisAmount; } + result += "Amount owed is " + totalAmount + "\n"; result += "You earned " + frequentRenterPoints + " frequent renter points"; return result; } - private double amountFor(Rental each) { + private double amountFor(Rental aRental) { double thisAmount = 0; - switch (each.getMovie().getPriceCode()) { + switch (aRental.getMovie().getPriceCode()) { case Movie.REGULAR: thisAmount += 2; - if (each.getDaysRented() > 2) { - thisAmount += (each.getDaysRented() - 2) * 1.5; + if (aRental.getDaysRented() > 2) { + thisAmount += (aRental.getDaysRented() - 2) * 1.5; } break; case Movie.NEW_RELEASE: - thisAmount += each.getDaysRented() * 3; + thisAmount += aRental.getDaysRented() * 3; break; case Movie.CHILDRENS: thisAmount += 1.5; - if (each.getDaysRented() > 3) { - thisAmount += (each.getDaysRented() - 3) * 1.5; + if (aRental.getDaysRented() > 3) { + thisAmount += (aRental.getDaysRented() - 3) * 1.5; } break; } From bdadeceda4deb1b807d1a5da08725e0a3c6edeb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 19:52:46 -0300 Subject: [PATCH 04/16] COMMIT 4 --- index/Customer.java | 34 +++++---------------------------- index/Rental.java | 46 +++++++++++++++++++++++++++++++++------------ 2 files changed, 39 insertions(+), 41 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 27668310..a9cfbd7b 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -25,45 +25,21 @@ public String statement() { while (rentals.hasMoreElements()) { Rental each = rentals.nextElement(); - double thisAmount = amountFor(each); - + // add frequent renter points frequentRenterPoints++; if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { frequentRenterPoints++; } - - result += "\t" + each.getMovie().getTitle() + "\t" + thisAmount + "\n"; - totalAmount += thisAmount; + // show figures for this rental + result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; + totalAmount += each.getCharge(); } - + // add footer lines result += "Amount owed is " + totalAmount + "\n"; result += "You earned " + frequentRenterPoints + " frequent renter points"; return result; } - - private double amountFor(Rental aRental) { - double thisAmount = 0; - - switch (aRental.getMovie().getPriceCode()) { - case Movie.REGULAR: - thisAmount += 2; - if (aRental.getDaysRented() > 2) { - thisAmount += (aRental.getDaysRented() - 2) * 1.5; - } - break; - case Movie.NEW_RELEASE: - thisAmount += aRental.getDaysRented() * 3; - break; - case Movie.CHILDRENS: - thisAmount += 1.5; - if (aRental.getDaysRented() > 3) { - thisAmount += (aRental.getDaysRented() - 3) * 1.5; - } - break; - } - return thisAmount; - } } diff --git a/index/Rental.java b/index/Rental.java index e5697b17..f8e30534 100644 --- a/index/Rental.java +++ b/index/Rental.java @@ -1,18 +1,40 @@ public class Rental { + private Movie _movie; + private int _daysRented; - private Movie _movie; - private int _daysRented; - - public Rental(Movie movie, int daysRented) { + public Rental(Movie movie, int daysRented) { _movie = movie; _daysRented = daysRented; - } - - public int getDaysRented() { + } + + public int getDaysRented() { return _daysRented; - } - - public Movie getMovie() { + } + + public Movie getMovie() { return _movie; - } - } \ No newline at end of file + } + + public double getCharge() { + double thisAmount = 0; + + switch (_movie.getPriceCode()) { + case Movie.REGULAR: + thisAmount += 2; + if (_daysRented > 2) { + thisAmount += (_daysRented - 2) * 1.5; + } + break; + case Movie.NEW_RELEASE: + thisAmount += _daysRented * 3; + break; + case Movie.CHILDRENS: + thisAmount += 1.5; + if (_daysRented > 3) { + thisAmount += (_daysRented - 3) * 1.5; + } + break; + } + return thisAmount; + } +} From 4974b6e24f8968a9ab7023f5f599d25a5c695d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 19:55:21 -0300 Subject: [PATCH 05/16] COMMIT 5 --- index/Customer.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index a9cfbd7b..62efec6b 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -26,18 +26,15 @@ public String statement() { while (rentals.hasMoreElements()) { Rental each = rentals.nextElement(); - // add frequent renter points frequentRenterPoints++; if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { frequentRenterPoints++; } - // show figures for this rental result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; totalAmount += each.getCharge(); } - // add footer lines result += "Amount owed is " + totalAmount + "\n"; result += "You earned " + frequentRenterPoints + " frequent renter points"; return result; From 576b4d9c6f0444422258ce424b7d0bc6f1090530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 19:56:06 -0300 Subject: [PATCH 06/16] COMMIT 6 --- index/Customer.java | 5 +---- index/Rental.java | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 62efec6b..50e696d2 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -26,10 +26,7 @@ public String statement() { while (rentals.hasMoreElements()) { Rental each = rentals.nextElement(); - frequentRenterPoints++; - if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) && each.getDaysRented() > 1) { - frequentRenterPoints++; - } + frequentRenterPoints += each.getFrequentRenterPoints(); result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; totalAmount += each.getCharge(); diff --git a/index/Rental.java b/index/Rental.java index f8e30534..b469328b 100644 --- a/index/Rental.java +++ b/index/Rental.java @@ -16,25 +16,32 @@ public Movie getMovie() { } public double getCharge() { - double thisAmount = 0; + double result = 0; switch (_movie.getPriceCode()) { case Movie.REGULAR: - thisAmount += 2; + result += 2; if (_daysRented > 2) { - thisAmount += (_daysRented - 2) * 1.5; + result += (_daysRented - 2) * 1.5; } break; case Movie.NEW_RELEASE: - thisAmount += _daysRented * 3; + result += _daysRented * 3; break; case Movie.CHILDRENS: - thisAmount += 1.5; + result += 1.5; if (_daysRented > 3) { - thisAmount += (_daysRented - 3) * 1.5; + result += (_daysRented - 3) * 1.5; } break; } - return thisAmount; + return result; + } + + public int getFrequentRenterPoints() { + if ((_movie.getPriceCode() == Movie.NEW_RELEASE) && _daysRented > 1) { + return 2; + } + return 1; } } From 43951193d6cad14505a7ff30b610ca88a21d4a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 19:56:51 -0300 Subject: [PATCH 07/16] COMMIT 7 --- index/Customer.java | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 50e696d2..2e46ba64 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -18,22 +18,36 @@ public String getName() { } 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 = rentals.nextElement(); + result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; + } - frequentRenterPoints += each.getFrequentRenterPoints(); + result += "Amount owed is " + getTotalCharge() + "\n"; + result += "You earned " + getTotalFrequentRenterPoints() + " frequent renter points"; + return result; + } - result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; - totalAmount += each.getCharge(); + private double getTotalCharge() { + double result = 0; + Enumeration rentals = _rentals.elements(); + while (rentals.hasMoreElements()) { + Rental each = rentals.nextElement(); + result += each.getCharge(); } + return result; + } - result += "Amount owed is " + totalAmount + "\n"; - result += "You earned " + frequentRenterPoints + " frequent renter points"; + private int getTotalFrequentRenterPoints() { + int result = 0; + Enumeration rentals = _rentals.elements(); + while (rentals.hasMoreElements()) { + Rental each = rentals.nextElement(); + result += each.getFrequentRenterPoints(); + } return result; } } From 07b17c6c1d13d57984cf7062665597ba71a07fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 19:57:40 -0300 Subject: [PATCH 08/16] COMMIT 8 --- index/Customer.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/index/Customer.java b/index/Customer.java index 2e46ba64..6670aa9e 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -31,6 +31,20 @@ public String statement() { return result; } + public String htmlStatement() { + Enumeration rentals = _rentals.elements(); + String result = "

Rentals for " + getName() + "

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

You owe " + getTotalCharge() + "

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

"; + return result; + } + private double getTotalCharge() { double result = 0; Enumeration rentals = _rentals.elements(); From 65a1fbac58eede0f1f927d2bf344826fbf6561fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:04:36 -0300 Subject: [PATCH 09/16] COMMIT 9 --- index/ChildrensPrice.java | 15 ++++++++++ index/Movie.java | 43 +++++++++++++++++++---------- index/NewReleasePrice.java | 11 ++++++++ index/Price.java | 5 ++++ index/RegularPrice.java | 15 ++++++++++ index/Rental.java | 56 ++++++++++---------------------------- 6 files changed, 90 insertions(+), 55 deletions(-) create mode 100644 index/ChildrensPrice.java create mode 100644 index/NewReleasePrice.java create mode 100644 index/Price.java create mode 100644 index/RegularPrice.java diff --git a/index/ChildrensPrice.java b/index/ChildrensPrice.java new file mode 100644 index 00000000..c1cf552e --- /dev/null +++ b/index/ChildrensPrice.java @@ -0,0 +1,15 @@ +public class ChildrensPrice extends Price { + @Override + public int getPriceCode() { + return Movie.CHILDRENS; + } + + @Override + public double getCharge(int daysRented) { + double result = 1.5; + if (daysRented > 3) { + result += (daysRented - 3) * 1.5; + } + return result; + } +} diff --git a/index/Movie.java b/index/Movie.java index eca0f4e8..22dc09cb 100644 --- a/index/Movie.java +++ b/index/Movie.java @@ -1,26 +1,41 @@ 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 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 (){ + + public String getTitle() { return _title; } - } \ No newline at end of file + + public double getCharge(int daysRented) { + return _price.getCharge(daysRented); + } +} diff --git a/index/NewReleasePrice.java b/index/NewReleasePrice.java new file mode 100644 index 00000000..f66f9657 --- /dev/null +++ b/index/NewReleasePrice.java @@ -0,0 +1,11 @@ +public class NewReleasePrice extends Price { + @Override + public int getPriceCode() { + return Movie.NEW_RELEASE; + } + + @Override + public double getCharge(int daysRented) { + return daysRented * 3; + } +} diff --git a/index/Price.java b/index/Price.java new file mode 100644 index 00000000..de5eaf81 --- /dev/null +++ b/index/Price.java @@ -0,0 +1,5 @@ +public abstract class Price { + public abstract int getPriceCode(); + + public abstract double getCharge(int daysRented); +} diff --git a/index/RegularPrice.java b/index/RegularPrice.java new file mode 100644 index 00000000..96612bd3 --- /dev/null +++ b/index/RegularPrice.java @@ -0,0 +1,15 @@ +public class RegularPrice extends Price { + @Override + public int getPriceCode() { + return Movie.REGULAR; + } + + @Override + public double getCharge(int daysRented) { + double result = 2; + if (daysRented > 2) { + result += (daysRented - 2) * 1.5; + } + return result; + } +} diff --git a/index/Rental.java b/index/Rental.java index b469328b..adfc50ca 100644 --- a/index/Rental.java +++ b/index/Rental.java @@ -1,47 +1,21 @@ 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 Rental(Movie movie, int daysRented) { + _movie = movie; + _daysRented = daysRented; + } - public int getDaysRented() { - return _daysRented; - } + public int getDaysRented() { + return _daysRented; + } - public Movie getMovie() { - return _movie; - } + public Movie getMovie() { + return _movie; + } - public double getCharge() { - double result = 0; - - switch (_movie.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 int getFrequentRenterPoints() { - if ((_movie.getPriceCode() == Movie.NEW_RELEASE) && _daysRented > 1) { - return 2; - } - return 1; - } + public double getCharge() { + return _movie.getCharge(_daysRented); + } } From 94324952da0c0274808d942eb4c1dd4df76029c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:07:21 -0300 Subject: [PATCH 10/16] COMMIT 10 --- index/Customer.java | 8 ++++++-- index/Movie.java | 4 ++++ index/NewReleasePrice.java | 5 +++++ index/Price.java | 4 ++++ index/Rental.java | 4 ++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 6670aa9e..3e240079 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -45,7 +45,11 @@ public String htmlStatement() { return result; } - private double getTotalCharge() { + public Enumeration getRentals() { + return _rentals.elements(); + } + + public double getTotalCharge() { double result = 0; Enumeration rentals = _rentals.elements(); while (rentals.hasMoreElements()) { @@ -55,7 +59,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/index/Movie.java b/index/Movie.java index 22dc09cb..a9b4771a 100644 --- a/index/Movie.java +++ b/index/Movie.java @@ -38,4 +38,8 @@ public String getTitle() { public double getCharge(int daysRented) { return _price.getCharge(daysRented); } + + public int getFrequentRenterPoints(int daysRented) { + return _price.getFrequentRenterPoints(daysRented); + } } diff --git a/index/NewReleasePrice.java b/index/NewReleasePrice.java index f66f9657..8e04dfb0 100644 --- a/index/NewReleasePrice.java +++ b/index/NewReleasePrice.java @@ -8,4 +8,9 @@ public int getPriceCode() { public double getCharge(int daysRented) { return daysRented * 3; } + + @Override + public int getFrequentRenterPoints(int daysRented) { + return (daysRented > 1) ? 2 : 1; + } } diff --git a/index/Price.java b/index/Price.java index de5eaf81..8ebf0b41 100644 --- a/index/Price.java +++ b/index/Price.java @@ -2,4 +2,8 @@ public abstract class Price { public abstract int getPriceCode(); public abstract double getCharge(int daysRented); + + public int getFrequentRenterPoints(int daysRented) { + return 1; // Padrão + } } diff --git a/index/Rental.java b/index/Rental.java index adfc50ca..3f47c368 100644 --- a/index/Rental.java +++ b/index/Rental.java @@ -18,4 +18,8 @@ public Movie getMovie() { public double getCharge() { return _movie.getCharge(_daysRented); } + + public int getFrequentRenterPoints() { + return _movie.getFrequentRenterPoints(_daysRented); + } } From 21ea77d19e37e0a3e84ad57740ff8d07aa28615e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:08:25 -0300 Subject: [PATCH 11/16] COMMIT 11 - SEM ALTERACOES --- index/Price.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index/Price.java b/index/Price.java index 8ebf0b41..83b15b52 100644 --- a/index/Price.java +++ b/index/Price.java @@ -4,6 +4,6 @@ public abstract class Price { public abstract double getCharge(int daysRented); public int getFrequentRenterPoints(int daysRented) { - return 1; // Padrão + return 1; } } From 618e040b2d777691103e318025a75c47232c2fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:09:03 -0300 Subject: [PATCH 12/16] COMMIT 12 --- index/Customer.java | 24 ++---------------------- index/Statement.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 22 deletions(-) create mode 100644 index/Statement.java diff --git a/index/Customer.java b/index/Customer.java index 3e240079..7005f44a 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -18,31 +18,11 @@ public String getName() { } public String statement() { - Enumeration rentals = _rentals.elements(); - String result = "Rental Record for " + getName() + "\n"; - - while (rentals.hasMoreElements()) { - Rental each = rentals.nextElement(); - result += "\t" + each.getMovie().getTitle() + "\t" + each.getCharge() + "\n"; - } - - result += "Amount owed is " + getTotalCharge() + "\n"; - result += "You earned " + 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 = rentals.nextElement(); - result += each.getMovie().getTitle() + ": " + each.getCharge() + "
\n"; - } - - result += "

You owe " + getTotalCharge() + "

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

"; - return result; + return new HtmlStatement().value(this); } public Enumeration getRentals() { diff --git a/index/Statement.java b/index/Statement.java new file mode 100644 index 00000000..df771351 --- /dev/null +++ b/index/Statement.java @@ -0,0 +1,16 @@ +public abstract class Statement { + public String value(Customer customer) { + String result = headerString(customer); + for (Rental rental : customer.getRentals()) { + result += rentalString(rental); + } + result += footerString(customer); + return result; + } + + protected abstract String headerString(Customer customer); + + protected abstract String rentalString(Rental rental); + + protected abstract String footerString(Customer customer); +} From 6d9c1859467215805b7bfe26d7995a4b8533c955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:09:41 -0300 Subject: [PATCH 13/16] COMMIT 13 --- index/TextStatement.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 index/TextStatement.java diff --git a/index/TextStatement.java b/index/TextStatement.java new file mode 100644 index 00000000..ef5c9994 --- /dev/null +++ b/index/TextStatement.java @@ -0,0 +1,17 @@ +public class TextStatement extends Statement { + @Override + protected String headerString(Customer customer) { + return "Rental Record for " + customer.getName() + "\n"; + } + + @Override + protected String rentalString(Rental rental) { + return "\t" + rental.getMovie().getTitle() + "\t" + rental.getCharge() + "\n"; + } + + @Override + protected String footerString(Customer customer) { + return "Amount owed is " + customer.getTotalCharge() + "\n" + + "You earned " + customer.getTotalFrequentRenterPoints() + " frequent renter points"; + } +} From 8ba0110c8fac762c07120f62794bbdb317fb62b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:10:17 -0300 Subject: [PATCH 14/16] COMMIT 14 --- index/HtmlStatement.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 index/HtmlStatement.java diff --git a/index/HtmlStatement.java b/index/HtmlStatement.java new file mode 100644 index 00000000..05da3acd --- /dev/null +++ b/index/HtmlStatement.java @@ -0,0 +1,17 @@ +public class HtmlStatement extends Statement { + @Override + protected String headerString(Customer customer) { + return "

Rentals for " + customer.getName() + "

\n"; + } + + @Override + protected String rentalString(Rental rental) { + return rental.getMovie().getTitle() + ": " + rental.getCharge() + "
\n"; + } + + @Override + protected String footerString(Customer customer) { + return "

You owe " + customer.getTotalCharge() + "

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

"; + } +} From cb8c5ad2b820efd31083c270fda72ebecdd683c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:11:15 -0300 Subject: [PATCH 15/16] COMMIT 15 --- index/Customer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/index/Customer.java b/index/Customer.java index 7005f44a..931dce6b 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -38,6 +38,7 @@ public double getTotalCharge() { } return result; } + public int getTotalFrequentRenterPoints() { int result = 0; From e4f3257a4d3fda2774f248483598ffc0987dc5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20J=C3=BAlia?= Date: Tue, 26 Nov 2024 20:16:00 -0300 Subject: [PATCH 16/16] COMMIT 16 --- index/Customer.java | 21 ++++++++------------- index/Main.java | 41 ++++++++++++++++++++++++++--------------- index/Price.java | 2 +- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/index/Customer.java b/index/Customer.java index 931dce6b..8242561c 100644 --- a/index/Customer.java +++ b/index/Customer.java @@ -1,16 +1,16 @@ -import java.util.Enumeration; -import java.util.Vector; +import java.util.ArrayList; +import java.util.List; public class Customer { private String _name; - private Vector _rentals = new Vector<>(); + private List _rentals = new ArrayList<>(); public Customer(String name) { _name = name; } public void addRental(Rental arg) { - _rentals.addElement(arg); + _rentals.add(arg); } public String getName() { @@ -25,26 +25,21 @@ public String htmlStatement() { return new HtmlStatement().value(this); } - public Enumeration getRentals() { - return _rentals.elements(); + public List getRentals() { + return _rentals; } public double getTotalCharge() { double result = 0; - Enumeration rentals = _rentals.elements(); - while (rentals.hasMoreElements()) { - Rental each = rentals.nextElement(); + for (Rental each : _rentals) { result += each.getCharge(); } return result; } - public int getTotalFrequentRenterPoints() { int result = 0; - Enumeration rentals = _rentals.elements(); - while (rentals.hasMoreElements()) { - Rental each = rentals.nextElement(); + for (Rental each : _rentals) { result += each.getFrequentRenterPoints(); } return result; diff --git a/index/Main.java b/index/Main.java index 04149b4a..ae215a6f 100644 --- a/index/Main.java +++ b/index/Main.java @@ -1,15 +1,26 @@ -/** -* Engenharia de Software Moderna -* Prof. Marco Tulio Valente -* -* Roteiro Prático sobre refactoring -* -* Classes iniciais do sistema de videolocadora -* -*/ - -class Main { - public static void main(String[] args) { - System.out.println("Apenas um exemplo de refatoração..."); - } - } \ No newline at end of file +public class Main { + public static void main(String[] args) { + // Criando filmes + Movie movie1 = new Movie("The Godfather", Movie.REGULAR); + Movie movie2 = new Movie("Frozen", Movie.CHILDRENS); + Movie movie3 = new Movie("Avengers: Endgame", Movie.NEW_RELEASE); + + // Criando aluguéis + Rental rental1 = new Rental(movie1, 5); + Rental rental2 = new Rental(movie2, 4); + Rental rental3 = new Rental(movie3, 2); + + // Criando cliente + Customer customer = new Customer("John Doe"); + customer.addRental(rental1); + customer.addRental(rental2); + customer.addRental(rental3); + + // Exibindo os relatórios + System.out.println("Relatório em texto:"); + System.out.println(customer.statement()); + + System.out.println("\nRelatório em HTML:"); + System.out.println(customer.htmlStatement()); + } +} diff --git a/index/Price.java b/index/Price.java index 83b15b52..3f2f9a05 100644 --- a/index/Price.java +++ b/index/Price.java @@ -4,6 +4,6 @@ public abstract class Price { public abstract double getCharge(int daysRented); public int getFrequentRenterPoints(int daysRented) { - return 1; + return 1; } }