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.