STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Access modifier trong C++

Bài học hôm nay chúng ta sẽ tìm hiểu về access modifier trong C++? Vậy access modifier trong C++ là gì? Chúng ta sẽ cùng tìm hiểu trong nội dung sau đây.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Access modifier trong C++

Access modifier trong C++  được sử dụng để triển khai một tính năng quan trọng của Lập trình hướng đối tượng được gọi là Data Hiding.

Chúng ta cùng xem xét một ví dụ sau: 

Giả sử công ty của chúng ta có lưu trữ thông tin của nhân viên như số điện thoai, email, năm sinh, phòng ban, chức vụ, địa điểm văn phòng làm việc,... Tất cả nhân viên của công ty có thể thấy các thông tin của nhau để tiện liên lạc thông qua trang web intrannet và có tài khoản để đăng nhập.

Bài viết này được đăng tại [free tuts .net]

Người ở ngoài công ty thì không có tài khoản và không thể truy cập vào trang web intrannet để thấy thông tin của nhân viên trong công ty. Chúng ta gọi đó là hidding data.

Access modifier hay Access Specifier trong một lớp được sử dụng để đặt khả năng truy cập của các thành viên lớp. Đó là, nó đặt ra một số hạn chế đối với các thành viên lớp không được truy cập trực tiếp bởi các hàm bên ngoài.

Trong C++ có hổ trợ 3 loại access modifier đó là:

  • Private
  • Public
  • Protected

Lưu ý: Nếu chúng ta không chỉ rõ bất kỳ access modifier cho thành viên của lớp, thì mặc định nó là Private.

Chúng ta sẽ cùng tìm hiểu từng loại access modifier trong C++ nhé.

2. Private access modifier

Các thành viên lớp được khai báo là private thì chỉ có thể được truy cập bởi các hàm bên trong lớp. Chúng không được phép truy cập trực tiếp bởi bất kỳ đối tượng hoặc hàm nào bên ngoài lớp.

Chỉ các hàm thành viên hoặc các hàm bạn mới được phép truy cập các thành viên dữ liệu riêng tư của một lớp. Hàm bạn là gì? Chúng ta sẽ được tìm hiểu trong bài tiếp theo.

Private Access modifier cũng là access modifier mặc định của lớp.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản về private access modifier trong C++ như sau:

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    private:  
        double banKinh; 
       
    public:     
        double  TinhDienTich() {   
            return 3.14*banKinh*banKinh; 
        } 
}; 
  
int main() {    

    HinhTron ht; 
    // Chung ta thu truy cap du lieu thanh vien private ben ngoai lop
    ht.banKinh = 3.5; 
      
    cout << "Dien tich cua hinh tron la:" << ht.TinhDienTich(); 
    
    return 0; 
} 

Và kết quả sau khi thực thi chương trình trên như sau:

access p1 JPG

Chương trình trên báo lỗi biên dịch vì chúng ta đang truy cập dữ liệu thành viên bán kính ở dạng private.

Tuy nhiên, chúng ta có thể truy cập gián tiếp các thành viên dữ liệu riêng tư của một lớp bằng cách sử dụng các hàm thành viên công khai của lớp. Chúng ta cùng xem ví dụ sau đây có thể truy cập biến banKinh của lớp HinhTron thông qua hàm TinhBanKinh.

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    private:  
        double banKinh; 
       
    public:     
        void TinhDienTich(double bk) {
            banKinh = bk;
            double dienTich = 3.14*banKinh*banKinh; 
            cout << "Ban kinh la: " << banKinh << endl;
            cout << "Dien tich la: " << dienTich << endl;
        } 
}; 
  
int main() {    

    HinhTron ht; 
    double banKinh = 2;
    ht.TinhDienTich(banKinh);
    
    return 0; 
}

Và kết quả sau khi thực thi chương trình trên là:

access p2 JPG

3. Public access modifier

Tất cả các thành viên lớp được khai báo dưới dạng public sẽ có sẵn cho tất cả mọi người. Các thành viên dữ liệu và các hàm thành viên được khai báo public cũng có thể được truy cập bởi các lớp khác.

Các thành viên public của một lớp có thể được truy cập từ bất cứ đâu trong chương trình bằng cách sử dụng toán tử truy cập thành viên trực tiếp (.) với đối tượng của lớp đó.

Ví dụ

