Sprint Challenge - BD Unit 1 Sprint 2
Overview
This sprint challenge is designed to test your understanding of the concepts covered in BD Unit 1 Sprint 2, including classes, objects, access modifiers, class design, boolean logic, conditionals, enums, and exceptions.
You'll be building a Task Management System that incorporates all of these concepts into a cohesive application. This challenge will assess your ability to apply object-oriented principles to solve a practical problem.
Challenge Requirements
Task Management System
You'll create a task management system with the following components:
1. Task Class
- Private instance variables for id, title, description, dueDate, status, and priority
- Appropriate constructors with validation
- Getters and setters with proper encapsulation
- Methods to update task status
- Method to check if a task is overdue
2. TaskStatus Enum
- Define an enum with values: NOT_STARTED, IN_PROGRESS, COMPLETED, CANCELLED
- Include a description field for each status
- Implement a method to get all available statuses
3. Priority Enum
- Define an enum with values: LOW, MEDIUM, HIGH, URGENT
- Include a numeric value for each priority level
- Method to compare priorities
4. TaskManager Class
- Store and manage a collection of tasks
- Methods for adding, removing, and finding tasks
- Method to get tasks by status or priority
- Method to get overdue tasks
5. Custom Exceptions
- TaskNotFoundException: when a task cannot be found
- InvalidTaskException: when task data is invalid
Required Functionality
- Create tasks with different priorities and statuses
- Update task status and details
- Find tasks by ID, status, or priority
- Handle exceptions appropriately
- Include validation for all inputs
- Implement conditional logic for task status transitions
Assessment Criteria
Your solution will be evaluated based on the following criteria:
- Object-Oriented Design - Appropriate use of classes, inheritance, and encapsulation
- Code Quality - Clean, well-organized, and properly documented code
- Functionality - All requirements are implemented and working correctly
- Exception Handling - Proper handling of exceptions and edge cases
- Boolean Logic - Effective use of boolean expressions and conditional statements
- Enum Implementation - Correct implementation and usage of enum types
Getting Started
Follow these steps to get started with the sprint challenge:
- Clone the repository:
git clone https://github.com/BloomTechBackend/bd-unit-1-sprint-2-challenge
- Open the project in IntelliJ IDEA
- Read the README.md file for detailed instructions
- Implement the required classes and functionality
- Run the provided tests to verify your solution
- Submit your completed challenge by the deadline
Important Notes
- You have 3 hours to complete this challenge
- Read all requirements carefully before starting
- Focus on meeting the requirements before adding additional features
- Write clean, well-documented code
- Don't forget to handle edge cases and errors
Helpful Resources
Submission
When you're finished with the sprint challenge, submit your solution through GitHub:
- Commit your changes:
git commit -am "Completed sprint challenge"
- Push to your repository:
git push origin main
- Submit the link to your repository in the learning platform
Make sure all tests pass before submitting your solution.
Good luck with your sprint challenge!