Tính kế thừa và tính đa hình?

  • Tính kế thừa ?
    Giả sử bài toán có: Lớp HỌC SINH gồm có (điểm, năm sinh,…), ĐIỂM thì mình làm thành 1 lớp, NĂM SINH làm 1 lớp.
    Vậy lớp HỌC SINH sẽ kế thừa lại lớp ĐIỂM và lớp NĂM SINH.
    Cho em hỏi lớp ĐIỂM và lớp NĂM SINH gọi là lớp CHA, HỌC SINH gọi là lớp con ?, để lớp HỌC SINH kế thừa lại được thì lớp ĐIỂM VÀ NĂM SINH phải để là protected ?
    Để kế thừa được 2 lớp thì dùng dấu phẩy ngăn cách ? (class HocSinh : public Diem, public NamSinh)

  • Tính đa hình ?
    Giả sử bài toán: Trường học có n học sinh và n giáo viên, tính đa hình nó cho phép mình nhập xuất ngắn lại, nó đem cả học sinh và giáo viên vào 1 vector. Nếu mình nhập theo yêu cầu, học sinh trước, đến giáo viên. Thì vector đó học sinh đứng đầu, giáo viên đứng cuối.
    Yêu cầu em đặt ra, nếu người ta bảo chỉ xuất học sinh, thì làm thế nào để chỉ xuất học sinh không ?. Nếu người ta bảo chèn thêm học sinh vào, thì làm sao cho nó nằm ở chỗ trước giáo viên.?
    1 2 3 4 5: học sinh
    7 8 9: giáo viên
    vector trường học: 1 2 3 4 5 7 8 9.
    Chèn học sinh thứ 6 vào vị trí: 1 2 3 4 5 6 7 8 9.
    Chỉ là mẫu, không rõ số học sinh và số giáo viên nhé.
    @ltd

1 Like

Chúng ta sẽ bàn cách giải sau…

Mình thấy có vấn đề như thế này ở vấn đề kế thừa của bạn.

  1. DIEM chỉ đơn giản là một con số thực có giá trị trong đoạn từ 0 tới 10. Tạo một biến kiểu float là đủ.

  2. NAMSINH cũng chỉ đơn giản là một con số nguyên, chọn kiểu int là đủ. Trừ khi bạn muốn tạo một kiểu có tên là NGAY, gồm có 3 attributes là _ngay, _thang, _nam thì hãy tạo một class.

  3. Nếu xét theo 2 mục trên thì ví dụ này không nói lên tính kế thừa. Giả sử DIEM và NAMSINH là class luôn thì vấn đề bạn nói chỉ xung quanh vấn đề class A có attribute kiểu dữ liệu là class B. Nhìn hình minh họa dưới đây, class Book có một thuộc tính có kiểu dữ liệu là Author được định nghĩa tại class Author.

Mình chọn hình này để minh họa cho tư tưởng kế thừa.

Wheeled VihicleBoat kế thừa từ Vehicle.
BicycleCar kế thừa từ Wheeled Vehicle.
Toyota, BMW, Honda kế thừa từ Car.

Còn hình dưới đây, thể hiện ở mức Logic của việc kế thừa.

1 Like

Ngày trước mình có viết 1 bài trên diễn đàn về tính đa hình và kế thừa trong OOP. C++ làm ví dụ. Bạn tham khảo nhé.
Còn ví dụ của bạn sai bản chất mất rồi.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?