You are on page 1of 8

KIẾN THỨC OOP C++

I. Class (Lớp):
- Lập trình OOP khác lập trình cấu trúc ở chỗ: tính bảo mật
- Lập trình hướng đối tượng: coi đối tượng là 1 đơn vị cần phải bảo mật thông tin.
- Class: 1 kiểu cấu trúc do người lập trình tự định nghĩa
+ Bao gồm các “dữ liệu con” (thành viên) và các phương thức (Các hàm) có thể tương
tác với lớp đó.
+ Là 1 tập hợp các đối tượng có cùng 1 đặc trưng

VD: Dữ liệu của SinhVien nhưu tên, ,msv… là thông tin cần được bảo vệ của SinhVien
 Dùng 1 lớp:
Class SV{
Private: // Vùng khai báo các dữ liệu của lớp:
String Hoten;
String MSV;
Public: // Vùng khai báo / định nghĩa các hàm có thể làm việc với class SV.
Void KhoiTao( )
Void getDiem( )

- Định nghĩa lớp là tạo ra 1 kiểu dữ liệu trừu tượng mới để mô tả các đặc trưng của đối
tượng trong thực tế.
- Định nghĩa lớp gồm 2 bước:
+ B1: Khai báo lớp: Khai báo các dữ liệu và hàm thành phần của lớp đó (khai báo dữ liệu
trong private, các hàm thành phần trong public)
+ B2: Định nghĩa lớp: định nghĩa cụ thể các hàm thành phần của lớp đó
1. Khai báo lớp:
Class tên_lớp{
Private:
Khai báo các dữ liệu của lớp;
Khai báo các phương thức: // có thể có hoặc không

Public:
Khai báo dữ liệu;
Khai báo / khởi tạo các hàm làm việc với class
}
2. Truy cập các hàm thành phần của lớp:
- Tương tự như struct:
- Thay đổi dữ liệu của private:
 Chỉ có duy nhất 1 cách là dùng hàm thành viên của class đó để thay đổi (dùng hàm
bên ngoài không thể truy cập vào private được)
VD: Muốn sửa điểm cuối kỳ của sinhvien, bắt buộc phải tạo 1 hàm setDiemCuoiKy
để sửa điểm:

- Thay đổi dữ liệu của public: Thay đổi bình thường, giống như struct, không cần phải viết
thêm hàm bên trong class.
3. Con trỏ this:
- Dùng khi hàm thành viên nằm trong lớp có tham số truyền vào trùng tên với dữ liệu
thành viên.
- Ví dụ: hàm khởi tạo NhanVien(int msnv, string Ten, int tuoi) có 3 tham số truyền vào
trùng tên với dữ liệu nằm trong phần private của class NhanVien  dùng con trỏ this để
phân biệt. thismsnv sẽ truy cập đến thành viên msnv của class, còn nếu chỉ code là
msnv trong hàm khởi tạo NhanVien thì nó sẽ hiểu là đang truy cập đến tham số của hàm
khởi tạo.
4. Biến static:
- Dùng cho tất cả các object trong cùng 1 class
Tất cả mọi đối tượng trong 1 class dù có khác tên nhau, khi truy cập vào biến static và
thực hiện thay đổi giá trị của nó thì đều ảnh hưởng đến biến static đó
- Ví dụ:
SV x,y,z;
Static int dem; // Giả sử biến dem = 5
x.dem = 5, y.dem = 5; z.dem = 5
x.dem += 2  y.dem = z.dem = 7

- Tham khảo thêm: https://techacademy.edu.vn/static-trong-c/

5. Friend Function, Friend class:


- Friend Function (Hàm bạn): hàm ngoài class (Không thuộc cùng 1 class) nhưng có thể
truy cập vào các biến priavte của class.
- Ví dụ: Hàm inthongtin có thể truy cập vào biến id (nằm trong priavte) của class SinhVien
- Khi định nghĩa hàm bạnkhông cần dùng toán tử :: để truy cập.
- Friend Class (Lớp bạn):
+ Lớp A là friend class của lớp B A có thể truy cập vào các phương thức, thành viên
của B.
+ Class nào được định nghĩa sau thì sẽ truy cập được các thành viên của class được định
nghĩa trước. Điều ngược lại không đúng.
- Ví dụ: class B được định nghĩa trước class A A dùng được các phương thức của B
nhưng B sẽ không dùng được các phương thức của A
II. Operator & Overload (Toán tử và nạp chồng toán tử):
1. Định nghĩa:
- Operator (Toán tử): các toán tử thường dùng:

- Overload (Nạp chồng toán tử):


+ Là xây dựng nên 1 hàm mới, gán cho toán tử đó chức năng của hàm được xây dựng.
 1 toán tử có thể thực hiện được nhiều chức năng khác nhau
+ Ví dụ: Bình thường toán tử >> chỉ dùng để nhận giá trị của 1 biến duy nhất, nhưng sau
khi xây dựng hàm nạp chồng như dưới đây thì khi gọi >>, chương trình sẽ yêu cầu ta
nhập vào cả tử số và mẫu số của phân số

2. Cú pháp:
- Khai báo:
- Khởi tạo hàm:
+ Constructor:

+ Toán tử nhập, xuất:

+ Toán tử +, - (không dùng friend class):


 Khi không dùng friend class, chỉ được truyền 1 tham số vào hàm friend đó, nếu
truyền 2 tham số sẽ bị lỗi (Chưa rõ nguyên nhân).
+ Toán tử * / (Dùng friend class):
 Được phép truyền 2 tham số vào hàm.

+ Friend function: Viết như hàm bình thường, không cần dùng SP::bool

- Class logging:
+ Debug
+ Info
+ Error

You might also like