30/09/2018, 16:26

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

Võ Hoài Nam viết 18:40 ngày 30/09/2018

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.

Đỗ Trung Quân viết 18:37 ngày 30/09/2018

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.

Hoặc có thể vào ĐÂYđể tìm hiểu rõ hơn về principles of object oriented Đó là theo quan điểm hàn lâm. Nói dễ hiểu hơn Object oriented programming(OOP) hay Lập trình hướng đối tượng. Được phát triển từ những năm 2000 nhằm thay thế cho lập trình thủ tục như C. Giúp người lập trình quản lý phát triển và quản lý code dễ dàng hơn. Nhìn vào tên của nó bạn cũng có thể hình dung ra được. Ngôn ngữ lập trình này giải quyết các bài toán từ nhỏ đến lớn bằng cách quan sát và tưởng tượng những hành động,…

Bài liên quan
0