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:

  1. Clone the repository: git clone https://github.com/BloomTechBackend/bd-unit-1-sprint-2-challenge
  2. Open the project in IntelliJ IDEA
  3. Read the README.md file for detailed instructions
  4. Implement the required classes and functionality
  5. Run the provided tests to verify your solution
  6. 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:

  1. Commit your changes: git commit -am "Completed sprint challenge"
  2. Push to your repository: git push origin main
  3. 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!