Skip to content

umuthokelek/library-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š Library System – OOP Practice

A simple Java console application simulating a basic library system, built to practice object-oriented programming concepts from:

"The Object-Oriented Thought Process" – Matt Weisfeld


🎯 Concepts Practiced

  • Encapsulation
  • Abstraction & Inheritance
  • Polymorphism
  • Composition over Inheritance
  • Interfaces
  • Dependency Injection
  • SOLID Principles

βœ… SOLID Principles Applied

Principle Applied Explanation
S – Single Responsibility βœ… Each class has one job: loaning, user handling, notification, etc.
O – Open/Closed βœ… New book types (e.g., Article, Novel) can be added without changing existing logic.
L – Liskov Substitution βœ… Book references accept any subclass without breaking behavior.
I – Interface Segregation ⚠️ Not critical yet; single interface is enough for now.
D – Dependency Inversion βœ… LoanManager depends on NotificationService interface, not a concrete class.

πŸ“ Project Structure

  • Book, User, LoanRecord – domain entities
  • LoanManager, BookManager, UserManager – business logic
  • NotificationService, EmailNotificationService – interface & implementation
  • Library – orchestrator class
  • LoanManagerTest – unit tests using JUnit 5 & Mockito

πŸ›  Technologies

  • Java 21
  • Maven
  • JUnit 5
  • Mockito

πŸ§ͺ How to Run & Test

mvn clean test

About

basic library management system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages