1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lớp và đối tượng (lập TRÌNH HƯỚNG đối TƯỢNG SLIDE)

43 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 529,82 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khai báo một classclass { [quyền truy xuất:] //khai báo các thành phần dữ liệu của lớp [quyền truy xuất:] //khai báo các thành phần hàm của lớp };... Khai báo một class[ quyền truy xuất

Trang 1

Bài 3: Lớp và đối tượng

Trang 2

Lớp (class)

• Lớp là khái niệm trung tâm của lập trình hướng đối tượng Là sự mở

rộng của struct trong C.

• Lớp là khái niệm trừu tượng, để biểu diễn các đối tượng Là một

kiểu dữ liệu do người dùng định nghĩa.

▫ Lớp đưa ra miêu tả cho các đối tượng.

▫ Lớp cung cấp một cách thuận tiện để nhóm các dữ liệu và các hàm xử

Trang 3

So sánh giữa class và struct

• Struct là class đều là kiểu dữ liệu do người dùng định nghĩa ( đều chứa các biến và hàm).

• Struct là kiểu dữ liệu tham trị được lưu trong Stack Trong khi lớp là kiểu

dữ liệu tham chiếu được lưu trong heap.

• Struct không hỗ trợ kế thừa, lớp có hỗ trợ kế thừa.

• Struct phù hợp với các cấu trúc dữ liệu nhỏ Lớp phù hợp với các cấu trúc

Trang 4

Nội dung

hàm

• Khai báo static

• Tìm hiểu con trỏ this

Trang 5

Khai báo một class

class <tên_lớp>

{

[quyền truy xuất:]

//khai báo các thành phần dữ liệu của lớp

[quyền truy xuất:]

//khai báo các thành phần hàm của lớp

};

Trang 6

Khai báo một class

[ quyền truy xuất: ]

 Là khả năng truy xuất thành phần dữ liệu

 Ngầm định là private

private : trong phạm vi lớp đó

public : ở mọi nơi nếu đối tượng tồn tại

Chú ý: Các thuộc tính thành viên của struct cũng có thể được thiết lập là

private, public hoặc protected.

protected : phạm vi lớp đó và các lớp con kế thừa

Trang 7

Khai báo một class

Student aSophomore;

aSophomore.idNum = 7645;

cout<<aSophomore.idNum;

Error! By default, all members of a

class are private

Trang 8

Khai báo một class

Access modifier

Trang 9

Đóng gói các thành phần của một lớp

9/20

Khai báo thành phần

Dữ liệu:

Tương tự như khai báo biến

<kiểu dữ liệu > <tên_thành_phần>;

Chú ý : không được khởi tạo giá trị ban đầu

Kiểu dữ liệu có thể là kiểu cơ bản hoặc kiểu do người dùng định nghĩa

Trang 10

Đóng gói các thành phần của một lớp

10/20

Khai báo thành phần

Hàm thành phần

Cách 1: Khai báo trong lớp và định nghĩa ngoài lớp

<kiểu trả về > tênlớp::<tên_hàm>([đối sô])

Trang 11

Đóng gói các thành phần của một lớp

Trang 13

Ví dụ

Ví dụ 1:

Xây dựng cấu trúc dữ liệu mô tả sinh viên:

Dữ liệu : họ tên, ngày sinh, giới tính, Điểm toán, lý, hóa, Đtb

Phương thức : nhập, tính đtb, in

 Lớp sinh viên

Trang 14

Ví dụ

Ví dụ 2

Xây dựng cấu trúc dữ liệu mô tả các hóa đơn:

Dữ liệu: mã vật tư, tên vật tư, loại phiếu, ngày lập, khối lượng, đơn giá, thành tiền…

Phương thức: nhập, tính thành tiền, in

 Lớp các hóa đơn

Trang 16

Khai báo đối tượng

Trang 17

Truy xuất đối tượng

Trang 18

Hàm khởi tạo (constructor)

• Hàm khởi tạo là một phương thức đặc biêt của lớp.

• Hàm khởi tạo được thực thi mỗi khi khởi tạo một đối tượng.

• Chú ý:

• Tên của hàm khởi tạo phải trùng với tên lớp.

• Không có khai báo kiểu cho hàm tạo.

• Hàm tạo có thể có tham số hoặc không có tham số.

• Có thể nạp chồng nhiều hàm tạo.

Trang 20

Dùng hàm tạo để khởi gán các giá trị

thuộc tính cho đối tượng

Trang 21

Dùng hàm tạo trong cấp phát bộ nhớ

Diem *q=new Diem(0,0);

int n=20;

Diem *q= new Diem[n];

Dùng hàm tạo trong biểu diễn đối tượng hằng.

• Diem(2,4); //Coi nhu mot doi tuong co cac gia tri thuoc tinh

x=2,y=4.

• Giả sử lớp Diem có phương thức in() , khi đó có thể gọi phương

thức đó như sau:

• Diem(2,4).in();

Trang 22

Hàm khởi tạo

Như vậy hàm khởi tạo:

Không có giá trị trả về

tạo mặc định Nếu đã có một hàm khởi tạo trong lớp thì hàm khởi tạo mặc định sẽ không được sinh ra

Trang 23

Hàm khởi tạo sao chép (copy constructor)

• Nếu trong lớp PS chưa có hàm tạp sao chép thì sẽ gọi đến hàm tạo

sao chép mặc định trong C++ Hàm này sẽ sao chép toàn bộ nội dung của u vào v.

• Nếu trong PS đã có hàm tạo sao chép Khi đó sẽ gọi tới hàm tạo

sao chép để khởi tạo v theo u.

Trang 24

Hàm khởi tạo sao chép (copy constructor)

Tên_lớp (const Tên_lớp & dt) {

// Các câu lệnh dùng các thuộc tính của đối tượng dt // để khởi gán cho các thuộc tính của đối tượng mới }

PS (const PS &p) {

this->t = p.t ; this->m = p.m ; }

Trang 25

Hàm khởi tạo sao chép (copy constructor)

• Khi nào cần dùng hàm tạo sao chép

• Khi trong lớp có thuộc tính con trỏ hoặc tham chiếu.

Trang 26

Hàm khởi tạo sao chép (copy constructor)

• => Phải khởi tạo hàm tạo sao chép sau:

DT::DT(const DT &d){

this->n = d.n;

this->a = new double[d.n+1];

for (int i=0;i<=d.n;++i)this->a[i] = d.a[i];

}

Trang 27

this->n=0;

delete this->a;

}

Trang 28

nhớ

Trang 29

Khai báo các thành viên của lớp là static

• Khi khai báo một thành viên là static, khi đó chỉ có một địa chỉ ô nhớ được truy cập

trị của đối tượng trước đó

• Các thành viên static được truy cập thông qua tên lớp

Trang 30

Thuộc tính static

Trang 31

Thuộc tính static (tiếp)

Các biến static đôi khi được gọi là class variables,

class fields, hoặc class-wide fields bởi vì chúng

không phải là biến của đối tượng mà tồn tại theo lớp.

Trang 32

• Các hàm static không thể truy cập được các biến

không phải static

Trang 33

Các hàm static (tiếp)

Trang 36

Con trỏ this

• Sử dụng con trỏ this để phân biệt giữa biến của lớp

và biến cục bộ của phương thức có cùng tên

• Xem Ví dụ 4.2- PVA

Trang 37

Hàm bạn (friend function)

không cho truy cập tới các thuộc tính của đối (nếu thuộc tính

là private)

Trang 38

Hàm bạn (friend function)

Cách khai báo hàm bạn: Có hai cách

Cách 1: Dùng từ khoá friend để khai báo hàm trong lớp và

xây dựng hàm bên ngoài như các hàm thông thường (không dùng từ khoá friend).

Trang 39

Hàm bạn (friend function)

trong định nghĩa lớp

Trang 40

Hàm bạn (friend function)

▫ Trong thân hàm bạn của một lớp có thể truy cập tới thuộc tính

của các đối tượng thuộc lớp.

▫ Hàm bạn không phải phương thức của lớp.

▫ Lời gọi của hàm bạn giống lời gọi của hàm thông thường.

Trang 41

u.a = this->a + u2.a ;

u.b = this->b + u2.b ;

Trang 42

u.a = u1.a + u2.a ;

u.b = u1.b + u2.b ;

Trang 43

Hàm bạn (friend function)

 Khi đó có thể truy cập được tất cả các thuộc tính của các lớp

hưởng của từ khoá truy xuất

43/20

Ngày đăng: 29/03/2021, 10:48

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm