Arab Academy for Science and Technology and Maritime Transport
College of Computing and Information Technology
Course Title: Object Oriented Programming Course Code: CCS2303
TAs: Eng. Mohammed Osama Badway, Eng. Sara Mohamed
Programming Project
Project Description:
Imagine you are tasked with developing a simplified library management system. This system
should manage books, members, and the process of borrowing and returning books.
Requirements:
1. Design and Implement the following Classes:
o Book Class:
▪ Encapsulate book information:
▪ ISBN (String)
▪ title (String)
▪ author (String)
▪ availableCopies (int)
▪ Implement methods for:
▪ Checking book availability
▪ Increasing or decreasing available copies
o Member Class:
▪ Encapsulate member information:
▪ memberId (String)
▪ name (String)
▪ contact (String)
▪ Implement methods for:
▪ Checking member status (e.g., active, inactive)
o Library Class:
▪ Encapsulate library information:
▪ libraryName (String)
▪ Have an aggregation relationship with Book and Member classes.
▪ Implement methods for:
▪ Adding new books to the library
▪ Adding new members to the library
▪ Borrowing a book for a member
▪ Returning a book to the library
▪ Searching for books by title, author, or ISBN
▪ Displaying a list of all books or members
o BorrowedBook Class:
▪ Encapsulate information about borrowed books:
Page 1 of 2
▪ book (Book object)
▪ member (Member object)
▪ borrowDate (Date object)
▪ dueDate (Date object)
o FineCalculator Class:
▪ Implement an interface named FineCalculationStrategy.
▪ Create concrete classes implementing FineCalculationStrategy for different
fine calculation methods (e.g., per-day fine, fixed fine).
▪ The Library class should use the FineCalculationStrategy interface to
calculate fines for overdue books.
2. Demonstrate the following OOP Concepts:
o Abstraction: The FineCalculationStrategy interface provides an abstract
representation of fine calculation logic.
o Interface: The FineCalculationStrategy interface defines a contract for fine
calculation classes.
o Aggregation: The Library class aggregates Book and Member objects.
o Encapsulation: Data members within each class are private and accessed through public
methods (getters and setters).
o Inheritance: You have to create subclasses of Member (e.g., StudentMember,
FacultyMember) with specific borrowing privileges.
o Polymorphism: The Library class can use different FineCalculationStrategy
implementations interchangeably.
3. Create a Java program to test the functionality of your library management system.
Additional Considerations:
• Use appropriate data structures (e.g., ArrayLists) to store collections of books and members.
• Consider implementing error handling and input validation.
• Write clear and concise Java code with proper documentation.
Bonus:
• When the system starts, it calls the method load which load the data from a saved file named [Link].
• When the user exits the system, it calls the method save which save or overwrite the current saved file.
Rubic
• Program Functionalities [Total: 9 Points]
- [2 Marks] Classes & Encapsulation
- [2 Marks] Inheritance & Interface
- [1 Mark] Abstraction
- [2 Marks] Composition/ Aggregation
- [2 Marks] Polymorphism
• [1 Mark] Report
Page 2 of 2