Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Need help from a human being!!! project - 3 You will be writing a Library simulator involving multiple classes. You will write the LibraryItem, Patron
Need help from a human being!!!
project
You will be writing a Library simulator involving multiple classes. You will write the LibraryItem, Patron and Library classes, and the three classes that inherit from LibraryItem Book Album and Movie All data members of each class should be marked as private a leading underscore in the name Since they're private, if you need to access them from outside the class, you should do so via get or set methods. Any get or set methods should be named per the usual convention get or "set followed by the name of the data member
You MUST: Create two books; Create two patrons; Add books and patrons to library holdingsmembership; Increment date, have patron pay fine, check fine amount.
Here are descriptions of the three classes:
LibraryItem:
A LibraryItem object represents a library item that a patron can check out from a library. It has six data members:
libraryitemid a unique identifier for a LibraryItem you can assume uniqueness, you don't have to enforce it
title cannot be assumed to be unique
location a LibraryItem can be ONSHELF", ONHOLDSHELF", or "CHECKEDOUT"
checkedoutby refers to the Patron who has it checked out if any
requestedby refers to the Patron who has requested it if any; a LibraryItem can only be requested by one Patron at a time
datecheckedout when a LibraryItem is checked out, this will be set to the currentdate of the Library
The LibraryItem methods are:
init method takes a library item ID and title as parameters; checkedoutby and requestedby should be initialized to None; a new LibraryItem's location should be on the shelf
getlocation returns the Library Item's location
other get and set methods as needed
BookAlbumMovie:
These three classes all inherit from LibraryItem
All three will need an additional data member. For Book, it's a string called author. For Album, it's a string called artist. For Movie, it's a string called director
Each of the new data members will need a get method to return its value
All three will need a method called getcheckoutlength that returns the number of days that type of library item may be checked out for. For a Book it's days, for an Album it's days, and for a Movie it's days
Patron:
A Patron object represents a patron of a library. It has four data members:
patronid a unique identifier for a Patron you can assume uniqueness, you don't have to enforce it
name cannot be assumed to be unique
checkedoutitems a collection of LibraryItems that a Patron currently has checked out
fineamount how much the Patron owes the Library in late fines measured in dollars; this is allowed to go negative
The Patron methods are:
init method takes a patron ID and name as parameters
getfineamount returns the fineamount
other get and set methods as needed
addlibraryitem adds the specified LibraryItem to checkedoutitems
removelibraryitem removes the specified LibraryItem from checkedoutitems
amendfine a positive argument increases the fineamount, a negative one decreases it; this is allowed to go negative
Library:
A Library object represents a library that contains various library items, and is used by various patrons. It has three data members:
holdings a collection of the LibraryItems that belong to the Library
members a collection of the Patrons who are members of the Library
currentdate stores the current date represented as an integer number of "days" since the Library object was created
The Library methods are:
an init method that initializes the holdings and members as empty collections and initializes the currentdate to zero
addlibraryitem takes a LibraryItem object as a parameter and adds it to the holdings
addpatron takes a Patron object as a parameter and adds it to the members
lookuplibraryitemfromid returns the LibraryItem object corresponding to the ID parameter, or None if no such LibraryItem is in the holdings
lookuppatronfromid returns the Patron object corresponding to the ID parameter, or None if no such Patron is a member
checkoutlibraryitem
takes as parameters a patron ID and a library item ID in that order
if the specified Patron is not in the Library's members, return "patron not found"
if the specified LibraryItem is not in the Library's holdings, return "item not found"
if the specified LibraryItem is already checked out, return "item already checked out"
if the specified LibraryItem is on hold by another Patron, return "item on hold by other patron"
otherwise update the LibraryItem's checkedoutby datecheckedout and location
if the LibraryItem was on hold for this Patron, update requestedby
update the Patron's checkedoutitems
return "check out successful"
returnlibraryitem
takes as its parameter a library item ID
if the specified LibraryItem is not in the Library's holdings, return "item not found"
if the LibraryItem is no
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started