Classes Review
Gnome
A Gnome has a double precision height in meters and an integer weight in kilograms. When you make a new Gnome, if you do not specify the weight it is assumed to be 10kg.
Gnome a = new Gnome(0.37, 4); // 0.37m, 4kg
Gnome b = new Gnome(0.61); // 0.61m, 10kg
The Gnome class should have the following methods:
public void grow()
: Increase the height by 0.1m.public void eat()
: A Gnome gains 1kg every 3 times it eats.public String see()
: Returns a string showing height and weight: “ht: 0.37m, wt: 4kg” for the Gnomea
above.
- Write the complete
Gnome
class. - Demonstrate its use by making a 12kg, 80cm tall gnome, having it
grow and then eat 5 times. Print out what you
see()
: it should be 0.9m and 13kg.
ShootingStar
[This class had problems, was unclear and the details of tick() are not important now.]
The universe schedules shooting stars to appear at a certain time. A
shooting star has an appearTime
(double) and a brightness
(int),
both of which are set in the constructor.
The current time in “ticks” when a shooting star is constructed is
always 0. A shooting star will keep track of time on its own (when
tick()
is called, time passes).
The constructor you must support is:
// a star that appears at time 3.7 with brightness 8
ShootingStar c = new ShootingStar(3.7, 8);
The methods you need are:
public void tick()
: Called by the universe to increase the current time by one. Do not call this in your code.public void explode()
: Makes brightness = 1000 for the next 6 ticks, then brightness becomes 0.public int getBrightness()
: Return the brightness for the current time (as the shooting star knows). The reported brightness is zero before the star appears.
How should it work?
ShootingStar c = new ShootingStar(3.7, 8);
for(int t=0; t<12; t++) {
System.out.println(t+" shows "+c.getBrightness());
c.tick();
if (t==4) c.explode();
}
Code above gives the output:
0 shows 0
1 shows 0
2 shows 0
3 shows 0
4 shows 8
5 shows 1000
6 shows 1000
7 shows 1000
8 shows 1000
9 shows 1000
10 shows 1000
11 shows 0
12 shows 0