Phân Biệt Summary Class Và Interface Trong C

Summary class và Interface là 2 khái niệm cơ bản trong lập trình hướng đối tượng, tuy nhiên trong C++ thì việc phân biệt summary class và interface ko đơn giản như những ngôn ngữ khác. Cùng tìm hiểu trong bài viết sau nhé.

Summary class là gì?

Summary class là 1 class ko có thông tin về nội dung thực hành và buộc phải} mẫu subclass (class con) cần định nghĩa những phương thức trên lớp summary. Có lớp summary, chúng ta có thể công khai mặt tiền của object nhưng vẫn giấu đi những tiến trình cài đặt trên phía sau. Thí dụ sở hữu lớp string, chúng ta chỉ cần gọi phương thức toUpperCase() để biến chuỗi thường thành chuỗi in hoa mà ko cần để ý tới phương thức đấy được cài đặt như nào. Summary class giúp chúng ta đạt được tính đa hình lúc Runtime, tức là cùng 1 class có thể cho ra nhiều biến thể mà biến thể đấy ko cần được định nghĩa trên lớp summary mà được định nghĩa trên lớp con của nó. Việc name hàm đối tượng của lớp dẫn xuất thông qua con trỏ của lớp cơ sở (lớp summary) sẽ được quyết định lúc Runtime. Người trải nghiệm cần hiểu được đa hình trong Compile và đa hình trong Runtime trên bài viết này nhé.

Thí dụ về việc cài đặt và dùng 1 lớp summary trong C++.

Kết quả sau khoản thời gian chạy chương trình.

Giải thích:

Trong C++ chúng ta ko có từ khóa summary để compiler hiểu rằng đây là 1 lớp summary mà chúng ta cần khai báo 1 hàm ảo trong lớp đấy để lớp con (lớp kế thừa) ghi đè(overriding) lại phương thức đấy. Tại code phía trên class Pc là 1 lớp summary được khai báo sở hữu hàm ảo(digital operate) là hàm Mannequin. Tại lớp con Lenovo ghi đè lại phương thức Mannequin trên lớp Pc. Trong hàm foremost chúng ta khai báo con trỏ của lớp Pc trỏ vào vùng nhớ của lớp con và gọi hàm Mannequin thì lúc này hàm Mannequin được ghi đè trên lớp con được gọi. Tương tự động con trỏ của lớp summary trỏ vào vùng nhớ của lớp Dell và gọi hàm Mannequin ra thì hàm Mannequin của lớp Dell sẽ được ghi đè. Giả dụ ko khai báo hàm Mannequin trên lớp Pc là hàm ảo thì trình biên dịch sẽ gọi hàm Mannequin tại lớp cơ sở. Thử xem có ra kết quả như bên dưới ko nhé.

Xem Thêm  Military Nghĩa Là Gì ? Military Là Viết Tắt Military Là Viết Tắt – Tranminhdung.vn

Interface là gì?

Trong C++ việc khai báo 1 interface có nghĩa là chúng ta khai báo sở hữu class sở hữu hàm thuần ảo và 1 phương thức hủy ảo (digital destructor). Tới đây chúng ta tìm hiểu 1 chút về hàm thuần ảo trong C++ nhé. Hàm thuần ảo được khai báo sở hữu cú pháp như sau.

digital <data_type> <function_name>(<parameter>) = 0;

Thí dụ:

Tại đây tôi khai báo lớp IShape (khai báo class sở hữu chữ “I” trước tên class để đánh dấu cho người đọc code biết rằng đây là 1 interface, đây là 1 chuẩn coding trong C++) có 1 phương thức thuần ảo là phương thức tinnhDienTich(). Lưu ý chỉ có hàm được đánh dấu sở hữu từ khóa digital thì new được gán bằng 0. Chúng ta có thể hiểu hàm tinnhDienTich()có thể dùng để tính diện tích cho hình chữ nhật, hình tròn, hình vuông,… Như vậy giả dụ chúng ta tạo 1 class Rectangle kế thừa class IShape và định nghĩa lại phương thức tinnhDienTich() để tính diện tích hình chữ nhật thì sẽ thu được đa hình trong Runtime tương tự động như summary class.

Có thể hiểu Interface là 1 bản mô tả hành vi hoặc khả năng của 1 class mà ko đưa ra phương pháp thực hành cụ thể của class đấy như thế nào.

Vậy lúc nào dùng summary class, lúc nào dùng interface?

Tới đây dĩ nhiên sẽ có nhiều bạn thắc mắc summary class khác thế quái nào interface. New đầu lúc tiếp cận sở hữu 2 khái niệm này tôi cũng như người tiêu dùng ko biết lúc nào dùng summary class lúc nào dùng interface. Giả sử chúng ta có 1 lớp summary Xe có thuộc tính động cơ và phương thức khởi động và tắt máy. Xe máy, xe ô tô, xe tải,… đều có chung phương thức và thuộc tính của lớp Xe. Vậy có thể hiểu summary class như là 1 bản thiết kế chung cho hầu hết những class, nó đại diện cho mối quan hệ “IS-A”(Ô tô là Xe).

Xem Thêm  9 bộ phim robotic, người máy chiến đấu hay nhất mọi thời đại – BlogAnChoi

Interface giống như 1 bản hợp đồng vậy, bất kì lớp nào triên khai 1 interface đấy thì cần đồng ý sở hữu bản thiết kế mà interface đấy đưa ra. Thí dụ xe bus có thể chở khách còn xe tải có hàng. Việc chở khách hay chở hàng là 1 phương thức ko buộc phải} đối sở hữu lớp xe nên ta tạo interface ChoKhach và ChoHang để lớp XeBus và XeTai có thể implement nó. Vậy chúng ta cần interface lúc chúng ta cần phân phối những phương thức bổ sung cho 1 class mà những phương thức này ko buộc phải} đối sở hữu class đấy, nó đại diện cho mối quan hệ “LIKE-A”(Xe bus có thể chở khách).

Lời kết

Qua bài viết này tôi đã chỉ dẫn người tiêu dùng phương pháp cài đặt summary class và interface trong C++ cũng như biết lúc nào nên dùng chúng. Tuy phương pháp cài đặt có khác so sở hữu những ngôn ngữ bậc cao sau này như Java hay C# nhưng về bản chất thì vẫn ko thay thế đổi.