Final Project for Object-Oriented Programming (OOP) at PUCPR.
This is a comprehensive Java application designed to simulate real estate financing. It expands upon basic OOP concepts by introducing Custom Exceptions, Complex Polymorphism (Houses, Apartments, and Land), and robust Data Persistence.
Unlike standard financing calculators, this system implements specific business rules:
- Custom Exception Handling: Implements
AumentoMaiorDoQueJurosExceptionto prevent financial calculations that would violate specific interest rules (e.g., installments exceeding interest limits). - Expanded Model: Support for three property types with unique attributes:
- Casa: Calculates based on built area and land size.
- Apartamento: Includes garage spots and floor number logic.
- Terreno: Specific logic for commercial/residential zones.
- Language: Java (JDK 24)
- Design Pattern: Separation of Concerns (Main, Model, Util packages).
- Persistence:
- Serialization: Full object state saving/loading via
.datfiles. - Text Export: Human-readable
.txtreports.
- Serialization: Full object state saving/loading via
- Input Handling: Robust user interface class preventing invalid data entry (negative numbers, abusive interest rates).
- Interactive Console Menu: Select property type and input specific details.
- Smart Validation: Prevents crashes with
try-catchblocks for mismatch inputs. - Financial Simulation: Calculates total payment and monthly installments with compound logic.
- History Management: Automatically loads previous simulations upon startup.
- Clone the repository.
- Import the project into IntelliJ IDEA or Eclipse.
- Run
Main.javalocated insrc/main/. - Follow the on-screen prompts to simulate a financing.
Developed by Matheus Ramon - 2025