VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C++ Cơ Bản

Ngôn ngữ lập trình C++ là gì? Lịch sử của C++ Các tính năng của C++ Cài đặt môi trường lập trình C++ Chương trình C++ đầu tiên Biến trong C++ Các kiểu dữ liệu trong C++ Ép kiểu trong C++ Từ khóa trong C++ Các toán tử trong C++ Comment trong C++ Các hằng số trong C++ count, cin và endl trong C++ Ký tự đặc biệt trong C++ Namespace trong C++ Template trong C++ Modifier trong C/C++

Câu Lệnh Điều Khiển C++

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

C++ Function

Hàm trong C++ Hàm do người dùng định nghĩa Các kiểu hàm trong C++ Đệ quy trong C++ Call by value Call by reference

C++ Array

Mảng (array) trong C++ Mảng 2 chiều trong C++ Truyền mảng vào hàm

C++ Poiter

Con trỏ trong C++ Con trỏ Null trong C++ Con trỏ số học trong C++ Con trỏ và mảng trong C++ Mảng con trỏ trong C++ Con trỏ tới con trỏ trong C++ Truyền con trỏ tới hàm trong C++ Trả về con trỏ từ hàm trong C++

C++ Lớp Object

Khái niệm lập trình hướng đối tượng trong C++ Lớp và đối tượng trong C++ Constructor trong C++ Destructor trong C++ this trong C++ static trong C++ struct trong C++ Enumeration trong C++ Hàm Friend trong C++ Hàm Math trong C++ Tính kế thừa trong C++ Tính đa hình trong C++ Tính trừu tượng trong C++ Tính đóng gói trong C++ Interface trong C++

Nạp Chồng Toán Tử

Nạp chồng toán tử và Nạp chồng hàm trong C++ Nạp chồng toán tử một ngôi trong C++ Nạp chồng toán tử nhị phân trong C++ Nạp chồng toán tử quan hệ trong C++ Nạp chồng toán tử Input/Output trong C++ Nạp chồng toán tử ++ và -- trong C++ Nạp chồng toán tử gán trong C++ Nạp chồng toán tử gọi hàm () trong C++ Nạp chồng toán tử subscript [] trong C++ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Lập Trình C++

Xử lý ngoại lệ trong C++ Đa luồng trong C++
Bài Tập C++ Có Lời Giải
1 / 3
❮ ❯

Interface trong C++


Tính đóng gói trong C++
Nạp chồng toán tử và Nạp chồng hàm trong C++

Nội dung chính

  • Interface trong C++
  • Ví dụ về Lớp trừu tượng trong C++
  • Chiến lược thiết kế trong C++

Interface trong C++

Một Interface miêu tả hành vi hoặc khả năng của một lớp trong C++ mà không ký thác tới một trình triển khai cụ thể của lớp đó.

Interface trong C++ được triển khai bởi sử dụng các Lớp trừu tượng (Abstract class) và những lớp trừu tượng này không nên bị nhầm lẫn với Trừu tượng hóa dữ liệu, mà là một khái niệm của việc giữ Implementation Detail phân biệt với dữ liệu được liên kết.

Một lớp được tạo là abstract bằng việc khai báo ít nhất một lần các hàm của nó là hàm pure virtual. Một hàm pure virtual được xác định bằng việc đặt "= 0" trong khai báo của nó, như sau:


class Box
{
   public:
      // khai bao pure virtual function
      virtual double tinhTheTich() = 0;
   private:
      double chieudai;      // Chieu dai cua mot box
      double chieurong;     // Chieu rong cua mot box
      double chieucao;      // Chieu cao cua mot box
};

Mục đích của một Lớp trừu tượng (thường gọi tắt là ABC) là để cung cấp một lớp cơ sở thích hợp để từ đó các lớp khác có thể kế thừa. Các lớp trừu tượng không thể được sử dụng để khởi tạo các đối tượng và chỉ phục vụ như là một Interface. Nỗ lực để khởi tạo một đối tượng của một lớp trừu tượng trong C++ sẽ tạo ra một lỗi biên dịch (compilation error).

Vì thế, nếu một lớp phụ của một ABC cần được khởi tạo, nó phải triển khai các hàm virtual, nghĩa là nó hỗ trợ Interface được khai báo bởi ABC. Thất bại trong việc ghi đè một hàm pure virtual trong một lớp kế thừa, thì việc nỗ lực để khởi tạo các đối tượng của lớp đó, là một lỗi biên dịch.

Các lớp, mà có thể được sử dụng để khởi tạo đối tượng, được gọi là Concrete Class trong C++.



Ví dụ về Lớp trừu tượng trong C++

Bạn xem xét ví dụ sau: lớp cha cung cấp một Interface tới lớp cơ sở để triển khai một hàm tinhDienTich() trong C++:


#include <iostream>

using namespace std;

// day la lop co so (base class)
class Hinh
{
public:
    // khai bao pure virtual function
    virtual int tinhDienTich() = 0;
    void setChieuRong(int rong)
    {
        chieurong = rong;
    }
    void setChieuCao(int cao)
    {
        chieucao = cao;
    }
protected:
    int chieurong;
    int chieucao;
};

// cac lop ke thua
class HinhChuNhat : public Hinh
{
public:
    int tinhDienTich()
    {
        return (chieurong * chieucao);
    }
};
class TamGiac : public Hinh
{
public:
    int tinhDienTich()
    {
        return (chieurong * chieucao) / 2;
    }
};

int main(void)
{
    HinhChuNhat hcn;
    TamGiac  tg;

    hcn.setChieuRong(20);
    hcn.setChieuCao(12);
    // in dien tich cua doi tuong
    cout << "Tong dien tich HinhChuNhat la: " << 
        hcn.tinhDienTich() << endl;   

    tg.setChieuRong(30);
    tg.setChieuCao(15);
    // in dien tich cua doi tuong.
    cout << "Tong dien tich TamGiac la: " << 
        tg.tinhDienTich() << endl;

    return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Interface trong C++

Bạn có thể thấy cách một lớp trừu tượng định nghĩa một Interface với hàm tinhDienTich() này và hai lớp khác triển khai cùng một hàm nhưng với thuật toán khác nhau để tính toán diện tích cụ thể cho hình.


Chiến lược thiết kế trong C++

Một hệ thống hướng đối tượng có thể sử dụng một lớp cơ sở để cung cấp một Interface chung và chuẩn hóa thích hợp cho tất cả các ứng dụng ngoại vi. Vì thế, thông qua kế thừa từ lớp cơ sở trừu tượng đó, các lớp kế thừa được thiết lập theo cách tương tự.

Các khả năng (ví dụ: các hàm public), được cung cấp bởi các ứng dụng ngoại vi, được cung cấp ở dạng các hàm pure virtual trong lớp cơ sở trừu tượng. Trình triển khai của các hàm pure virtual này được cung cấp trong các lớp kế thừa tương ứng với các kiểu ứng dụng cụ thể.


Tính đóng gói trong C++
Nạp chồng toán tử và Nạp chồng hàm trong C++

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Đa luồng trong C++Xử lý ngoại lệ trong C++Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Nạp chồng toán tử subscript [] trong C++Nạp chồng toán tử gọi hàm () trong C++Nạp chồng toán tử gán trong C++Nạp chồng toán tử ++ và -- trong C++Nạp chồng toán tử Input/Output trong C++Nạp chồng toán tử quan hệ trong C++Nạp chồng toán tử nhị phân trong C++Nạp chồng toán tử một ngôi trong C++Nạp chồng toán tử và Nạp chồng hàm trong C++

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml