Saturday, November 10, 2012

Object oriented design for a library to borrow and renew books

Object oriented design for a library to borrow and renew books

A typical library has a set of books which the users can borrow for a certain period of time and return back. Users may choose to renew the return date if they feel they need to more time to read the book. We are trying here to design an online library.

The typical user actions with this online library would be

  •  sign in/register
  •  search books
  •  borrow books
  •  renew the return date for any of the books borrowed
  •  view his profile(check his details, list of books he borrowed )

The online library should support all the above actions. It must keep track of the different books in the library currently available for users to borrow and also the books already borrowed bu users. Put it simply the inventory should be managed.

Going through the above description we can think of these components in the system:

  1. User
  2. Book
  3. BorrowTxn -> record for the event for book b is borrowed by user u
  4. InventoryManager -> manages the books in the library. Adds new books, remove books and respond to book search requests
  5. LibraryManager-> Allows user interaction with the library like logging in, borrowing, renewal and return.

Below is the class diagram which depicts how these components inter-operate 



The Library Manager(LibManager) interacts with the inventory manager for responding to user search queries. Each borrow operation would result in the creation of a BorrowTxn which encapsulates the book details, borrowing user details and the return date. The inventory state is updated accordingly(i.e. the borrowed book is no longer available for borrowing). Similarly when a book is returned the inventory state is updated.

When the book return date is renewed the inventory state is not changed but the borrow transaction is updated accordingly.

4 comments:

  1. is there some Library class? Where do all books exist? How does InventoryManager know if requested book is exists/borrowed?
    how does User see his profile? I created Account class encapsulated userId and books he borrowed which is updated by LibManager and might be shown to User at any moment.

    ReplyDelete
  2. This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free
    Scissor Lift Manufacturer in Bangalore | Goods Lift Manufacturers in Bangalore

    ReplyDelete
  3. Your blog is filled with unique good articles! I was impressed how well you express your thoughts.

    NTES App Free Download | Download NTES App | NTES App APK

    ReplyDelete