|
|
|
|
1
|
# NaiveTicket
|
1
|
# NaiveTicket
|
2
|
|
2
|
|
3
|
-The second Objects lab,from the BlueJ book's second chapter.
|
|
|
|
|
3
|
+The second Objects lab, from the BlueJ book's second chapter.
|
4
|
|
4
|
|
5
|
-Look for the [Chapter 2 file](./doc/BlueJ-objects-first-ch2.pdf) you need in the [doc](./doc) folder. There is 35 pages of reading and exercises in the chapter.
|
|
|
|
|
5
|
+Look for the [Chapter 2 file](./doc/BlueJ-objects-first-ch2.pdf) you need in the [doc](./doc) folder.
|
|
|
6
|
+There is 35 pages of reading and exercises in the chapter.
|
6
|
|
7
|
|
7
|
Work through all these exercises. You edit this file with your answers for these exercises.
|
8
|
Work through all these exercises. You edit this file with your answers for these exercises.
|
8
|
|
9
|
|
9
|
-* Exercise 2.1 Create a TicketMachine object on the object bench and take a look
|
|
|
10
|
-at its methods. You should see the following: getBalance, getPrice, insertMoney,
|
|
|
11
|
-and printTicket. Try out the getPrice method. You should see a return value containing
|
|
|
12
|
-the price of the tickets that was set when this object was created. Use the
|
|
|
13
|
-insertMoney method to simulate inserting an amount of money into the machine and
|
|
|
14
|
-then use getBalance to check that the machine has a record of the amount inserted.
|
|
|
15
|
-You can insert several separate amounts of money into the machine, just like you might
|
|
|
16
|
-insert multiple coins or notes into a real machine. Try inserting the exact amount
|
|
|
17
|
-required for a ticket. As this is a simple machine, a ticket will not be issued automatically,
|
|
|
18
|
-so once you have inserted enough money, call the printTicket method. A
|
|
|
19
|
-facsimile ticket should be printed in the BlueJ terminal window.
|
|
|
20
|
-* Exercise 2.2 What value is returned if you check the machine’s balance after it
|
|
|
21
|
-has printed a ticket?
|
|
|
22
|
-* Exercise 2.3 Experiment with inserting different amounts of money before printing
|
|
|
23
|
-tickets. Do you notice anything strange about the machine’s behavior? What happens
|
|
|
24
|
-if you insert too much money into the machine – do you receive any refund? What
|
|
|
25
|
-happens if you do not insert enough and then try to print a ticket?
|
|
|
26
|
-* Exercise 2.4 Try to obtain a good understanding of a ticket machine’s behavior by
|
|
|
27
|
-interacting with it on the object bench before we start looking at how the
|
|
|
28
|
-TicketMachine class is implemented in the next section.
|
|
|
29
|
-* Exercise 2.5 Create another ticket machine for tickets of a different price. Buy a
|
|
|
30
|
-ticket from that machine. Does the printed ticket look different?
|
|
|
31
|
-
|
|
|
32
|
-* Exercise 2.6 Write out what you think the outer wrappers of the Student and
|
|
|
33
|
-LabClass classes might look like – do not worry about the inner part.
|
|
|
34
|
-* Exercise 2.7 Does it matter whether we write
|
|
|
35
|
-`public class TicketMachine`
|
|
|
36
|
-or
|
|
|
37
|
-`class public TicketMachine`
|
|
|
38
|
-in the outer wrapper of a class? Edit the source of the TicketMachine class to
|
|
|
39
|
-make the change and then close the editor window. Do you notice a change in the
|
|
|
40
|
-class diagram?
|
|
|
41
|
-What error message do you get when you now press the Compile button? Do you think
|
|
|
42
|
-this message clearly explains what is wrong?
|
|
|
43
|
-* Exercise 2.8 Check whether or not it is possible to leave out the word public
|
|
|
44
|
-from the outer wrapper of the TicketMachine class.
|
|
|
45
|
-
|
|
|
46
|
-* Exercise 2.9 From your earlier experimentation with the ticket machine objects
|
|
|
47
|
-within BlueJ you can probably remember the names of some of the methods –
|
|
|
48
|
-printTicket, for instance. Look at the class definition in Code 2.1 and use this
|
|
|
49
|
-knowledge, along with the additional information about ordering we have given you,
|
|
|
50
|
-to try to make a list of the names of the fields, constructors, and methods in the
|
|
|
51
|
-TicketMachine class. Hint: There is only one constructor in the class.
|
|
|
52
|
-Exercise 2.10 Do you notice any features of the constructor that make it significantly
|
|
|
53
|
-different from the other methods of the class?
|
|
|
54
|
-
|
|
|
55
|
-* Exercise 2.11 What do you think is the type of each of the following fields?
|
|
|
|
|
10
|
+### Exercise 2.1
|
|
|
11
|
+* Create a TicketMachine object on the object bench.
|
|
|
12
|
+* Upon viewing its methods, `getBalance`, `getPrice`, `insertMoney`, `printTicket`.
|
|
|
13
|
+* Use `getPrice` method to view the value of the price of the tickets that was set when this object was created.
|
|
|
14
|
+* Use `insertMoney` method to simulate inserting an amount of money into the machine.
|
|
|
15
|
+* Use `getBalance` to check that the machine has a record of the amount inserted.
|
|
|
16
|
+ * 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.
|
|
|
17
|
+
|
|
|
18
|
+### Exercise 2.2
|
|
|
19
|
+* What value is returned if you check the machine’s balance after it has printed a ticket?
|
|
|
20
|
+
|
|
|
21
|
+### Exercise 2.3
|
|
|
22
|
+* Experiment with inserting different amounts of money before printing tickets.
|
|
|
23
|
+ * Do you notice anything strange about the machine’s behavior?
|
|
|
24
|
+ * What happens if you insert too much money into the machine – do you receive any refund?
|
|
|
25
|
+ * What happens if you do not insert enough and then try to print a ticket?
|
|
|
26
|
+
|
|
|
27
|
+### Exercise 2.4
|
|
|
28
|
+* 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.
|
|
|
29
|
+
|
|
|
30
|
+### Exercise 2.5
|
|
|
31
|
+* Create another ticket machine for tickets of a different price.
|
|
|
32
|
+ * Buy a ticket from that machine.
|
|
|
33
|
+ * Does the printed ticket look different?
|
|
|
34
|
+
|
|
|
35
|
+### Exercise 2.6
|
|
|
36
|
+* Write out what you think the outer wrappers of the `Student` and `LabClass` classes might look like – do not worry about the inner part.
|
|
|
37
|
+
|
|
|
38
|
+### Exercise 2.7
|
|
|
39
|
+Does it matter whether we write<br>
|
|
|
40
|
+`public class TicketMachine`<br>
|
|
|
41
|
+or<br>
|
|
|
42
|
+`class public TicketMachine`<br>
|
|
|
43
|
+in the outer wrapper of a class?
|
|
|
44
|
+
|
|
|
45
|
+* Edit the source of the `TicketMachine` class to make the change and then close the editor window.
|
|
|
46
|
+ * Do you notice a change in the class diagram?
|
|
|
47
|
+ * What error message do you get when you now press the compile button?
|
|
|
48
|
+ * Do you think this message clearly explains what is wrong?
|
|
|
49
|
+
|
|
|
50
|
+### Exercise 2.8
|
|
|
51
|
+* Check whether or not it is possible to leave out the word `public` from the outer wrapper of the `TicketMachine` class.
|
|
|
52
|
+
|
|
|
53
|
+### Exercise 2.9
|
|
|
54
|
+* 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.
|
|
|
55
|
+ * 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.
|
|
|
56
|
+ * Hint: There is only one constructor in the class.
|
|
|
57
|
+
|
|
|
58
|
+### Exercise 2.10
|
|
|
59
|
+* Do you notice any features of the constructor that make it significantly different from the other methods of the class?
|
|
|
60
|
+
|
|
|
61
|
+### Exercise 2.11
|
|
|
62
|
+* What do you think is the type of each of the following fields?
|
56
|
```
|
63
|
```
|
57
|
private int count;
|
64
|
private int count;
|
58
|
private Student representative;
|
65
|
private Student representative;
|
59
|
private Server host;
|
66
|
private Server host;
|
60
|
```
|
67
|
```
|
61
|
-* Exercise 2.12 What are the names of the following fields?
|
|
|
|
|
68
|
+
|
|
|
69
|
+### Exercise 2.12
|
|
|
70
|
+* What are the names of the following fields?
|
62
|
```
|
71
|
```
|
63
|
private boolean alive;
|
72
|
private boolean alive;
|
64
|
private Person tutor;
|
73
|
private Person tutor;
|
65
|
private Game game;
|
74
|
private Game game;
|
66
|
```
|
75
|
```
|
67
|
-* Exercise 2.13 In the following field declaration from the TicketMachine class
|
|
|
|
|
76
|
+### Exercise 2.13
|
|
|
77
|
+In the following field declaration from the TicketMachine class<br>
|
68
|
```
|
78
|
```
|
69
|
private int price;
|
79
|
private int price;
|
70
|
-```
|
|
|
71
|
-does it matter which order the three words appear in? Edit the TicketMachine class to
|
|
|
72
|
-try different orderings. After each change, close the editor. Does the appearance of the
|
|
|
73
|
-class diagram after each change give you a clue as to whether or not other orderings are
|
|
|
74
|
-possible? Check by pressing the Compile button to see if there is an error message.
|
|
|
75
|
-Make sure that you reinstate the original version after your experiments!
|
|
|
76
|
-* Exercise 2.14 Is it always necessary to have a semicolon at the end of a field declaration?
|
|
|
77
|
-Once again, experiment via the editor. The rule you will learn here is an
|
|
|
78
|
-important one, so be sure to remember it.
|
|
|
79
|
-* Exercise 2.15 Write in full the declaration for a field of type int whose name is
|
|
|
80
|
-status.
|
|
|
81
|
-* Exercise 2.16 To what class does the following constructor belong?
|
|
|
|
|
80
|
+```<br>
|
|
|
81
|
+does it matter which order the three words appear in?
|
|
|
82
|
+* Edit the `TicketMachine` class to try different orderings. After each change, close the editor.
|
|
|
83
|
+ * Does the appearance of the class diagram after each change give you a clue as to whether or not other orderings are
|
|
|
84
|
+possible?
|
|
|
85
|
+ * Check by pressing the compile button to see if there is an error message.
|
|
|
86
|
+ * Make sure that you reinstantiate the original version after your experiments!
|
|
|
87
|
+
|
|
|
88
|
+### Exercise 2.14
|
|
|
89
|
+* Is it always necessary to have a semicolon at the end of a field declaration?
|
|
|
90
|
+* Once again, experiment via the editor.
|
|
|
91
|
+* The rule you will learn here is an important one, so be sure to remember it.
|
|
|
92
|
+
|
|
|
93
|
+
|
|
|
94
|
+### Exercise 2.15
|
|
|
95
|
+* Write in full the declaration for a field of type `int` whose name is `status`.
|
|
|
96
|
+
|
|
|
97
|
+### Exercise 2.16
|
|
|
98
|
+* To what class does the following constructor belong?
|
82
|
```
|
99
|
```
|
83
|
public Student(String name)
|
100
|
public Student(String name)
|
84
|
```
|
101
|
```
|
85
|
-* Exercise 2.17 How many parameters does the following constructor have and what are their types?
|
|
|
|
|
102
|
+
|
|
|
103
|
+### Exercise 2.17
|
|
|
104
|
+* How many parameters does the following constructor have and what are their types?
|
86
|
```
|
105
|
```
|
87
|
public Book(String title, double price)
|
106
|
public Book(String title, double price)
|
88
|
```
|
107
|
```
|
89
|
-* 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?
|
|
|
90
|
|
108
|
|
91
|
-Work all Exercises from 2.19 to 2.58 that are NOT marked *Challenge exercise*.
|
|
|
|
|
109
|
+### Exercise 2.18
|
|
|
110
|
+* Can you guess what types some of the `Book` class’s fields might be?
|
|
|
111
|
+* Can you assume anything about the names of its fields?
|
|
|
112
|
+
|
|
|
113
|
+Work all Exercises from 2.19 to 2.58 that are **NOT** marked *Challenge exercise*.
|
92
|
READ upto and INCLUDING section 2.15 of this chapter.
|
114
|
READ upto and INCLUDING section 2.15 of this chapter.
|