Welcome to my Java development hub! This repository is a curated collection of projects designed to master Clean Code principles, Data Structures, and Robust Error Handling. From logic-based games to payroll management, these applications showcase a journey from procedural syntax to advanced Object-Oriented Design.
- Language: Java (JDK 11+)
- Development Environments: IntelliJ IDEA, BlueJ, VS Code
- Version Control: Git & GitHub
- Core Concepts: Abstraction, Polymorphism, Custom Exception Handling, File I/O
A professional management tool built to handle complex corporate structures using Inheritance and Abstraction.
- Key Functionality: Manages a database of Full-Time and Part-Time employees with automated salary calculations.
- Technical Highlight: Uses an
abstract class Employeeas a blueprint to ensure modularity and scalability. - Core Logic: Implements Polymorphism to calculate distinct pay scales (Monthly vs. Hourly) through method overriding.
An interactive CLI application focused on User Experience and Resilient Input Validation.
- Key Functionality: A multi-round logic game with proximity-based hints and session management.
- Technical Highlight: Implements a custom
NotValidExceptionclass to prevent application crashes during invalid user input. - Persistence: Features a session-continue prompt every 5 guesses while maintaining a total "lifetime" guess counter.
| Concept | Implementation in this Repo |
|---|---|
| Encapsulation | Protecting data integrity using private fields and public accessors (Getters/Setters). |
| Inheritance | Building hierarchical relationships between Employee types to reduce code redundancy. |
| Polymorphism | Overriding base methods to provide specific logic for different employee categories. |
| Error Handling | Using try-catch blocks and custom Exceptions to create crash-proof software. |
Developing this portfolio allowed me to bridge the gap between "learning a language" and "building a system."
- Code Readability: Moving away from "magic numbers" toward descriptive variable names.
- Modularity: Separating "Game Logic" from "Driver Classes" to make code reusable.
- User-Centric Design: Anticipating user errors (like entering text when a number is required) and handling them gracefully.
This project is open-source and available under the GNU General Public License v3.0.