From 9edd70e84b649c9f46fbc9ceb333a9f6884d10be Mon Sep 17 00:00:00 2001 From: cay Date: Wed, 27 Oct 2021 19:47:25 -0400 Subject: [PATCH] adds new file and updates readme --- README.md | 97 +++++++++++++++++++++++++++++++++++------- TicketMachineTwo.java | 98 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+), 14 deletions(-) create mode 100644 TicketMachineTwo.java diff --git a/README.md b/README.md index ee11f2c..c12cce0 100644 --- a/README.md +++ b/README.md @@ -18,28 +18,52 @@ Work through all these exercises. You edit this file with your answers for these * Use `getPrice` method to view the value of the price of the tickets that was set when this object was created. * Use `insertMoney` method to simulate inserting an amount of money into the machine. * Use `getBalance` to check that the machine has a record of the amount inserted. - * You can insert several separate amounts of money into the machine, just like you might insert multiple coins or notes into a real machine. Try inserting the exact amount required for a ticket. As this is a simple machine, a ticket will not be issued automatically, so once you have inserted enough money, call the `printTicket` method. A facsimile ticket should be printed in the BlueJ terminal window. + * You can insert several separate amounts of money into the machine, just like you might insert multiple coins or notes into a real machine. Try inserting the exact amount required for a ticket. As this is a simple machine, a ticket will not be issued automatically, so once you have inserted enough money, call the `printTicket` method. A facsimile ticket should be printed in the BlueJ terminal window. ### Exercise 2.2 * What value is returned if you check the machine’s balance after it has printed a ticket? + * Value is 0 ### Exercise 2.3 * Experiment with inserting different amounts of money before printing tickets. - * Do you notice anything strange about the machine’s behavior? - * What happens if you insert too much money into the machine – do you receive any refund? - * What happens if you do not insert enough and then try to print a ticket? + * Do you notice anything strange about the machine’s behavior? + + * Only difference I have noticed are my own inputs into the machine, i.e. pricing the tickets and inserting different amounts of money + + * What happens if you insert too much money into the machine – do you receive any refund? + + * No refund was issued. When checking the balance, the balace states 0. + * What happens if you do not insert enough and then try to print a ticket? + + * Nothing happens from the string other than the total is updated. ### Exercise 2.4 * Try to obtain a good understanding of a ticket machine’s behavior by interacting with it on the object bench before we start looking at how the `TicketMachine` class is implemented in the next section. ### Exercise 2.5 * Create another ticket machine for tickets of a different price. - * Buy a ticket from that machine. - * Does the printed ticket look different? + * Buy a ticket from that machine. + * Does the printed ticket look different? + + * No ### Exercise 2.6 * Write out what you think the outer wrappers of the `Student` and `LabClass` classes might look like – do not worry about the inner part. +``` +public class Student +{ + Inner part of the class omitted. +} +``` +``` +public class LabClass +{ + Inner part of the class omitted. +} +``` + + ### Exercise 2.7 Does it matter whether we write
`public class TicketMachine`
@@ -48,21 +72,35 @@ or
in the outer wrapper of a class? * Edit the source of the `TicketMachine` class to make the change and then close the editor window. - * Do you notice a change in the class diagram? - * What error message do you get when you now press the compile button? - * Do you think this message clearly explains what is wrong? + * Do you notice a change in the class diagram? + + * The Ticket Machine has red hash lines in the diagram box. + * What error message do you get when you now press the compile button? + + * "Error(s) found in class + * Do you think this message clearly explains what is wrong? + + * It is not clearly explains but it does give good hints, such as where they error is located. ### Exercise 2.8 * Check whether or not it is possible to leave out the word `public` from the outer wrapper of the `TicketMachine` class. + * No compilation errors come up and the scope highlighting still appears to be correct. + ### Exercise 2.9 * From your earlier experimentation with the ticket machine objects within BlueJ you can probably remember the names of some of the methods – `printTicket`, for instance. - * Look at the class definition in Code 2.1 and use this knowledge, along with the additional information about ordering we have given you, to try to make a list of the names of the fields, constructors, and methods in the `TicketMachine` class. - * Hint: There is only one constructor in the class. + * Look at the class definition in Code 2.1 and use this knowledge, along with the additional information about ordering we have given you, to try to make a list of the names of the fields, constructors, and methods in the `TicketMachine` class. + * Hint: There is only one constructor in the class. + + * Constructor: TicketMachine + * Fields: price, balance, total, ticketNumber + * Methods: getPrice, getTicketNumber, getBalance, insertMoney, calculateTotal, incrementTicketNumber ### Exercise 2.10 * Do you notice any features of the constructor that make it significantly different from the other methods of the class? + * When trying creating a new object and looking at the options to call upon, the constructor is not listed. + ### Exercise 2.11 * What do you think is the type of each of the following fields? @@ -71,6 +109,9 @@ private int count; private Student representative; private Server host; ``` +1. int is an integer +2. Student is a string +3. Server is a string ### Exercise 2.12 * What are the names of the following fields? @@ -80,6 +121,10 @@ private boolean alive; private Person tutor; private Game game; ``` +1. private boolean alive; has the name "alive" +2. private Person tutor; has the name "tutor" +3. private Game game; has the name "game" + ### Exercise 2.13 In the following field declaration from the TicketMachine class
@@ -88,14 +133,26 @@ In the following field declaration from the TicketMachine class
private int price; ``` does it matter which order the three words appear in? + +1. Yes the order matters + * Edit the `TicketMachine` class to try different orderings. After each change, close the editor. - * Does the appearance of the class diagram after each change give you a clue as to whether or not other orderings are + * Does the appearance of the class diagram after each change give you a clue as to whether or not other orderings are possible? - * Check by pressing the compile button to see if there is an error message. - * Make sure that you reinstantiate the original version after your experiments! + + * In each different arrangement in the words other than the original, there is are hased lines for not compiling it. + + * Check by pressing the compile button to see if there is an error message. + + * I recieve a copilation error when I try to compile. + + * Make sure that you reinstantiate the original version after your experiments! ### Exercise 2.14 * Is it always necessary to have a semicolon at the end of a field declaration? + + * Yes it is always necessary to have a semicolon at the end of a field declaration. + * Once again, experiment via the editor. * The rule you will learn here is an important one, so be sure to remember it. @@ -103,20 +160,32 @@ possible? ### Exercise 2.15 * Write in full the declaration for a field of type `int` whose name is `status`. +```java +private int status +``` + ### Exercise 2.16 * To what class does the following constructor belong? ``` public Student(String name) ``` +* It belongs to class "Student" ### Exercise 2.17 * How many parameters does the following constructor have and what are their types? ``` public Book(String title, double price) ``` +* This has 2 parameters, a string and a double respectvely. ### Exercise 2.18 * Can you guess what types some of the `Book` class’s fields might be? + + * Some of the fields might be name of the book or author + * Can you assume anything about the names of its fields? + * I can assume integers can be used for things such an index or author's notes in the book. + + READ upto and INCLUDING section 2.15 of this chapter. diff --git a/TicketMachineTwo.java b/TicketMachineTwo.java new file mode 100644 index 0000000..09d066b --- /dev/null +++ b/TicketMachineTwo.java @@ -0,0 +1,98 @@ +/** + * TicketMachineTwo models a naive ticket machine that issues + * flat-fare tickets. + * The price of a ticket is specified via the constructor. + * It is a naive machine in the sense that it trusts its users + * to insert enough money before trying to print a ticket. + * It also assumes that users enter sensible amounts. + * + * @author David J. Barnes and Michael Kolling + * @version 2008.03.30 + */ + public class TicketMachineTwo +{ + // The price of a ticket from this machine. + private Integer price; + // The amount of money entered by a customer so far. + private Integer balance; + // The total amount of money collected by this machine. + private Integer total; + // The number of tickets printed. + private Integer ticketNumber; + + /** + * Create a machine that issues tickets of the given price. + * Note that the price must be greater than zero, and there + * are no checks to ensure this. + */ + public TicketMachineTwo(Integer ticketCost) + { + price = ticketCost; + balance = 0; + total = 0; + ticketNumber = 0; + } + + /** + * Return the price of a ticket. + */ + public Integer getPrice() + { + return price; + } + + /** + * Return ticketNumber. + * (Increments on each print.) + */ + public Integer getTicketNumber() + { + return ticketNumber; + } + + /** + * Return the amount of money already inserted for the + * next ticket. + */ + public Integer getBalance() + { + return balance; + } + + /** + * Receive an amount of money in cents from a customer. + */ + public Integer insertMoney(Integer amount) + { + balance = balance + amount; + return balance; + } + + public Integer calculateTotal(){ + total = balance + total; + return total; + } + + public Integer incrementTicketNumber(){ + ticketNumber++; + return ticketNumber; + } + + + /** + * Print a ticket. + * Update the total collected and + * reduce the balance to zero. + */ + public String printTicket() + { + //Increment the number of tickets printed + incrementTicketNumber(); + // Update the total collected with the balance. + total = total + balance; + // Clear the balance. + balance = 0; + + return "Ticket price: " + price + " cents. " + "Your total is " + total + "."; + } +}