[Buổi 30][Template & ngoại lệ][HW] Bài 2: Box<T>
Box<T>
Bối cảnh
Box<T> là một container generic rất nhỏ giữ đúng một value. Nó hỗ trợ get() và set(value); cùng class phải dùng được cho int và string mà không viết lại logic. Homework Easy luyện class template, constructor và method template-instantiated state.
Sequence command cho thấy state bên trong Box thay đổi qua SET và được GET đọc lại; không có exception ở bài này.
B30 kết hợp hai ý tưởng: generic code để tránh copy thuật toán theo kiểu dữ liệu và exception để tách luồng lỗi khỏi luồng thành công. Exception chỉ nên xuất hiện ở điểm precondition/validation thất bại; state hoặc aggregate không được cập nhật trước khi biết thao tác đã hợp lệ. Với template, hãy xác định rõ các toán tử/operation mà type T cần hỗ trợ.
Yêu cầu
- Tạo
template<class T> class Boxcó set/get. - Đọc type I/S, initial và q lệnh SET/GET.
- Mỗi GET in value.
Input
Dòng 1 type initial q; q command.
Output
Mỗi GET một dòng.
Ràng buộc
1≤q≤1000.
Ví dụ 1
Input
I 1 4
GET
SET 5
GET
GET
Output
1
5
5
Giải thích
Box1, 5, 5 theo đúng thứ tự query.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Ví dụ 2
Input
S a 3
GET
SET b
GET
Output
a
b
Giải thích
Box<string> bắt đầu a. GET in a, SET b cập nhật value, GET cuối in b. Cùng code template nhưng type string hoạt động tương tự.
Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.
Thông tin học tập
- Module: M08
- Buổi: B30
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: class template, generic storage, methods
- Giới hạn kiến thức: B01-B30
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments