Bài 033 - Bài tập kế thừa
Đề bài:
Hãy xây dựng hệ thống quản lý thư viện với các yêu cầu sau:
-
Tạo một lớp
Itemgồm các thuộc tính:id: mã tài liệutitle: tiêu đềauthor: tác giả
-
Tạo lớp
Bookkế thừa từItem, có thêm:pages: số trang
-
Tạo lớp
DVDkế thừa từItem, có thêm:duration: thời lượng (phút)
-
Tạo lớp
Magazinekế thừa từItem, có thêm:issue: số phát hành
-
Tất cả các lớp đều có phương thức
printInfo()để in ra đầy đủ thông tin.
Yêu cầu:
- Sử dụng
super()để tái sử dụng constructor lớp cha. - Ghi đè phương thức
printInfo()tại các lớp con. - Tạo danh sách chứa nhiều đối tượng (book, dvd, magazine) và in ra toàn bộ thông tin bằng vòng lặp.
Gợi ý đầu ra mong đợi:
Book: [ID: B001] Title: Lập trình Python | Author: Nguyễn Văn A | Pages: 320
DVD: [ID: D101] Title: Học Python qua phim | Author: Lê Thị B | Duration: 90 minutes
Magazine: [ID: M301] Title: Công nghệ hôm nay | Author: Trần C | Issue: #45
Bài tập 2: Mô phỏng hệ thống giáo dục
Đề bài:
Thiết kế một hệ thống phân cấp cho các loại người trong trường học:
-
Lớp
Person: có thuộc tínhname,age, và phương thứcintroduce(). -
Lớp
Studentkế thừa từPerson, thêm thuộc tínhstudent_id,major, và ghi đèintroduce()để hiển thị thông tin sinh viên. -
Lớp
Teacherkế thừa từPerson, thêm thuộc tínhteacher_id,subject, và cũng ghi đèintroduce(). -
Lớp
TeachingAssistantkế thừa đa cấp từStudentvàTeacher. Đây là sinh viên có vai trò trợ giảng.
Yêu cầu:
- Cài đặt đầy đủ constructor với
super(). - Áp dụng
Method Resolution Order (MRO)khi gọiintroduce()từTeachingAssistant. - Khởi tạo một vài đối tượng cho mỗi lớp và gọi phương thức
introduce()để kiểm tra kết quả.
Gợi ý đầu ra mong đợi:
Hi, I'm Nam, 20 years old. I'm a Computer Science student, ID: SV123.
Hi, I'm Cô Hương, 35 years old. I teach Mathematics, ID: GV456.
Hi, I'm An, 22 years old. I'm a Computer Science student and also a teaching assistant for the course Programming 101.