[Buổi 27][Củng cố OOP cơ bản][WS] Bài 1: Mini Project OOP Basic 1.0


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Mini Project OOP Basic 1.0

Bối cảnh

Mini Project 1.0: hệ thống thư viện nhỏ với Book và Library.

Core tập trung class responsibility, private state, constructor hợp lệ và command flow.

Yêu cầu

  1. Book: id,title,available private; borrow/returnBook.
  2. Library: vector<Book>, addBook, borrowById, returnById, countAvailable.
  3. Command ADD/BORROW/RETURN/COUNT.
  4. ADD id title; BORROW/RETURN in OK/FAIL; COUNT in số sách available.

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

Phải tách ít nhất BookLibrary; không dùng inheritance/polymorphism.

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.

Output

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

Ràng buộc

1≤q≤2000, ADD id duy nhất.

Ví dụ 1

Input

8
ADD B1 CPP
ADD B2 OOP
COUNT
BORROW B1
COUNT
BORROW B1
RETURN B1
COUNT

Output

2
OK
1
FAIL
OK
2

Giải thích

ADD B1 và B2 tạo hai sách available, nên COUNT=2. BORROW B1 thành công làm available false, COUNT=1. BORROW B1 lần nữa fail vì đã mượn. RETURN B1 thành công khôi phục available, COUNT cuối=2. Output theo đúng state transition của Book và Library.

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
BORROW X
RETURN X

Output

0
FAIL
FAIL

Giải thích

Library rỗng nên COUNT=0. BORROW X và RETURN X đều không tìm thấy book, vì vậy cả hai trả FAIL và không làm thay đổi state.

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: WORKSHOP
  • Độ khó: Medium
  • Concepts: oop basic integration, classes, encapsulation, constructors, vector, commands
  • 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