Design: Encapsulation and Information Hiding in Object-Oriented Design
Focus on designing classes and interfaces demonstrating encapsulation and information hiding. Out of scope: database persistence, UI design, network communication.
Functional Requirements
FR1: Design a simple library management system where book details are protected from direct modification.
FR2: Allow users to borrow and return books through controlled methods only.
FR3: Ensure internal data like book availability and user borrowing history are not directly accessible.
FR4: Provide clear interfaces for interacting with books and users without exposing internal data structures.
Non-Functional Requirements
NFR1: System should prevent unauthorized changes to book details and user data.
NFR2: Operations like borrowing and returning books must validate rules before changing state.
NFR3: The system should be easy to maintain and extend without exposing internal implementation.