COP3804

Spring, 2015

Assignment #1 –Library System phase I

Last updated 02/09/2015 05:40 pm

This program represents a simple library system, which could hypothetically be used by alibrary to maintain information on their items, members, requests, etc.

The system will be developed in several phases. This document describes the functionality to be implemented for phase I, due February 14th.

The library’s staff members would be using the system; from now on we will refer to these people as the “user”.

For phase I, we are just going to implement several classes, but we are not going to implement a user interface. I am providing you with code for theLibrarySystem_Phase1 class, which is the class that has the main method.

Important: All the classes that you implement are to provide a constructor with enough parameters to initialize all instance variables (all classes also have acopy constructor, except for the Library class). Additionally, all classes need to provide a getter and a setter method for all instance variables, as well as thetoString, equals, andcopy methods. (Do not provide a copy method for the Item or Book classes).

The toString method in each class returns a String with the value of all the instance variables including labels.

The equals method compares two objects of the same type: the calling object and the one passed as an argument. It has one parameter whose data type is Object and it returns true if the argument is an object of the same type, is not null, and has the same value for all fields as the calling object. Otherwise, it returns false.

The copy method returns a new object of the same class where every field has the same value as the calling object.

Member – This class represents a member of the library.

Private Instance Variables:

memberID of type int

firstName of type String

lastName of type String

phoneof type String

listOfRequestsof type ArrayList<Request

Public Instance Methods:

addRequest – This method doesn’t return a value and it has 1 parameter of type Request. It adds a copy of the Requestparameter to the listOfRequests instance variable.

Notes:

  • Exclude the memberIdand listOfRequestsfields from the comparison in the equals method.

Item – This class represents an item from the library that a member can check out or download.This is an abstract class.

Private Instance Variables:

itemID of type int

title of type String

genreof type String

targetAudienceof type String

availableof type boolean

Notes:

  • Exclude the itemIdand availablefields from the comparison in the equals method.
  • This class does not have a copy method.

Book – This is an abstract class that extends the Item class. It represents abook that a member can check out or download.

Private Instance Variables:

authorof type String

isbnof type String

Notes:

  • This class does not have a copy method.

PrintedBook – This class extends the Bookclass and implements the CanBeCheckedOut interface.It represents printed books.

Private Instance Variables:

coverTypeof type String

Public Static Constant:

DAILY_RATE of type double – initialize to 1.50 in the declaration.

Public Instance Methods:

calculateFee – this method overrides the implementation in the CanBeCheckedOutinterface, which doesn’t have a body, while this one provides the calculation. The value that this method returns is the value of the DAILY_RATE constant multiplied by the number of days parameter.

calculateFine – this method overrides the implementation in the CanBeCheckedOutinterface, which doesn’t have a body, while this one provides the calculation. The value that this method returns is the value of the DAILY_RATE constant multiplied by the number of days parameter multiplied by 0.25. In order words, a fine would be a quarter of the regular rate.

ElectronicBook – This class extends the Book class and implements the CanBeDownloaded interface.It represents downloadable electronic books.

Private Instance Variables:

fileTypeof type String

Public Static Constant:

FLAT_FEE of type double– initialize to 9.99 in the declaration.

Public Instance Methods:

calculateFee – this method overrides the implementation in the CanBeDownloadedinterface. It returns the value of the FLAT_FEE constant.

AudioBook – This class extends the Bookclass and it implements the CanBeDownloaded interface.It represents downloadable audio books.

Private Instance Variables:

durationof type double

extraCharge of type double

Public Static Constant:

FLAT_FEE of type double– initialize to 12.99 in the declaration.

Public Instance Methods:

calculateFee – this method overrides the implementation in the CanBeDownloaded interface. It returns the value of the FLAT_FEE constant plus the value of the extraCharge field

DVD – This class extends the Item class and implements the CanBeCheckedOut interface. It represents a DVD that a member can checkout.

Private Instance Variables:

videoNumberof type String

duration of type double

closedCaptionsof type boolean

calculateFee – this method overrides the implementation in the CanBeCheckedOutinterface. The value that this method returns is the value of the DAILY_RATE constant multiplied by the number of days parameter.

calculateFine – this method overrides the implementation in the CanBeCheckedOutinterface. The value that this method returns is the value of the DAILY_RATE constant multiplied by the number of days parameter multiplied by 2. In order words, a fine would be double the regular rate.

Request – This class represents a request a member makes to checkout an item.

Private Instance Variables:

memberID of type int

itemID of type int

requestDateof type String

dueDate of type String

status of type String

Library – This class represents the library that is using this software.

Private Instance Variables:

libraryName of type String

memberList of type ArrayList<Member

itemList of type ArrayList<Item>

requestList of type ArrayList<Request>

Public Instance Methods:

addMember – This method doesn’t return a value and it has 1 parameter of type Member. It adds the parameter to the memberList instance variable.

addItem – This method doesn’t return a value and it has 1 parameter of type Item. It adds the parameter to the itemList instance variable.

addRequest – This method doesn’t return a value and it has 1 parameter of type Request. It adds the parameter to the requestList instance variable.

The following is the code for the CanBeCheckedOut interface:

public interface CanBeCheckedOut

{

double calculateFee(int numDays);

double calculateFine(int numDays);

}

The following is the code for the CanBeDownloaded interface:

public interface CanBeDownloaded

{

double calculateFee();

}

Group Member Responsibilities:

Group Member 1 / Implementation of the Item and ElectronicBook classes.
Group Member 2 / Implementation of the Member and AudioBook classes.
Group Member 3 / Implementation of the Request and Book classes.
Group Member 4 / Implementation of the DVD and PrintedBook classes.