Sprint Challenge: Task Management System
還沒有人認領這個 Issue。
評估
研究方向
首先建立 issue 中描述的 tasks、management 和 main 套件,包括 Task 與專門的任務類型、TaskManager 以及 Main。使用列出的需求和驗收標準來引導設計,然後執行 Main,以驗證任務建立、完成、多型摘要,以及防止無效狀態。
由索引模型根據 Issue 內容生成。
描述
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.
- 主要語言
- 沒有語言資料
- 星號
- 1
- 分支
- 11
- PR 合併指標
- 30 天內沒有已合併 PR
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
CodeYourFuture/Module-Java 的其他 Issue
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐇 Size Small 📅 Sprint 1 Core
難度 1/5 1 小時以內 新手友好度 85/100
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐇 Size Small 📅 Sprint 1 Core
難度 1/5 1 小時以內 新手友好度 85/100
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 🐂 Size Medium 📅 Sprint 7 Core
難度 5/5 一週以上 新手友好度 35/100
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core
難度 5/5 一週以上 新手友好度 45/100
-
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 6 🦑 Size Large Core
難度 5/5 一週以上 新手友好度 25/100
查看 CodeYourFuture/Module-Java 的全部 Issue
相似的 Issue
-
bug customer-eng Durable Agents Inngest status: needs triage
難度 2/5 1-3 小時 新手友好度 82/100
-
bug
難度 2/5 1-3 小時 新手友好度 85/100
-
integration: elevenlabs
難度 1/5 1 小時以內 新手友好度 88/100
home-assistant/core#182944 · 1 則留言 ·
-
ai-observability bug team/ai-observability
難度 2/5 1-3 小時 新手友好度 78/100
-
難度 2/5 1-3 小時 新手友好度 78/100
vicharanashala/fln#563 ·