Sprint Challenge: Task Management System
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par créer les packages tasks, management et main décrits dans l’issue, avec Task et des types de tâches spécialisés, TaskManager et Main. Utilisez les exigences et les critères d’acceptation indiqués pour guider la conception, puis exécutez Main afin de vérifier la création et l’achèvement des tâches, les résumés polymorphes et la prévention des états invalides.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Sprint Challenge: Task Management System
The code you write for this challenge is mandatory homework and should be completed and sent in a PR for review before class.
This challenge combines all the object-orientated programming concepts you've learned so far. You'll see how classes, encapsulation, inheritance, polymorphism, packages, and static/final keywords form a cohesive system for building well-structured Java applications.
Background
You are working for a company that wants to track different types of tasks in a project. Each task has a description, a unique identifier, and a completion status. Some tasks have special behaviour or additional data, such as deadlines or priority levels.
Your job is to create a small system that models tasks, enforces valid state, and allows tasks to be managed using polymorphism.
Requirements
Design a system that models tasks, manages them, and prints a simple summary of task states to the console.
Task Behaviour
All tasks should:
- Have a unique identifier
- Have a human-readable description
- Be able to be completed
- Prevent invalid states, e.g. cannot be completed twice
Specialised Task Types
The system must support at least two specialised task types. These types should:
- Inherit from the base Task class
- Add additional state or behaviour of their own
- Behave differently at runtime when treated as a generic Task
Some examples could be a timed task with a deadline, or priority task with prioritisation
Task Management
Create a TaskManager class responsible for:
- Storing tasks (using a fixed-size array, e.g. max 10 tasks)
- Adding new tasks
- Completing tasks by ID
- Returning tasks based on completion status
- The TaskManager should not need to know concrete task types
Code Organisation
Your code should be organised into multiple packages:
- tasks → contains Task and specialised task types
- management → contains TaskManager
- main → contains Main class with a main method to demonstrate behaviour
Acceptance Criteria
The system should:
- Log task summaries to the console in a human-readable format
- Show each task's ID, description, type, and completion status
- Demonstrate polymorphism at runtime (e.g., calling overridden methods on different task types without checking type)
- Prevent any task from entering an invalid state
- Compile and run without errors
- Use proper encapsulation (no public fields)
- Use final or static where appropriate
Main method expectations:
- Create a TaskManager
- Add several different task types
- Complete some tasks
- Print task summaries to the console
Developer Guidance (May just use for reference)
Let's start by modelling the data:
Class Task
- Fields:
- private final int id (unique)
- private String description
- private boolean completed
- Methods:
- public void complete() → mark as completed, prevent double-completion
- public String getStatus() → returns a human-readable status
- Consider using static for generating unique IDs
Specialised Tasks
- Create at least two subclasses (e.g., TimedTask, PriorityTask)
- Add additional fields (e.g., deadline, priority)
- Override methods to demonstrate polymorphic behaviour
TaskManager
- Fields:
- private Task[] tasks
- private int taskCount
- Methods:
- public void addTask(Task task)
- public void completeTask(int id)
- public Task[] getTasksByStatus(boolean completed)
Main
- Create a simple demo of your system, showing tasks being added, completed, and summaries printed
Reflection Questions
- Where did polymorphism remove the need for conditional logic?
- Which responsibilities are shared across all tasks, and which are specific?
- Where did encapsulation prevent misuse of an object?
- If a new task type were added, how much existing code would need to change?
Submission & Review
Fork the coursework repo to your own GitHub account.
Make regular small commits with clear messages.
When you are ready, open a Pull Request to the CYF repo. Make sure you fill in the PR template provided.
A volunteer will review your submission and send you feedback.
- Langage dominant
- Aucune donnée de langage
- Étoiles
- 1
- Forks
- 11
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de CodeYourFuture/Module-Java
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐇 Size Small 📅 Sprint 1 Core
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐇 Size Small 📅 Sprint 1 Core
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
Sprint 7 - Sprint Challenge 2 Ouverte🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐂 Size Medium 📅 Sprint 7 Core
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
-
Sprint 7 - Challenge 1 Ouverte🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
-
Sprint 6 Challenge Ouverte🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 6 🦑 Size Large Core
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Toutes les issues de CodeYourFuture/Module-Java
Issues similaires
-
has_tail_capacity wraps and get_writable_raw_unchecked commits raw_len before the bounds check Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
stratum-mining/stratum#2404 ·
-
opensubtitlescom: moviehash never sent when opensubtitles (.org) is not in the provider list Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Diaoul/subliminal#1382 ·
-
fix(errors): EHOSTUNREACH from a happy-eyeballs connect is reported as a resolver error (STAMP-80) Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
snapshot-labs/stamp#666 ·
-
fix(api): prevent leaderboard SSE heartbeat from starting after disconnect during initial load Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
GauravKarakoti/SecureFlow#1070 · 1 commentaire ·
-
triage/confirmed
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
agentscope-ai/agentscope#2775 ·