[Buổi 28][Kế thừa][HW] Bài 2: Device → Phone
Device → Phone
Bối cảnh
Một Device cơ sở lưu brand, còn Phone kế thừa Device và bổ sung storageGB. Báo cáo sản phẩm cần in brand cùng dung lượng. Bài Easy giữ tình huống rất nhỏ để người học nhìn rõ lợi ích reuse: Phone không cần định nghĩa lại brand hay logic khởi tạo brand, mà gọi constructor base rồi lưu field riêng.
Mục tiêu là hiểu object derived chứa một subobject base hoàn chỉnh. Không dùng virtual/polymorphism ở bài này vì đó là nội dung B29.
Ở B28, mục tiêu không phải làm hierarchy càng sâu càng tốt mà là reuse đúng quan hệ is-a. State thuộc lớp cha chỉ nên tồn tại một lần và lớp con dùng lại thông qua constructor/accessor phù hợp. Khi một metric được tạo từ cả field kế thừa và field riêng, hãy xác định rõ lớp nào chịu trách nhiệm tính metric đó để tránh duplicate logic giữa base và derived.
Yêu cầu
- Device giữ brand, method label().
- Phone kế thừa Device, thêm storageGB.
- In
brand storageGBGB.
Input
Một dòng brand storage.
Output
Một dòng.
Ràng buộc
1≤storage≤100000.
Ví dụ 1
Input
Apple 128
Output
Apple 128GB
Giải thích
Phone có brand Apple từ phần Device và storage128 từ phần derived. Ghép hai phần state tạo Apple 128GB; suffix GB thuộc rule riêng của Phone.
Ví dụ này cũng kiểm tra đúng luồng kế thừa: phần state của lớp cha được khởi tạo và tái sử dụng, phần riêng của lớp con chỉ bổ sung behavior/dữ liệu cần thiết. Kết quả cuối vì thế phải phản ánh đồng thời dữ liệu inherited và dữ liệu derived, không có field nào bị khai báo lại hoặc bỏ quên.
Ví dụ 2
Input
Samsung 256
Output
Samsung 256GB
Giải thích
Samsung256 tương tự: base giữ Samsung, derived giữ256 và output Samsung 256GB. Ví dụ xác nhận constructor derived truyền đúng brand cho base.
Ví dụ này cũng kiểm tra đúng luồng kế thừa: phần state của lớp cha được khởi tạo và tái sử dụng, phần riêng của lớp con chỉ bổ sung behavior/dữ liệu cần thiết. Kết quả cuối vì thế phải phản ánh đồng thời dữ liệu inherited và dữ liệu derived, không có field nào bị khai báo lại hoặc bỏ quên.
Thông tin học tập
- Module: M08
- Buổi: B28
- Loại bài: HOMEWORK
- Độ khó: Easy
- Concepts: inheritance, base method, derived fields
- Giới hạn kiến thức: B01-B28
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments