diff --git a/README.md b/README.md index 4f153b0..7124eca 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,13 @@ Work through all these exercises. You edit this file with your answers for these * 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? +* What value is returned if you check the machine’s balance after it has printed a ticket? 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? It always resets to 0. + * What happens if you insert too much money into the machine – do you receive any refund? No, you do not receive a refund. + * What happens if you do not insert enough and then try to print a ticket? I get the same message either way. ### 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. @@ -30,25 +30,25 @@ Work through all these exercises. You edit this file with your answers for these ### 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? + * Does the printed ticket look different? It shows a different price and total. ### 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. +* 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 and public class LabClass respectively ### Exercise 2.7 Does it matter whether we write
`public class TicketMachine`
or
`class public TicketMachine`
-in the outer wrapper of a class? +in the outer wrapper of a class? Yes. It would throw an error. The access level must be declared first. * 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? Yes. The arrow now points back to the class it starts from. + * What error message do you get when you now press the compile button? + * Do you think this message clearly explains what is wrong? No. ### Exercise 2.8 -* Check whether or not it is possible to leave out the word `public` from the outer wrapper of the `TicketMachine` class. +* Check whether or not it is possible to leave out the word `public` from the outer wrapper of the `TicketMachine` class. It compiled without an access level. ### 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. @@ -62,18 +62,18 @@ in the outer wrapper of a class? * What do you think is the type of each of the following fields? ```java -private int count; -private Student representative; -private Server host; +private int count; Primitive integer +private Student representative; Student +private Server host; Server ``` ### Exercise 2.12 * What are the names of the following fields? ```java -private boolean alive; -private Person tutor; -private Game game; +private boolean alive; alive +private Person tutor; tutor +private Game game; game ``` ### Exercise 2.13 @@ -82,36 +82,36 @@ In the following field declaration from the TicketMachine class
```java private int price; ``` -does it matter which order the three words appear in? +does it matter which order the three words appear in? Yes. * 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 -possible? - * Check by pressing the compile button to see if there is an error message. +possible? Yes. In the order of the class turned grey. + * Check by pressing the compile button to see if there is an error message. There is an error message stating "cannot find symbol variable price" * 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? +* Is it always necessary to have a semicolon at the end of a field declaration? Yes. * Once again, experiment via the editor. * The rule you will learn here is an important one, so be sure to remember it. ### Exercise 2.15 -* Write in full the declaration for a field of type `int` whose name is `status`. +* Write in full the declaration for a field of type `int` whose name is `status`. int status; ### Exercise 2.16 -* To what class does the following constructor belong? +* To what class does the following constructor belong? Student ``` public Student(String name) ``` ### Exercise 2.17 -* How many parameters does the following constructor have and what are their types? +* How many parameters does the following constructor have and what are their types? Two. Both strings. ``` public Book(String title, double price) ``` ### Exercise 2.18 -* Can you guess what types some of the `Book` class’s fields might be? -* Can you assume anything about the names of its fields? +* Can you guess what types some of the `Book` class’s fields might be? Strings, dates, numbers. +* Can you assume anything about the names of its fields? Author, title, date published, ISDN READ upto and INCLUDING section 2.15 of this chapter. diff --git a/bluej.pkg b/bluej.pkg index bf25784..b453f81 100644 --- a/bluej.pkg +++ b/bluej.pkg @@ -1,20 +1,23 @@ #BlueJ package file -editor.fx.0.height=722 +dependency1.from=TicketMachineTest +dependency1.to=TicketMachine +dependency1.type=UsesDependency +editor.fx.0.height=683 editor.fx.0.width=800 -editor.fx.0.x=709 -editor.fx.0.y=113 +editor.fx.0.x=262 +editor.fx.0.y=23 objectbench.height=101 -objectbench.width=461 +objectbench.width=776 package.divider.horizontal=0.6 package.divider.vertical=0.8007380073800738 package.editor.height=427 package.editor.width=674 -package.editor.x=1067 -package.editor.y=119 +package.editor.x=204 +package.editor.y=76 package.frame.height=600 package.frame.width=800 -package.numDependencies=0 -package.numTargets=1 +package.numDependencies=1 +package.numTargets=2 package.showExtends=true package.showUses=true project.charset=UTF-8 @@ -24,9 +27,16 @@ readme.width=47 readme.x=10 readme.y=10 target1.height=50 -target1.name=TicketMachine +target1.name=TicketMachineTest target1.showInterface=false -target1.type=ClassTarget -target1.width=120 -target1.x=80 -target1.y=50 +target1.type=UnitTestTargetJunit4 +target1.width=140 +target1.x=10 +target1.y=110 +target2.height=50 +target2.name=TicketMachine +target2.showInterface=false +target2.type=ClassTarget +target2.width=120 +target2.x=160 +target2.y=40 diff --git a/package.bluej b/package.bluej index bf25784..b453f81 100644 --- a/package.bluej +++ b/package.bluej @@ -1,20 +1,23 @@ #BlueJ package file -editor.fx.0.height=722 +dependency1.from=TicketMachineTest +dependency1.to=TicketMachine +dependency1.type=UsesDependency +editor.fx.0.height=683 editor.fx.0.width=800 -editor.fx.0.x=709 -editor.fx.0.y=113 +editor.fx.0.x=262 +editor.fx.0.y=23 objectbench.height=101 -objectbench.width=461 +objectbench.width=776 package.divider.horizontal=0.6 package.divider.vertical=0.8007380073800738 package.editor.height=427 package.editor.width=674 -package.editor.x=1067 -package.editor.y=119 +package.editor.x=204 +package.editor.y=76 package.frame.height=600 package.frame.width=800 -package.numDependencies=0 -package.numTargets=1 +package.numDependencies=1 +package.numTargets=2 package.showExtends=true package.showUses=true project.charset=UTF-8 @@ -24,9 +27,16 @@ readme.width=47 readme.x=10 readme.y=10 target1.height=50 -target1.name=TicketMachine +target1.name=TicketMachineTest target1.showInterface=false -target1.type=ClassTarget -target1.width=120 -target1.x=80 -target1.y=50 +target1.type=UnitTestTargetJunit4 +target1.width=140 +target1.x=10 +target1.y=110 +target2.height=50 +target2.name=TicketMachine +target2.showInterface=false +target2.type=ClassTarget +target2.width=120 +target2.x=160 +target2.y=40