[Buổi 25][Đóng gói][HW] Bài 1: Safe Score


LÀM BÀI

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

Author:
Problem types
Allowed languages
C++

Safe Score

Bối cảnh

Một Score object phải luôn giữ value trong [0,10]. Field được đặt private để code bên ngoài không thể gán trực tiếp một giá trị sai; mọi update đi qua set(x) và chỉ thành công khi x hợp lệ. Bài Easy tập trung invariant: command FAIL không được làm thay đổi state trước đó. Cuối cùng get() chỉ đọc giá trị hiện tại.

Vì đây là phần encapsulation, mọi field tạo nên invariant cần được đặt sau một interface kiểm soát. Một command thất bại phải là thao tác atomic: state trước và sau phải giống nhau hoàn toàn. Khi có nhiều field liên quan, nên viết rõ điều kiện hợp lệ trước rồi mới thực hiện bất kỳ phép gán nào.

Yêu cầu

  1. Private value.
  2. Method set(x) nhận 0..10.
  3. Method get() đọc giá trị.
  4. Khởi tạo 0; xử lý q lệnh set và in OK/FAIL; cuối in value.

Input

Dòng 1 q; q dòng số x.

Output

Mỗi lệnh OK/FAIL; cuối VALUE x.

Ràng buộc

1≤q≤1000.

Ví dụ 1

Input

4
5
10
11
-1

Output

OK
OK
FAIL
FAIL
VALUE 10

Giải thích

set5 và set10 đều hợp lệ nên state lần lượt5 rồi10. 11 và -1 fail, state giữ10. Output OK,OK,FAIL,FAIL rồi VALUE 10.

Ví dụ này còn kiểm tra nguyên tắc atomic của interface: khi một điều kiện không đạt, object không được giữ lại thay đổi dở dang. Các dòng output vì vậy không chỉ phản ánh OK/FAIL mà còn xác nhận state sau mỗi command vẫn thỏa invariant của class.

Ví dụ 2

Input

1
7

Output

OK
VALUE 7

Giải thích

Chỉ có set7 và hợp lệ, nên OK; state cuối7, output VALUE 7.

Ví dụ này còn kiểm tra nguyên tắc atomic của interface: khi một điều kiện không đạt, object không được giữ lại thay đổi dở dang. Các dòng output vì vậy không chỉ phản ánh OK/FAIL mà còn xác nhận state sau mỗi command vẫn thỏa invariant của class.

Thông tin học tập

  • Module: M07
  • Buổi: B25
  • Loại bài: HOMEWORK
  • Độ khó: Easy
  • Concepts: encapsulation, validation, private data, getter
  • Giới hạn kiến thức: B01-B25
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo