Sprint 2: OOP Principles and File I/O Integration
Expand your Sprint 1 project using inheritance hierarchies, polymorphism, and abstract classes to create flexible, maintainable designs. Integrate robust error handling with exceptions and persistent data storage using file I/O to build a professional-grade application.

Master Advanced OOP: Design with inheritance and interfaces, implement polymorphic behavior, enforce encapsulation with access modifiers, and handle real-world challenges through exception handling and file persistence.
Key Elements
| Element | Details |
|---|---|
| Topics covered | Inheritance, Polymorphism, Abstract Classes, Interfaces, Exception Handling, File I/O |
| Teams | Same teams as Sprint 1 (2–4 students per team) |
| Points | Sprint 2: 10 points |
| Deadline | December 16 (end of day) |
| Submission | One team submission: repository link (or ZIP) containing updated requirements, revised class diagram (PNG/PDF), exception handling documentation, and source code |
What to Deliver
You must deliver one zipped folder per group that contains all Sprint 2 materials. The zipped folder must include:
-
Updated document: Revise your Sprint 1 requirements to reflect new scope. Include a discussion of your inheritance hierarchy (parent/child classes, abstract classes, or interfaces), the exception handling strategy employed, and the file I/O design (what data is persisted, file format, and how it integrates with your application). Embed an updated UML class diagram showing inheritance relationships, abstract classes/interfaces, and associations.
-
Exception handling documentation: Make sure your document explains
-
What exceptions your application throws and catches
- Which situations trigger exceptions (file not found, invalid input, etc.)
-
How your application recovers gracefully
-
Source code: Extend your Sprint 1 code with:
-
At least one abstract class or interface defining shared behavior across related classes
- At least two concrete subclasses that extend/implement the abstract parent
- Polymorphic method calls demonstrating runtime behavior selection
- Exception handling with try-catch blocks for at least two distinct error scenarios
- File I/O operations (read and write) using try-with-resources or appropriate resource management
- Clean, professional code with proper access modifiers (private, protected, public) enforcing encapsulation
Project Scope
Expand your Sprint 1 project by:
- Identifying opportunities for inheritance (e.g., different types of users, items, or entities that share common behavior)
- Creating an abstract parent class or interface that captures shared functionality
- Implementing at least two specialized subclasses with unique behavior
- Adding user input validation and file operations with robust exception handling
- Persisting core data to a file and restoring it on application restart
Grading Rubric
| Category | Points | Criteria |
|---|---|---|
| Project Defense | 3 | Team presents design decisions, explains inheritance strategy, demonstrates exception handling in action |
| Design & Implementation | 3 | Updated code shows inheritance hierarchy, interfaces, proper associations; design rationale documented |
| Exception Handling & File I/O | 2 | At least 2 distinct exceptions caught and handled gracefully; File I/O with try-with-resources; data persists and restores correctly |
| Code Quality & Documentation | 2 | Clean code with proper access modifiers; comments explain non-obvious logic; documentation is professional and complete |
| Total | 10 |
Submission Checklist
Make sure to check the following before you submit
- Same team as Sprint 1
- Updated requirements document (3-5 pages)
- Revised UML class diagram with inheritance and relationships
- Fully functional source code with inheritance, polymorphism, exceptions, and file I/O
- All files compressed into one ZIP folder
- Submitted by December 16