A collection of small Java console applications built to practice core Object-Oriented Programming (OOP) concepts. Each folder is a standalone project covering a different real-world scenario — from banking to e-commerce — while reinforcing fundamentals like encapsulation, constructors, method overloading, and inheritance.
- Classes:
SavingsAccount,BankApp - Concepts: Encapsulation (private fields with getters/setters), input validation (deposit/withdrawal amount checks), constructor initialization with default fallback for invalid deposits.
- Classes:
LibraryBook,LibraryApp - Concepts: Encapsulation, object instantiation, business-rule methods (
lendBookchecks copy availability before issuing).
- Classes:
Course(base),RegularCourse(extendsCourse),PremiumCourse(extendsCourse),CourseApp - Concepts: Inheritance, method overriding (
calculateTotalFee(),displayCourseDetails()), method overloading (calculateTotalFee(discountPercentage)), use ofsuper()to call parent constructors and parent methods,protectedaccess modifiers for subclass access.
- Classes:
Employee,EmpolyeeApp - Concepts: Encapsulation, conditional bonus logic based on performance rating,
Scanner-based interactive user input with validation loop (do-while).
- Classes:
Driver,DriverApp - Concepts: Constructor overloading (three different constructors for different initialization scenarios), method overloading (
calculateBonus()vscalculateBonus(customScore)), private helper methods (getBonusRate), input-safe setters usingswitchfor score validation.
- Classes:
Product,ProductApp - Concepts: Constructor overloading (three variants), method overloading (
calculateFinalPrice()vscalculateFinalPrice(seasonalDiscount)), encapsulation with validated setters (setMembershipTyperestricts to allowed values), layered discount calculation logic.
- Classes:
Movie,MovieRentalShop - Concepts: Java Collections (
ArrayList), Iterator for safe removal while looping, dynamic object management (add/remove/search), interactiveScanner-driven catalog builder.
| Concept | Where |
|---|---|
| Encapsulation | All projects (private fields + public getters/setters) |
| Constructor Overloading | Driver, Product, Course |
| Method Overloading | Driver, Course, Product |
| Inheritance | course/ (Course → RegularCourse, PremiumCourse) |
| Polymorphism (Method Overriding) | course/ (calculateTotalFee(), displayCourseDetails()) |
super keyword usage |
course/ package |
| Collections & Iterators | ArrayList/ (Movie Rental Shop) |
| Input Validation | bank/, Driver/, e_commerce/, devoloper/ |
- Language: Java
- Concepts: Core Java, OOP (Encapsulation, Inheritance, Polymorphism, Overloading)
- I/O:
java.util.Scannerfor interactive console input
Each project has its own App class with a main method. Compile and run any project individually, for example:
javac course/*.java
java course.CourseAppThis repository was built to strengthen practical understanding of Java OOP principles through hands-on, scenario-based mini-projects rather than isolated syntax exercises.