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

Bài giảng lập trình hướng đối tượng chương 1 GV dương khai phong

86 202 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 86
Dung lượng 8,43 MB

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

Nội dung

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục  Lập trình hướng đối tượng OOP  Đối tượng và lớp trong OOP  Một số khái niệm khác trong OOP  Chương 1: Tổng quan về OOP... http://sit

Trang 1

ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong

Số tiết lý thuyết: 45 tiết

Số tiết thực hành: 30 tiết

1

GVHD: Dương Khai Phong – Email khaiphong@gmail.com

Trang 2

Chương 1: Tổng quan về OOP

Chương 2: Lớp & đối tượng

Chương 3: Hàm và hàm đa năng trong OOP

Chương 4: Đa năng hóa toán tử

Chương 5: Sự kế thừa và tính đa hình

 Nội dung môn học:

Trang 3

http://sites.google.com/site/khaiphong

3

 Nội dung môn học:

Trang 4

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục

Lập trình hướng đối tượng (OOP)

Đối tượng và lớp trong OOP

Một số khái niệm khác trong OOP

 Chương 1: Tổng quan về OOP

Trang 5

http://sites.google.com/site/khaiphong

5

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục

 Chương 1: Tổng quan về OOP

Trang 7

Ví dụ: viết chương trình xuất bảng cửu chương

include “stdio.h” // Khai báo thư viện

void main(){

for (int i=2;i<10;i++) {

for (int j=1;j<10;j++) printf ("%d*%d=%d",i,j,i*j);

printf ("\n");

}

}

Trang 8

Lập trình có cấu trúc/thủ tục

Ưu điểm:

 Chương trình cục bộ hóa, dễ hiểu, dễ bảo trì hơn

Dễ dàng tạo ra các thư viện phần mềm

 Khó đảm bảo tính đúng đắn của dữ liệu

 Không tự động khởi tạo hay giải phóng dữ liệu động

Trang 9

1 Khai báo thư viện

2 Khai báo hằng, biến, cấu trúc TOÀN CỤC

Trang 10

Các lưu ý quan trọng trong lập trình

float: %f double: %lf

char: %c

string: %s

(nếu ngôn ngữ lập trình

có hỗ trợ)

Trang 11

 Chương 2: Lớp và đối tượng trong OOP

 Các cấu trúc điều khiển:

 Hàm:

 Lưu ý: có 2 loại tham số là tham số

đầu vào (tham trị) và tham số đầu ra (tham biến)

LẶP

ĐIỀU KIỆN

ĐIỀU KIỆN

RẼ NHÁNH

IF IF ELSE

SWITCH CASE

FOR WHILE DO WHILE

<Kiểu_data> Tên_Hàm(DS_Tham số) {

// Định nghĩa hàm

return <giá_trị_trả_về>

}

Trang 12

Các lưu ý quan trọng trong lập trình

Trang 13

ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong

13

Trang 15

http://sites.google.com/site/khaiphong

15

 Bài tập chương 1 – Phần lập trình có cấu trúc/thủ tục:

Buổi 1

1 Viết chương trình nhập dài (height), rộng

(width) Tính chu vi P và diện tích S của hình chữ nhật

2 Viết chương trình nhập 3 cạnh tam giác a,b,c

Tính P và S của tam giác

3 Viết chương trình kiểm tra một số nguyên nhập

từ bàn phím có phải là số nguyên tố hay không?

4 Viết chương trình kiểm tra ngày tháng năm có

hợp lệ hay không?

5 Viết chương trình cộng, trừ hai phân số

Trang 16

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục

 Chương 1: Tổng quan về OOP

Trang 17

http://sites.google.com/site/khaiphong

17

Lập trình hướng đối tượng (OOP)

 Chương 1: Tổng quan về OOP

Lập trình hướng đối tượng ( O bject

O riented P rogramming - LTHĐT) là phương

pháp lập trình lấy đối tượng làm nền tảng để

xây dựng thuật giải, xây dựng chương trình

Đối tượng là gi?

Trang 18

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục

 Chương 1: Tổng quan về OOP

Trang 19

http://sites.google.com/site/khaiphong

19

Đối tượng và lớp trong OOP

 Chương 1: Tổng quan về OOP

• Đối tượng (object):

– Khái niệm đối tượng trong thế giới thực được hiểu như là

một thực thể: người, vật hoặc một bảng dữ liệu…

– Đối tượng phục vụ hai mục đích: giúp hiểu rõ thế giới

thực và cung cấp cơ sở cho việc cài đặt trên máy tính

– Mỗi đối tượng có một nét nhận dạng, thuộc tính để phân biệt với các đối tượng khác

– Ví dụ:

- Đối tượng Sinh viên , Nhân viên

