LAB #6:
INHERITANCE + POLYMORPHISM
Using an
inheritance hierarchy, design a Java program to model items at a library
(books, journal articles, videos and CDs.) Have an abstract superclass called Item and include common information that the library must have for
every item (such as unique identification number, title, and number of copies).
No actual objects of type Item will be created
- each actual item will be an object of a (non-abstract) subclass. Place
item-type-specific behavior in subclasses (such as a video's year of release, a
CD's musical genre, or a book's author).
More in detail:
1. Implement an abstract superclass called Item and define all common operations on this class (constructors,
getters, setters, equals, toString, print, checkIn, checkOut, addItem, etc). Have private data for: identification number, title,
and number of copies.
2. Implement an abstract subclass of Item named WrittenItem and define all common operations on this class.
Added private data for author.
3. Implement 2 subclasses of WrittenItem: Book and JournalPaper.
3.1. Class Book: no new private data.
When needed, override/overload methods from the superclass.
3.2. Class JournalPaper: added private
data for year published. When needed, override/overload methods from the
superclass.
4. Implement another abstract subclass of Item named MediaItem and define all common operations on this class. Added private data
for runtime (integer).
5. Implement 2 subclasses of MediaItem: Video and CD.
5.1. Class Video: added private
data for director, genre and year released. When needed, override/overload methods
from the superclass.
5.2. Class CD: added private
data for artist and genre. When needed, override/overload methods from the
superclass.
Write the definitions of these classes and a client program (your
choice!) showing them in use. Some possible output could look like this:
Display info about a book
ID:
123456
TITLE:
To kill a mocking bird
AUTHOR:
Harper Lee
NUMBER
OF COPIES: 5
After the book was checked-out, the number of copies changed. The new
info is:
Display
info about a book
ID:
123456
TITLE:
To kill a mocking bird
AUTHOR:
Harper Lee
NUMBER
OF COPIES: 4
After a new copy of this book was added, the number of copies changed.
The new info is:
Display
info about a book
ID:
123456
TITLE:
To kill a mocking bird
AUTHOR:
Harper Lee
NUMBER
OF COPIES: 5
Display
info about a video
ID:
1111
TITLE:
The Godfather
DIRECTOR:
Francis Ford Coppola
GENRE:
drama
YEAR
RELEASED: 1981
RUNTIME:
215.0 minutes
NUMBER
OF COPIES: 3
After the video was checked-in, the number of copies changed. The new
info is:
Display
info about a video
ID:
1111
TITLE:
The Godfather
DIRECTOR:
Francis Ford Coppola
GENRE:
drama
YEAR
RELEASED: 1981
RUNTIME:
215 minutes
NUMBER
OF COPIES: 4
...
...
Notes:
A. The lab will NOT be graded, do NOT hand anything in to the instructor.
B. The lab should be completed by the start of the next scheduled
lab class. Save the .java files on your disk and e-mail them
(attachments) to Vishal Patel at vpatel12@students.towson.edu
Very important: Make sure that you have COSC 237.section, your
name, and Lab#6 in the Subject box of your e-mail.
C. In case you have any problems, contact the instructor or the TA for
assistance.