Starting from:

$25

CSE1242 -  COMPUTER PROGRAMMING II   - Programming Assignment  1 - Solved

In this homework, you will implement a simple rental system for libraries with the following object oriented programming class hierarchy:  

 
 
 

Dictionary 
 
 

 

Please find the class details in below.

1. Implement a Book class with the following UML diagram. 

 

 
Book 







id:  int 

title: String author: Author borrowed: boolean 













Book(int id, String title, Author author) 

Book(int id, String title) isBorrowed():boolean borrowed():boolean  returned():boolean toString(): String 

getter/setter methods for id, title, and author 
 

•      Book is the superclass of Dictionary class.

•      Book class has several data fields, getter/setter and toString methods.  

•      Each book should have an id, a title, an author (Author class will be shown in below), and a borrowed attributes:

o   id: a unique identifier for the book o title: title of the book o author: a reference variable for an Author class.

o   borrowed: a boolean variable indicates that the book is available or not.

•      Each book is created either with a unique id, a title, and an author arguments or with only a unique id and title arguments.

•      The isBorrowed method should find out if the book is available.  

•      The borrowed method should borrow the book. If it has been already borrowed, it returns false, and vice versa.   

•      The returned method should return the book. If it has been already returned, it returns false, and vice versa.   

•      The toString method should return a string that represents the book.  

o   Ex: Book name is The Da Vinci Code, Author is Dan Brown.

•      There are setter/getter methods.

 

2. Implement a Dictionary class with the following UML diagram. 

 

 
Dictionary 

definitions: int 







Dictionary( int id, String title, Author author,  int  definitions) 

Dictionary(int id, String title, int  definitions) getter/setter methods for the definitions attribute toString(): String 
 

•      Each Dictionary can be created either with a unique id, a title, an author, and definitions arguments or only with a unique id, a title, and definitions arguments .

o        The definitions data field stores the number of words in the dictionary.  You should invoke the superclass constructor(s) in Dictionary constructor(s). 

•      The getter and setter method for the data field definitions. 

•      The toString() method that returns a string description for the dictionary. 

o        Ex: Dictionary Name is Oxford Dictionary of English, definitions: 6000  

        3.   Implement a Person class with the following UML diagram.

 

 
Person 





name:  String birthDate: String   birthPlace: String  







Person(String name,  int birthDate ,  String  birthPlace) 

Person(String name,  int birthDate )  Person(String name) 

getter/setter / toString methods 
 

•      Person is the superclass of Author and Customer classes.

•      Each Person has a name, a birthDate, and a birthPlace data fields.  

•      Each person can be created with one of the three ways:

•      with a name, a birthDate and a birthplace,

§ Note that the birthDate is taken as a year (Ex:1980) in type of int, but you should store it as String in the class attribute.   with only a name and a birthdate,  with only a name.

•      There are setter/getter methods for each data field.  The toString() method describes the person.

•      Ex: Name: Ayse Caliskan, Birth Date: 1995, Birth Place: Istanbul

 

4. Implement an Author class with the following UML diagram.

 

 
Author 

publisher:  String 



Author(String name, String  publisher,   int    birthDate ) getter/setter and toString methods 
 

•      The publisher data field stores the company that publishes the author’s books.

•      You should invoke the superclass constructor in the Author constructor.

•      There are setter/getter methods for the publisher.  The toString() method describes the author.

•      Ex: Author is Dan Brown

 

 

 

 

 

 

        5.   Implement a Customer class with the following UML diagram.

 

 
Customer 





address:  String borrowedBook:  Book borrowABook: boolean 


 






Customer(String name, String birthPlace,  int    birthDate, String address) 

Customer(String name,  int    birthDate, String address) 

Customer(String name, String address)  Customer(String name, int birthDate) getter/setter / toString methods 
 

 

•      Each Customer has an address, a borrowedBook that stores the book that is borrowed by the customer, and a borrowABook that specifies whether the customer borrows a book (default false).

•      Each Customer can be created with one of the four constructors defined in the UML diagram above. You should invoke the superclass constructor(s) in these constructors.

•      There are getter and setter methods for the data fields address, borrowABook and borrowedBook.

•      You should perform necessary settings when a customer borrows or returns a book.

•      The toString() method returns a string description for the customer.

•      Ex:  Name: Ayse Caliskan, Birth Date: 1995, Birth Place: Istanbul           Address: 18 Green Brier Blv. 

 

6. Implement a Library class with the following UML diagram.

 

 
Library 





address:  String books: ArrayList<Book>  customers: ArrayList<Customer> 





















Library(String  address)  printOpeningHours():void printAddress():void  addBook(Book book): boolean  addCustomer (Customer customer): void  

borrowBook (String bookName, String personName): void  returnBook (String personName): void  printAvailableBooks (): void getBooks():ArrayList< Book>  getCustomers():ArrayList< Customer> getter/setter / toString methods 
 

•      Library class represents a library and manages a collection of books and customers.  

•      All libraries have the same hours: 9 AM to 5 PM daily.  

•      However, they have different addresses, customers (i.e. arrays of Customer objects) and book collections (i.e. arrays of Book objects).  

•      The types of customers and books should be ArrayList.  

•      The class must have the following methods:  

•      printOpeningHours: It should print the opening hours of the library.

§  Ex: Libraries are open daily from 9 am to 5 pm.

•      printAddress: It should print the address of the library.

§  Ex: 221B Baker St.

•      addBook: It should add the given book to the books list.

•      addCustomer: It should add the given customer to the customers list.

•      borrowBook: It should add the given book to the given customer.

§  Note that you should perform necessary checks whether the given bookName is in the library collection or the given customerName is in the customer list of the library. If not, print necessary warnings.

§  You should perform necessary checks whether the book is already borrowed by another custormer or the customer has already borrowed a book. Each Book can be given to a single Customer or each Customer can borrow a single Book.

§  The bookName and customerName are given to the method in Strings.  

 

•      returnBook: It should return the book borrowed by the given customer. If there is no such a customer, please print an error message.

§  Ex: Sorry, Ayse Caliskan is not a customer.

•      printAvailableBooks: It should print all the available books in the library by traversing the books list.

§  Ex:  Book name is The Da Vinci Code, Author is Dan Brown 

    Book name is A Tale of Two Cities, Author is Charles Dickens     Dictionary Name is Oxford Dictionary of English, definitions: 6000  getBooks: It should return the list of all books of the library.

•      getCustomers: It should return the list of all customers of the library.

 

 

 

7. We will give you a test class for your program (Test.java in the attachment).

•      An example console output of the test program is given in “consoleOutput.txt” (You are not required to do File I/O, the output is given in a file due to long output size).

•      You should check that your console output must be the same as the consoleOutput.txt

•      Please copy-paste your console output to a text file (ex: out.txt)

•      Then, compare the content of your output file with the given consoleOutput.txt

•      For Windows, you can compare the content of two files with the “fc” command. The usage is shown in the figure below:

 

  

•      In the figure above, outputConsole.txt and out.txt have the same content; on the other hand, outputConsole.txt and out2.txt have different contents.

 

•      This is a simple scenario to test your class implementations. There might be other test cases, too. Therefore, please pay attention to use the same class, method and variable names in your implementations.  

•      You are allowed to increase the number of methods in the classes; however, you cannot decrease the number of them. 

More products