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

CHƯƠNG 3 LỚP VÀ ĐỐI TƯỢNG

5 126 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 202,57 KB

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

Nội dung

• Gọi hàm trên ñối tượng.. tùy theo thuộc tính truy cập của các thành phần ñó... – Thực chất làgán tươngứng các thành phần dữliệucủa hai ñối tượng cho nhau.. • Sẽ ñượctự ñộng gọikhi khởi

Trang 1

L Ớ P VÀ ðỐ I T ƯỢ NG

Ch ươ ng 3

1

N ộ i dung

N ộ i dung

• L ớ p : khai báo, ñị nh ngh ĩ a hàm thành viên.

• ðố i t ượ ng : khai báo, s ử d ụ ng, gán.

• S ơ l ượ c v ề hàm xây d ự ng, hàm h ủ y

• D ữ li ệ u và hàm thành viên t ĩ nh

• D ữ li ệ u và hàm thành viên t ĩ nh

• Khai thác 1 l ớ p

2

L ớ p

L ớ p

Khai báo

class <Tên l ớ p {

Thu ộ c tính truy c ậ p :

<Khai báo thành ph ầ n d ữ li ệ u>

Thu ộ c tính truy c ậ p :

<Khai báo các hàm thành viên>

};

};

Sơ ñồ lớp

ñiểmtrong

không gian

2 chiều

L ớ p

L ớ p

Định nghĩa hàm thành viên

<Ki ể u tr ả v ề > <Tên l ớ p> :: <Tên hàm>( Các tham s ố + Ki ể u )

Toán tử chỉ phạm vi

{

< Khai báo các d ữ li ệ u c ụ c b ộ c ủ a hàm>

< Thân hàm - N ộ i dung hàm >

< Câu l ệ nh return >

}

Trang 2

L ớ p

L ớ p

Ví dụ

5

ðố i t ượ ng

ðố i t ượ ng

• Kh ở i t ạ o ñố i t ượ ng

– D ạ ng bi ế n: <Tên lớp> <Tênñối tượng>;

VD: Diem a, b;

– D ạ ng m ả ng: <Tên lớp> <Tên mảng>[Kích thước];

6

a

x y

1000H

b

x y

x y

1008H

• Kh ở i t ạ o ñố i t ượ ng

– Dạng con trỏ :

VD: Diem *pa, *ds;

pa= new Diem; ds= new Diem[10];

delete pa; delete[] ds;

ðố i t ượ ng

ðố i t ượ ng

Chú ý: Phảic  pthu h  ivùng nhớcho con trỏ ñối tượng

y

1060H 1060

x y

1064H

*ds 1064

• S ử d ụ ng ñố i t ượ ng

– Khi khởi tạo ñối tượng xong, ta có thể :

• Truy xuất ñến dữ liệu thành viên của ñối tượng

• Gọi hàm trên ñối tượng

tùy theo thuộc tính truy cập của các thành phần ñó

ðố i

ðố i t t ượ ượ ng ng

Trang 3

Ví dụ

ðố i

ðố i t t ượ ượ ng ng

9

• Phép gán ñố i t ượ ng:

– Dùng dấu= ( có sẵn trong ngôn ngữC++)

– Thực chất làgán tươngứng các thành phần dữliệucủa hai ñối tượng cho nhau

– Chỉñ ñ úng úng khi thành ph ầ n d ữ li ệ ukhông có con trỏ

ðố i

ðố i t t ượ ượ ng ng

=> Phảiñịnh nghĩa lại phép gán khi dữliệu có con trỏ

10

void main() { Diem a; a.KhoiTao(10,20);

Diem b, *pb;

b = a; b.InDiem(); // In ra (10, 20)

pb = new Diem;

*pb = a; pb->InDiem(); // In ra (10, 20)

Hàm

Hàm xây xây d d ự ự ng ng – – Hàm h Hàm h ủ ủ y y

• Hàm xây d ự ng (Constructor)

– T ạ i sao c ầ n hàm xây d ự ng ?

hiệu ứng phụ

Cần phải khởi tạo giá trị ban ñầu

cho các dữ liệu thành viên

• Hàm xây d ự ng (constructor)

– Dùng ñể kh ở i t ạ o ñố i t ượ ng:

• Gán giá trị ñầu cho các dữliệu thành viên

• Cấp vùng nhớcho các con trỏthành viên

– Cú pháp:

Hàm xây d ự ng Hàm xây d ự ng – – Hàm h Hàm h ủ ủ y y

– Cú pháp:

• Cùng tênvới tên lớp, không có trịtrảvề(kểcảvoid)

• Có thểkhông có hay có nhiều tham số

• Có thểkhông có, có 1 hay nhiều hàm xây dựng

– S ử d ụ ng :

• Khôngñược gọi trực tiếp

• Sẽ ñượctự ñộng gọikhi khởi tạoñối tượng

Trang 4

• Ví d ụ 1 v ề hàm xây d ự ng

class Diem {

int x,y;

public :

Diem();// xd mặ c nhiên

Diem( int );

void main() {

// Goi Diem()

Diem a;

// In (0,0)

a InDiem();

// Diem(int,int)

Diem b(10,5);

// Diem(int)

Hàm xây d ự ng

Hàm xây d ự ng – – Hàm h Hàm h ủ ủ y y

13

Diem( int );

Diem( int , int );

};

Diem::Diem()

{ x=y=0; }

Diem::Diem( int a)

{ x = y = a; }

Diem::Diem( int h, int t)

{ x=h; y=t; }

// Diem(int)

Diem c(3);

Diem *pa = new Diem();

Diem *pb = new Diem(10,5);

Diem *pc = new Diem(3);

// Goi Diem()

Diem ds1[10];

// Goi Diem()

Diem *ds2 = new Diem [10];

}

• Ví d ụ 2 v ề hàm xây d ự ng

Hàm xây d ự ng Hàm xây d ự ng – – Hàm h Hàm h ủ ủ y y

14

• Hàm h ủ y (destructor)

– Dùng ñể thu h ồ i vùng nh ớñã cấp cho các dữ liệu thành

viên là con trỏ của ñối tượng, khi hủy bỏ ñối tượng

=> delete các con trỏ là dữ liệu thành viên

– Một lớp có thể không có hoặc chỉ có duy nhất 1 hàm hủy

Hàm xây d ự ng

Hàm xây d ự ng – – Hàm h Hàm h ủ ủ y y

– Cú pháp : ~<Tên lớp> ( ) { … }

– Không ñược gọi trực tiếp mà sẽ ñược tự ñộng gọi khi hủy

bỏ ñối tượng

VD: Diem::~Diem () { }

SinhVien::~SinhVien() {

delete[] hoten;

}

Các lo ạ i ñố i t ượ ng Các lo ạ i ñố i t ượ ng

ðố i t ượ ng toàn c ụ c - ðố i t ượ ng c ụ c b ộ

– ðối tượng toàn cục :

• Khai báo ngoàicác lớp và ngoài hàm main()

• Sẽ ñược khởi tạo(tự ñộng gọi hàm xây dựng tương ứng) trước khihàm main() thực thi

• Sẽ ñược hủy bỏ( tự ñộng gọi hàm hủy cho ñối tượng ) sau khikết thúc hàm main()

– ðối tượng cục bộ :

• Khai báo trongmột hàm

• Sẽ khởi tạo trong khi thực thihàm ñó

• Sẽ ñược hủy bỏ( tự ñộng gọi hàm hủy cho ñối tượng ñó) trước khihàm kết thúc

Trang 5

D ữ li ệ u và hàm thành viên t ĩ nh

D ữ li ệ u và hàm thành viên t ĩ nh

• D ữ li ệ u thành viên t ĩ nh (static)

– Là dữ liệu thành viên dùng chung cho tất cả các ñối tượng

của cùng 1 lớp => tồn tại ñộc lập với các ñối tượng

– Giống như 1 biến toàn cục

– Phải ñược khởi tạo bên ngoài của lớp

– Thường ñược sử dụng ñể ñếm số lượng ñối tượng hiện có

17

Tại thời ñiểm này

dem = ?

• Hàm thành viên t ĩ nh (static)

– ðộc lập với cácñối tượng

=> khi gọi hàm không cầnñối tượng nào :

<Tên lớp>::<Tên hàm> (danh sách tham số) – Chỉcần thêmstaticvào trước khai báo hàm trong lớp

D ữ li ệ u và hàm thành viên t ĩ nh

D ữ li ệ u và hàm thành viên t ĩ nh

– Giống như1 hàm toàn cục

18

Khai thác m ộ t l ớ p

Khai thác m ộ t l ớ p

• Khai báo l ớ p : file <tên lớ p>.hpp

ðị nh ngh ĩ a hàm thành viên : file <tên lớ p>.cpp

• S ử d ụ ng l ớ p : trong 1 file khác vidu.cpp

Diem.hpp Diem.cpp Vidu.cpp

Diem.hpp

class Diem {

int x,y;

};

Diem.cpp

#include “Diem.hpp”

Diem::Diem() {… } void Diem::InDiem() { … }

Vidu.cpp

#include “Diem.cpp”

void main () { Diem a;

a.InDiem();

….

}

• Tránh ñị nh ngh ĩ a l ớ p nhi ề u l ầ n :

ðể tránh #include nhiều lần một lớp có trong nhiều tập tin khác nhau,

Khai thác m ộ t l ớ p Khai thác m ộ t l ớ p

ta dùng các từ khóa tiền

xử lý

#ifndef

#define

#endif

Ngày đăng: 30/01/2016, 10:51

TỪ KHÓA LIÊN QUAN