Chúng ta cùng xem một ví dụ đơn giản về public access modifier trong C++ như sau:

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    public:
        double banKinh;
        double  TinhDienTich() {   
            return 3.14*banKinh*banKinh; 
        } 
}; 
  
int main() {    

    HinhTron ht; 
    ht.banKinh = 3.5; 
      
    cout << "Ban kinh cua hinh tron la: " << ht.banKinh << endl;  
    cout << "Dien tich cua hinh tron la:" << ht.TinhDienTich(); 
    
    return 0; 
}

Và kết quả sau khi thực thi chương trình trên như sau:

access p3 JPG

Trong ví dụ trên, thành viên dữ liệu bán kính là công khai nên chúng ta được phép truy cập bên ngoài lớp.

4. Protected access modifier

Protected access modifier tương tự như private access modifier, sự khác biệt là thành viên lớp được khai báo là Protected không thể truy cập bên ngoài lớp nhưng chúng có thể được truy cập bởi bất kỳ lớp con (lớp dẫn xuất) nào của lớp đó.

Ví dụ

Chúng ta sẽ cùng xem một ví dụ đơn giản về protected access modifier trong C++ như sau:

Ví dụ
#include <bits/stdc++.h> 
using namespace std; 
  
//Lop cha
class Cha {    
    protected: 
        string diaChi;
}; 
 
//Lop con  
class Con : public Cha 
{ 
    public: 
        void ThietLapDiaChi(string dc) { 
            diaChi = dc; 
        } 
          
        void HienThi() { 
            cout << "Dia chi la: " << diaChi << endl; 
        } 
}; 
  
int main() { 
    Con cn; 
    cn.ThietLapDiaChi("Thoi Binh, Ca Mau"); 
    cn.HienThi(); 
    return 0; 
} 

Và kết quả sau khi thực thi chương trình trên như sau:

access p4 JPG

5. Kết luận

Như vậy là chúng ta đã tìm hiểu xong về access modifier trong C++ là gì rồi. Các bạn biết cách bảo vệ dữ liệu của mình như thế nào rồi đúng không.

Mình khuyến khích các bạn nên thiết lập private cho dữ liệu thành viên, và thiết lập hàm dạng public để truy xuất dữ liệu thành viên đó. Không nên truy xuất một cách trực tiếp dữ liệu thành viên của lớp.

Mình sẽ kết thúc bài học hôm nay ở đây. Bài tiếp theo chúng ta sẽ cùng tìm hiểu về hàm bạn trong C++. Các bạn nhớ theo dõi nhé.

Cùng chuyên mục:

Cách điều khiển Touch Sensor trong Arduino

Cách điều khiển Touch Sensor trong Arduino

Cách giao tiếp Keypad với màn hình LCD trong Arduino

Cách giao tiếp Keypad với màn hình LCD trong Arduino

Cách điều khiển Keypad trong Arduino

Cách điều khiển Keypad trong Arduino

Cách điều khiển màn hình LCD trong Arduino

Cách điều khiển màn hình LCD trong Arduino

Hướng dẫn điều khiển cảm biến ánh sáng trong Arduino

Hướng dẫn điều khiển cảm biến ánh sáng trong Arduino

Cách điều khiển công tắc (switch) trong Arduino

Cách điều khiển công tắc (switch) trong Arduino

Cách điều khiển button trong Arduino

Cách điều khiển button trong Arduino

Hướng dẫn điều khiển đèn LEG bằng Touch Sensor

Hướng dẫn điều khiển đèn LEG bằng Touch Sensor

Hướng dẫn điều khiển đèn LEG bằng nút nhấn trong Arduino

Hướng dẫn điều khiển đèn LEG bằng nút nhấn trong Arduino

Hướng dẫn điều khiển đèn LEG RGB trong Arduino

Hướng dẫn điều khiển đèn LEG RGB trong Arduino

Hướng dẫn bật tắt đèn LED trong Arduino

Hướng dẫn bật tắt đèn LED trong Arduino

Viết chương trình Arduino đầu tiên

Viết chương trình Arduino đầu tiên

Các kiến thức cần biết trước khi học lập trình với Arduino

Các kiến thức cần biết trước khi học lập trình với Arduino

Hướng dẫn cài đặt và sử dụng Arduino IDE

Hướng dẫn cài đặt và sử dụng Arduino IDE

Arduino là gì? Ứng dụng của Arduino trong cuộc sống

Arduino là gì? Ứng dụng của Arduino trong cuộc sống

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Top