1 Abstract Classes
2 Designing a Game
Version: 5.2.1

Lab 4

Goals: The goals of this lab is to learn how to design and use abstract classes, and how to design intteractive games using the javalib game libraries.

1 Abstract Classes

The following class diagram represents a library system that records the books that have been borrowed. There are three kinds of books: regular books, reference books, and audio books.

Reference books can be taken out for two days, other kinds of books for two weeks. The overdue fees are 10 cents per day for reference books and regular books, but 20 cents per day for audio books.

For reference book there is no author, only the title.

The day when the book it taken out and the day due are counted as days since the library opened in 2001. So, possibly, an audio book taken out today would have been recorded as taken out on the day 4300 with due date on the day 4314.


               | IBook |


                  / \




       |                  |                  |

+---------------+  +---------------+  +---------------+

| Book          |  | RefBook       |  | AudioBook     |

+---------------+  +---------------+  +---------------+

| String title  |  | String title  |  | String title  |

| String author |  | int dayTaken  |  | String author |

| int dayTaken  |  +---------------+  | int dayTaken  |

+---------------+                     +---------------+

For all methods, think carefully whether they should be designed as concrete methods in the abstract class, abstract methods that are defined in the concrete classes, or concrete methods in the abstract class that are overridden in one of the concrete classes.

2 Designing a Game

Learn how to draw shapes using the javalib.funworld library.


To see how a game is designed, start a new project named MyFirstGame. Download the file BlobWorldFun.java, add it to the project. Download the image small-shark.png and add it to your project folder. Add the javalib.jar file to the project’s class path. Run the project (the tests are defined in the ExamplesBlobWorld class.

The program illustrates the use of the javalib.funworld library that allows you design an interactive graphics-based game controlled by timer events, key presses, and mouse clicks.}

Apple Orchard Game

You are now ready to design your first game. The canvas has a picture of apple tree. An apple falls down (controlled by the tick events). The player moves the basket on the ground, trying to catch the falling apple. The game ends when the player has caught ten apples. (Optionally, you may show the amount of time the player took to catch the apples.)

Do as much as you can in the lab. Finish this game as a part of your protfolio problems.