- Đối tượng thời gian

Trang 20

Đối tượng và lớp trong OOP

• Lớp: (class)

– Các đối tượng có các đặc tính tương tự nhau được gom

chung lại thành lớp đối tượng Ví dụ Người là một lớp đối tượng Một lớp đối tượng được đặc trưng bằng các thuộc tính và các hoạt động (hành vi,thao tác)

– Một thuộc tính (attribute): là một giá trị dữ liệu cho mỗi

đối tượng trong lớp (Ví dụ:Tên, Tuổi, Cân nặng là các thuộc tính của Người)

– Một thao tác (operation): là một hàm hay một phép biến

đổi có thể áp dụng vào hay áp dụng bởi các đối tượng trong lớp

Trang 21

http://sites.google.com/site/khaiphong

21

 Giới thiệu và ôn tập LT có cấu trúc/thủ tục

 Chương 1: Tổng quan về OOP

Trang 22

Một số khái niệm khác trong OOP

Trang 23

http://sites.google.com/site/khaiphong

23

Một số khái niệm khác trong OOP

 Chương 1: Tổng quan về OOP

được gọi là một phương

thức (method)

Trang 24

Một số khái niệm khác trong OOP

Trang 25

http://sites.google.com/site/khaiphong

25

Một số khái niệm khác trong OOP

 Chương 1: Tổng quan về OOP

Trang 26

Một số khái niệm khác trong OOP

 Sơ đồ đối tượng:

 Là sơ đồ dùng để mô tả lớp đối tượng Sơ đồ đối tượng bao gồm sơ

đồ lớp và sơ đồ thể hiện

 Sơ đồ lớp: mô tả các lớp đối tượng trong hệ thống

 Một lớp đối tượng được diễn tả bằng một hình chữ nhật có 3 phần:

 Phần đầu chỉ tên lớp

 Phần thứ hai mô tả các thuộc tính

 Phần thứ ba mô tả các thao tác của các đối tượng trong lớp đó

Sinh viên

Họ tên Năm sinh

Mã số Điểm TB

1984 0610234T

Trang 27

http://sites.google.com/site/khaiphong

27

Một số khái niệm khác trong OOP

 Chương 1: Tổng quan về OOP

Ví dụ:

Đối với nhân viên trong cùng một công ty nhưng cách tính lương của nhân viên văn phòng khác cách tính lương của nhân viên sản xuất

Trang 28

Một số khái niệm khác trong OOP

để tạo ra các lớp mới từ một hay nhiều lớp đã có

Ví dụ:

Đối Xét về bản chất: NV_VP

và NV_SX đều là nhân viên nên nó phải có các thuộc tính chung: MaNV, Hoten, CMND của một ngưởi nhân viên => kế thừa từ lớp NV

Trang 29

http://sites.google.com/site/khaiphong

29

Một số khái niệm khác trong OOP

 Chương 1: Tổng quan về OOP

Là cơ chế ràng buộc dữ liệu

và thao tác trên dữ liệu đó thành một thể thống nhất, tránh được các tác động bất ngờ từ bên ngoài

Ví dụ:

Một lớp có thể có nhiều thuộc tính và hàm Ta có thể xét quyền truy cập cho các thuộc tính và hàm này

Trang 30

Chương 1: Tổng quan về OOP

 Nội dung môn học:

Trang 31

http://sites.google.com/site/khaiphong

31

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

Hàm hủy (Destructor)

Các lưu ý quan trọng trong OOP

 Chương 2: Lớp & đối tượng

 Chương 2: Lớp và đối tượng trong OOP

Trang 32

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 33

<định nghĩa của các hàm thành phần chưa được định nghĩa bên

trong khai báo lớp>

Lưu ý cuối lớp phải có dấu “;”

Trang 34

Khai báo lớp, đối tượng

Ví dụ: khai báo lớp HINHCHUNHAT

Trang 35

http://sites.google.com/site/khaiphong

35

Khai báo lớp, đối tượng

 Định nghĩa các hàm thành phần ở bên ngoài khai báo lớp:

 Chương 2: Lớp và đối tượng trong OOP

<Kiểu giá trị trả về> <tên lớp>::<tên hàm> ( [danh sách tham số] )

{

[nội dung]

[return giá_trị_nếu có;]

}

 Tạo đối tượng:

<tên lớp> <Tên đối tượng>

 Gọi hàm thành phần của lớp:

<Tên đối tượng> <tên hàm thành phần>(<danh sách các tham số nếu có>);

Toán tử phạm vi

Trang 36

Khai báo lớp, đối tượng

Ví dụ: khai báo và định nghĩa lớp HINHCHUNHAT

Trang 38

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 39

http://sites.google.com/site/khaiphong

39

Từ khoá xác định thuộc tính truy xuất

 Từ khoá là gì? Truy xuất là gì?

Trong lớp có thể có nhiều nhãn

private private.

Mỗi nhãn này có phạm vi ảnh hưởng cho đến khi gặp một nhãn kế tiếp hoặc hết khai báo lớp

Nhãn private đầu tiên có thể bỏ đi

vì C++ ngầm hiểu rằng các thành phần trước nhãn public đầu tiên là private

Trang 40

Từ khoá xác định thuộc tính truy xuất

Ý nghĩa của các từ khoá truy xuất: các từ khoá này xác

định khả năng truy xuất thành phần (thuộc tính, phương thức) của một lớp

private: những thành phần được liệt kê bên trong phần

private chỉ được truy xuất bên trong phạm vi lớp và không

được phép kế thừa

public: những thành phần được liệt kê bên trong phần

public được truy xuất từ bất kỳ phạm vi nào và được kế

thừa lại trong lớp dẫn xuất (kế thừa)

protected được truy xuất từ bên trong phạm vi lớp,từ lớp

dẫn xuất (kế thừa) và được kế thừa lại trong lớp dẫn xuất

Trang 41

http://sites.google.com/site/khaiphong

41

Từ khoá xác định thuộc tính truy xuất

Ví dụ về từ khoá truy xuất:

 Chương 2: Lớp và đối tượng trong OOP

Trang 42

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 43

http://sites.google.com/site/khaiphong

43

Con trỏ this

 Con trỏ là gì?

 Con trỏ this được dùng để tham

chiếu đến chính địa chỉ của đối

tượng của lớp

 Dùng toán tử -> để truy cập đến

các thành viên của đối tượng

Công dụng:

 Giúp ta truy cập, phân biệt

được các thành viên ngay bên trong lớp

 Khi hàm thành viên cần trả giá

}

Trang 44

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 45

28

123456

Per son b

tuoi CMND

28

123456

Trang 46

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 47

http://sites.google.com/site/khaiphong

47

Hàm thiết lập (Constructor)

 Constructor là một loại phương thức đặc biệt dùng để khởi

tạo thể hiện của lớp một cách tự động

 Bất kể loại cấp phát bộ nhớ nào được sử dụng (tự động, tĩnh, động), mỗi khi một thể hiện của lớp được tạo, một hàm constructor nào đó của lớp sẽ được gọi

 Một lớp không có khai báo bất kỳ hàm thiết lập nào thì hàm thiết lập không đối số được tạo ra mặc định

 Đặc điểm của hàm thiết lập (khởi tạo):

– Constructor có cùng tên với tên của lớp

– Constructor không có giá trị trả về (kể cả void)

– Constructor phải có thuộc tính public

– Constructor có thể được khai báo chồng như các hàm

Trang 48

Lưu ý: ta có thể định nghĩa các hàm khởi tạo ngay bên trong

việc khai báo lớp hoặc định nghĩa bên ngoài lớp

Hàm thiết lập (Constructor)

Trang 49

http://sites.google.com/site/khaiphong

49

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

 Chương 2: Lớp và đối tượng trong OOP

Trang 50

Hàm hủy (Destructor)

 Destructor cũng như phương thức constructor (được gọi khi

một đối tượng được tạo), loại phương thức thứ hai là destructor, được gọi ngay trước khi thu hồi một đối tượng

 Destructor thường được dùng để thực hiện mọi việc dọn dẹp

cần thiết trước khi một đối tượng bị huỷ

 Đặc điểm của hàm huỷ (destructor):

– Destructor có cùng tên với tên của lớp nhưng bắt đầu dấu ~ – Destructor không có giá trị trả về (kể cả void)

– Destructor phải có thuộc tính public

– Destructor không có các tham số

Trang 51

Hàm hủy (Destructor)

// Hàm huỷ của lớp HCN

Trang 53

http://sites.google.com/site/khaiphong

53

 Bài tập hàm khởi tạo và hàm huỷ:

1 Khai báo lớp phân số(tuso,mauso) gồm các hàm khởi tạo ứng

với định nghĩa trong hàm main như sau:

3 Khai báo lớp mảng các số nguyên gồm n phần tử

4 Khai báo lớp ma trận vuông n*n phần tử

Trang 54

 Khai báo lớp, đối tượng

 Từ khoá xác định thuộc tính truy xuất

Con trỏ this

 Phép gán đối tượng

Hàm thiết lập (Constructor)

 Chương 2: Lớp & đối tượng

Trang 56

Các lưu ý quan trọng trong OOP

#include "iostream“ // trong VS 2008 phần khai báo bắt buộc

using namespace std; // trong VS 2008 phần khai báo bắt buộc

Trang 57

 Chương 2: Lớp và đối tượng trong OOP

 Đối tượng toàn cục:

Là đối tượng được khai báo bên ngoài hàm main() và chỉ

bị hủy khi chương trình kết thúc

Ví dụ: cho biết kết quả của

đoạn chương trình sau:

class Test{

public: Test(){cout<<"Xin chao";}

Trang 58

Các lưu ý quan trọng trong OOP

 Đối tượng toàn cục:

Là đối tượng được khai báo bên ngoài hàm main() và chỉ

bị hủy khi chương trình kết thúc

Ví dụ: cho biết kết quả của

đoạn chương trình sau

class Test{

public: Test(){cout<<"Xin chao";}

Hi

- Kết thúc

* Các bước thực hiện:

1/ Gọi hàm khởi tạo của đối tượng a là

Test (do a là đối tượng toàn cục)

2/ Thực hiện lệnh trong hàm main

3/ Kết thúc hàm main, giải phóng đối

tượng a

Trang 59

 Chương 2: Lớp và đối tượng trong OOP

 Đối tượng là thành phần dữ liệu của lớp:

Là đối tượng được khai báo bên trong một lớp

Ví dụ: cho biết kết quả của đoạn

chương trình sau:

class Diem{

double x,y;

public: Diem(double xx,double yy){

};

Diem D(1,1);

Tamgiac T;

Trang 60

 Đối tượng là thành phần dữ liệu của lớp:

Là đối tượng được khai báo bên trong một lớp

Ví dụ: cho biết kết quả của đoạn

chương trình sau

class Diem{

double x,y;

public: Diem(double xx,double yy){

Các lưu ý quan trọng trong OOP

(click vào màn hình đen để xem tiếp các bước)

1/ Khai báo đối tượng D không gây ra báo lỗi

2/ Khai báo đối tượng T gây ra báo lỗi do:

Trong đối tượng T có các thành phần dữ liệu là đối tượng (a,b,c)

mà không có hàm khởi tạo không đối số tương ứng

Khắc phục:

- Cách 1: khai báo và định nghĩa

constructor không đối số cho lớp Diem

- Cách 2: khai báo và định nghĩa

constructor tam giác không đối số cho lớp Tamgiac Trong đó xác định hàm khởi tạo cho đối tượng

là thành phần trong lớp

Trang 61

 Đối tượng là thành phần dữ liệu của lớp:

Là đối tượng được khai báo bên trong một lớp

Ví dụ: cho biết kết quả của đoạn

chương trình sau

class Diem{

double x,y;

public: Diem(double xx,double yy){

xB, double yB, double xC, double yC):a(xA,yA), b(xB,yB),c(xC,yC) {}

void Ve(){…};

};

Diem D(1,1);

Tamgiac T;

Trang 62

Các lưu ý quan trọng trong OOP

Ví dụ: (xem ví dụ slide sau)

Trang 63

Ví dụ: (xem ví dụ slide sau)

void Ve(Diem p); // Tham số hình thức là đối tượng

void Ve(Diem *p); // Tham số hình thức là con trỏ đối tượng

void Ve(Diem &p); // Tham số hình thức là tham chiếu đối tượng

Trang 64

Các lưu ý quan trọng trong OOP

Trong OOP, toán tử newdelete

thường được dùng để cấp phát và giải phóng bộ nhớ thay cho toán tử malloc

free

Ví dụ:

int *pi;

// cấp phát một vùng nhớ kiểu int

pi=new int;

// khai báo một đối tượng kiểu point

Trang 65

nhiên, ta phải sử dụng thêm [ ] trong

Trang 66

Các lưu ý quan trọng trong OOP

Ví dụ 1: cho biết dòng nào sau đây

gây ra lỗi và giải thích

*Giải thích:

Dòng 4 gây ra lỗi do num là một

hằng số nên không thể gán lại giá trị mới

Dòng 5 gây ra lỗi (tương tự)

1 void main(){

3 const int num = 5;

4 num = 200;

5 num++;

6 };

Trang 67

Ví dụ 2: giải thích ý nghĩa của các

khai báo con trỏ sau

*Ý nghỉa:

Dòng 1: khai báo 1 biến con trỏ số

nguyên

Dòng 2: khai báo 1 hằng con trỏ

số nguyên (pointer to constant)

Dòng 3: khai báo 1 con trỏ hằng

số nguyên (constant pointer)

Dòng 4: khai báo con trỏ vừa là

hằng con trỏ vừa là con trỏ hằng

Giả sử ta có biến số nguyên num (int num)

1 int *p;

2 const int *p = &num;

3 int * const p =&num;

4 const int * const p = &num;

Ngày đăng: 03/12/2015, 19:30

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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