1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng C++‎ - Chương 3: Lớp và đối tượng

20 16 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 20
Dung lượng 0,97 MB

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

Nội dung

Bài giảng Lập trình hướng đối tượng C++‎ - Chương 3: Lớp và đối tượng cung cấp cho người học những kiến thức như: 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; Khai thác 1 lớp. Mời các bạn cùng tham khảo!

Trang 1

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

Chương 3

Trang 2

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

• Khai thác 1 lớp

Trang 3

• 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ểm trong

không gian

2 chiều

Trang 4

• Đị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 ) {

< 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 >

Toán tử chỉ phạm vi

Trang 5

• Ví dụ

Trang 6

Đố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];

VD: Diem mang[10];

a

x y

1000H

x y 1008H

Trang 7

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;

Chú ý:Phải cấpthu hồi vùng nhớ cho con trỏ đối tượng

y

1060H

106 0

x

1064H

*ds 106 4

Đối tượng

Trang 8

• 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 tượng

Trang 9

• Ví dụ

Đối tượng

Trang 10

• 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ệu của hai đối tượng cho nhau

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

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

void main() {

Diem a; a.KhoiTao(10,20);

Diem b, *pb;

Đối tượng

Trang 11

Hàm xây dựng – Hàm hủ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

Trang 12

• 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:

• Cùng tên vớ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 :

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

Trang 13

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

class Diem {

int x,y;

public:

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

Diem(int);

Diem(int,int);

};

Diem::Diem()

{ x=y=0; }

Diem::Diem(int a)

{ x = y = a; }

Diem::Diem(int h, int t)

void main() {

// Goi Diem()

Diem a;

// In (0,0)

a InDiem();

// Diem(int,int)

Diem b(10,5);

// 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];

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

Trang 14

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

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

Trang 15

• 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 – 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;

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

Trang 16

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ài cá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 khi hàm main() thực thi

• Sẽ được hủy bỏ ( tự động gọi hàm hủy cho đối tượng )

sau khi kết thúc hàm main()

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

• Khai báo trong một hàm

• Sẽ khởi tạo trong khi thực thi hàm đó

Trang 17

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ó

Trang 18

• 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êm static vào trước khai báo hàm trong lớp – Giống như 1 hàm toàn cục

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

Trang 19

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

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();

….

}

Trang 20

• 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,

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

xử lý

#ifndef

#define

Khai thác một lớp

Ngày đăng: 19/08/2021, 14:50

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

w