[Buổi 27][Củng cố OOP cơ bản][Lab] Bài 2: Final Skeleton Checkpoint


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Final Skeleton Checkpoint

Bối cảnh

Đây là checkpoint mô phỏng Final Class Map bằng một skeleton nhỏ: Task và TaskBoard.

OJ chỉ chấm hành vi; giảng viên review trách nhiệm class.

Yêu cầu

  1. Class Task giữ id,title,done và behavior markDone/isDone.
  2. Class TaskBoard quản lý vector<Task> và behavior add, done, countDone.
  3. Đọc q command ADD/DONE/COUNT.
  4. DONE id in OK/NOT_FOUND; COUNT in số task done.

Yêu cầu tổ chức code

Phải có ít nhất hai class với responsibility tách biệt; không dùng inheritance.

Online Judge chấm output. Giảng viên có thể review thêm cấu trúc code để xác nhận học viên luyện đúng kỹ năng OOP của buổi.

Input

Dòng 1 q; q command ADD id title, DONE id, COUNT.

Output

Mỗi DONE/COUNT một dòng.

Ràng buộc

1≤q≤1000, id duy nhất khi ADD.

Ví dụ 1

Input

6
ADD T1 Code
ADD T2 Test
COUNT
DONE T1
COUNT
DONE X

Output

0
OK
1
NOT_FOUND

Giải thích

Hai task T1,T2 được ADD và ban đầu chưa done nên COUNT trả0. DONE T1 tìm thấy và markDone nên OK; COUNT tiếp theo là1. DONE X không có task tương ứng nên NOT_FOUND. Output 0, OK, 1, NOT_FOUND.

Ví dụ này cũng kiểm tra trách nhiệm giữa manager và object domain: lookup/điều phối được thực hiện ở lớp quản lý, còn object tự quyết định mutation hợp lệ của state riêng. Vì vậy sau mỗi lệnh, các query tiếp theo phản ánh một trạng thái nhất quán thay vì các field bị sửa rời rạc.

Ví dụ 2

Input

3
COUNT
ADD A Task
COUNT

Output

0
0

Giải thích

COUNT đầu khi board rỗng là0. Sau ADD A, task vẫn chưa done nên COUNT vẫn0. Ví dụ xác nhận add không tự đánh dấu hoàn thành.

Ví dụ này cũng kiểm tra trách nhiệm giữa manager và object domain: lookup/điều phối được thực hiện ở lớp quản lý, còn object tự quyết định mutation hợp lệ của state riêng. Vì vậy sau mỗi lệnh, các query tiếp theo phản ánh một trạng thái nhất quán thay vì các field bị sửa rời rạc.

Thông tin học tập

  • Module: M07
  • Buổi: B27
  • Loại bài: LAB
  • Độ khó: Medium
  • Concepts: class design, responsibilities, skeleton, private state, public behavior
  • Giới hạn kiến thức: B01-B27
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo