-Your core task is to implement a “Library system” in Java, using advanced elements of the language (e.g. encapsulation, information hiding, inheritance, and polymorphism), and complex data elements and data structures. You are also expected to cover other aspects of the software development lifecycle process, namely requirements gathering/elicitation, system design, system documentation and testing. Your system must follow the Object- Oriented paradigmRequirements:-A class that represents a physical book, i.e. a resource that can be borrowed etc.o Data fields: the ISBN, a library member object (which represents the person currently holding the book), i.e. a typical library user (see respective class below), and a string description of thedamages for the book. Plus, any other data fields you feel are required.o Functionality:§ All getter & setter methods. The setter method for the damages should concatenatethe value of its string parameter to any previously recorded damages.§ A method that checks if a book is available: returns true if the value of the librarymember data field is null. Otherwise, it returns false.§ Amethodthatprintsallthedetailsofabook.Whatifthevalueofthelibrarymemberdata field is null?- A class that represents an electronic resource, e.g. e-book, journal article etc.o Data fields: a list/collection that stores devices (see respective class below) that can be usedby a library member in order to access the resource. Plus, any other data fields you feel arerequired.o Functionality:§ All getter & setter methods, if applicable.§ A method that prints all the details of an electronic resource.§ A method that accepts a device object as a parameter, and appends the object at theend of the device list/collection.- A class that represents an electronic device (e.g. a computer, a tablet, an e-book reader etc.) in the library building. Library members can use a device to access electronic resources.o Data fields: a description of the device location and a boolean that indicates the availability of the device. Plus, any other data fields you feel are required.o Functionality:§ All getter & setter methods.§ A method that prints all the details of an electronic device. How would you print the availability data field?§ A method that checks the availability of a device: returns true if the device is available. Otherwise, it returns false.
Object oriented programming @ CIS, University of Strathclyde- A class that represents a library member, i.e. a typical user of a library (e.g. student, academic) that can borrow/return books and/or access electronic resources.o Data fields: a list/collection that stores the books currently borrowed by a library member, and a field that stores the messages/notifications received. Plus, any other data fields you feel are required.o Functionality:§ Allgetter&settermethods,ifapplicable.Thesettermethodforthemessagesshouldconcatenate the value of its string parameter to any previously recorded messages.§ A method that prints all the details of a library member.§ A method that prints all the messages received by a library member.§ A method that accepts a book object as a parameter and appends this object at theend of the list that stores the books currently borrowed by a library member.
- A class that represents the library.o Data fields: a list/collection that stores library resources, i.e. the library catalogue. Based onthe above, a library resource can be a physical book or an electronic resource. Plus, any otherdata fields you feel are required.o Functionality:§ All getter & setter methods, if applicable.§ A method that prints all the details of the library.§ A method that checks if the catalogue contains a resource. The method accepts aparameter, i.e. the resource object. It returns true if the resource is contained in thecatalogue. Otherwise, it returns false.§ A method that simulates editing the title of a resource. The method accepts twoparameters: the resource object to edit, and the new title. What if the resource is notin the catalogue?§ A method that searches the catalogue by resource object. The method accepts aparameter, i.e. the resource object. It returns the resource object if the resource iscontained in the catalogue. Otherwise, it returns null.§ A method that searches the catalogue by ISBN. The method accepts one parameter,i.e. the ISBN, and prints the details of all resources with this ISBN. At the end, it also prints the total amount of resources found. What if a resource is an electronic resource?
§ A method that searches the catalogue by author name. The method accepts one parameter, i.e. the author’s name, and prints the details of all resources by this author. At the end, is also prints the total amount of resources found.§ A method that removes a resource from the library catalogue. The method accepts a parameter, i.e. the resource object to remove. What if this resource is not in the catalogue?§ A method that removes a resource at a specific position in the library catalogue. Similar to the previous method, but the parameter represents a position in the catalogue. What if the specified position does not exist in the catalogue?§ Amethodthatprintsthedetailsofallavailablebooks,i.e.booksnotcurrentlyonloan. What if a resource in the library catalogue is an electronic resource, i.e. not a physical book?§ A method that returns the number of resources in the library catalogue.§ A method that simulates adding a resource to the catalogue. The method accepts an object as a parameter and appends this object at the end of the library catalogue. If the object already exists in the catalogue, the method should reject it and print anappropriate error message.§ A method that takes a book object and a library member object as parameters, andsimulates the process of lending a book: the library member data field of the book parameter is set to the value of the library member parameter, and the book parameter is added to the list of currently borrowed books for the library member parameter. The operations cannot be performed in the following cases:• The book is not in the catalogue.• The book is currently borrowed by another library member.• The size of the list that stores the books currently borrowed by this librarymember is greater than 5. How does this requirement affect the functionalityin another class/other classes?• Appropriate error messages should be printed in all above cases!§ A method that simulates the process of accepting a book return. The method takes three parameters: the book object to return, a boolean that indicates whether a damage is to be recorded, and the damage description. The library member data field of the book parameter is set to null, and if a damage is to be recorded, the damages data field of the book is updated using the value of the damage parameter. The operations cannot be performed if the book is not in the catalogue, in which case an appropriate error message should be printed. What if the parameter resource is an electronic resource?
§ A method that simulates sending messages/notifications to library members. The method accepts one parameter: the message. The message is sent to all library members currently holding physical books.§ A method that prints the details of all physical book resources in the catalogue.§ A method that prints the details of all electronic resources in the catalogue.A few important points:- The final version of your library system must use inheritance. Your system is expected to have: at leastone superclass (parent) with at least two subclasses (children). It is your responsibility to specify theappropriate inheritance hierarchy/relationships. Please also check the marking scheme.- The above is the set of compulsory requirements, i.e. you must complete these correctly in order toqualify for full marks.- Classes: I have provided only a sub-set of data fields per class. You need more in order to qualify for fullmarks. For example, a library member will probably have a name data field. Use your judgement. In other cases, the data fields are implied in the description of the requirements and/or by a question. For example, the author name for a book is implied in the description of the library class.- Functionality: the requirements are strict; unless I have made a mistake (e.g. wrong parameters etc.), in which case I am happy to acknowledge and revise the requirements. Ask me if in doubt.- Error checking: the above requirements contain some error checking. In other cases, error checking is implied by asking you a question.- Error messages: appropriate error messages should be printed in all cases of error checking.- For all methods that take in objects as parameters, null values should be rejected, and appropriateerror messages should be printed on the screen.