lập trình hướng đối tượngsanghv.com/download/courses/oop2013/lecture/chapter 3.pdf ·...

32
10/4/2013 9:22 μμ 1 Hà Văn Sang Bộ môn: Tin học TC – KT Khoa: Hệ Thống Thông Tin Kinh tế - Học Viện Tài Chính Tel: 0982.165.568 Email: [email protected] Website: http://www.hvtc.edu.vn/sanghv Lập trình hướng đối tượng

Upload: others

Post on 31-Oct-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

10/4/2013 9:22 μμ 1

Hà Văn SangBộ môn: Tin học TC – KTKhoa: Hệ Thống Thông Tin Kinh tế - Học Viện TàiChínhTel: 0982.165.568Email: [email protected]: http://www.hvtc.edu.vn/sanghv

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

Page 2: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

10/4/2013 9:22 μμ 2

CHƯƠNG III

Page 3: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

3/20

1. Xây dựng lớp và đối tượng

a. Khai báo

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

};

Page 4: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

4/20

a. Khai báo

Trong đó:

<tên_lớp>:

do người dùng đặt

tuân theo các qui tắc về tên

Ví dụ: SV, NGUOI, Hoa_Don, ps, Ma_Tran…

Page 5: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

5/20

a. Khai báo

[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

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

Page 6: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

6/20

a. Khai báo

Thành phần của lớp

Có thể gồm:

Dữ liệu

Hàm thành phần

Page 7: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

7/20

a. Khai báo

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

Page 8: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

8/20

a. Khai báo

Khai báo thành phần Hàm thành phầnCá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ố])

{

// <thân hàm>

}

Cách 2: định nghĩa ngay trong lớp

Page 9: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

9/20

a. Khai báo

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

Page 10: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

10/20

a. Khai báo

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àylậ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

Page 11: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

11/20

a. Khai báo

Ví dụ 3:

Xây dựng cấu trúc dữ liệu mô tả các phân số:

Dữ liệu: tử số, mẫu số

Phương thức: nhập, tối giản, in

Lớp các phân số

Page 12: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

12/20

b. Khai báo đối tượng

Cú pháp:

<tên_lớp> <tên_đối_tượng>;

Ví dụ: khai báo 2 đối tượng sinh viên

SV sv1, sv2;

Khi đó sv1, sv2 là hai đối tượng sinh viên

Page 13: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

13/20

c. Truy xuất thành phần

Dữ liệu

<tên_đối_tượng>.<tên_tp_dữ liệu>;

Ví dụ: truy xuất họ tên và ngày sinh của sv

sv1.ht;

sv2.ns;Nếu là con trỏ: <tên_con_trỏ>-><tên_tp_dữ liệu>;

Page 14: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

14/20

c. Truy xuất thành phần

Thành phần hàm

<tên_đối_tượng>.<tên_hàm>([ds đối số]);

Ví dụ: truy xuất phương thức nhập và in của sv

sv1.nhap();

sv2.in();Với con trỏ: <tên_con_trỏ>-><tên_hàm>([đối số]);

Page 15: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

15/20

2. Các phương thức

Một đối tượng thường có 4 kiểu hành vi cơ bản

Các phương thức khởi tạo: Constructor

Các phương thức truy vấn: Queries

Các phương thức cập nhập: Updates

Các phương thức hủy: Destructor

Page 16: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

16/20

a. Hàm khởi tạo

Khai báo:

<tên_lớp>([ds tham số]);

Định nghĩa ngoài lớp:

<tên_lớp>::<tên_lớp>([ds tham số])

{

//thân hàm

}

Page 17: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

17/20

a. Hàm khởi tạo (tiếp)

Như vậy hàm khởi tạo:Có với mọi lớp

Tên hàm giống tên lớp

Không có kiểu nên không cần khai báo

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

Nếu không xây dựng thì chương trình tự độngsinh hàm khởi tạo mặc định

Được gọi tự động khi khai báo thể hiện của lớp

Page 18: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

18/20

a. Hàm khởi tạo (tiếp)

Một số hàm khởi tạo:- Hàm khởi tạo mặc định (default constructor)

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

Khai báo:

<tên_lớp>(const <tên_lớp> &<tên_tham_số>)

Đối tượng mới sẽ là bản sao của đối tượng đã có

Page 19: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

19/20

b. Hàm hủy - Destructor

Khai báo:

~<tên_lớp>();

Chức năng:

- Hủy bỏ, giải phóng các đối tượng khi nó hết phạmvi tồn tại

Page 20: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

20/20

b. Hàm hủy (tiếp)

Như vậy hàm hủy:Không có đối số

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

Không định nghĩa lại

Trùng tên với lớp và có dấu ~ ở trước

Thực hiện một số công việc trứơc khi hệ thốnggiải phóng bộ nhớ

Chương trình dịch tự động sinh hàm hủy mặcđịnh

Page 21: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

21/20

3. Nạp chồng toán tử

Cú pháp:

<kiểu trả về>operator<tên toán tử>([ds tham số])

Định nghĩa ngoài lớp:

<kiểu trả về><tên_lớp>::operator<tên toán tử>([dstham số])

{

//thân hàm

}

Page 22: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

22/20

3. Nạp chồng toán tử (tiếp)

Ví dụ:Nạp chồng toán tử +, * của lớp phân số

Nạp chồng toán tử + vector

Danh sách các toán tử có thể nạp chồng:

+ - * / = < > += -= *= /= << >>

<<= >>= == != <= >= ++ -- % & ^ ! |

~ &= ^= |= && || %= [] () , ->* ->newdelete new[] delete[]

Page 23: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

23/20

3. Nạp chồng toán tử (tiếp)

Chú ý:Chỉ có thể định nghia lại các toán tử ở trên

Không làm thay đổi độ ưu tiên của các toán tử

Với toán tử 2 ngôi: toán tử bên trái là ẩn

toán tử bên phải là đối số

Do đó: số tham số bằng số toán hạng - 1

Page 24: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

24/20

3. Nạp chồng toán tử (tiếp)

Cách gọi hàm toán tử:Dùng như cú pháp thông thường của phép toán

Ví dụ: PS a,b,c; c=a+b;

Dùng như hàm thành phần của đối tượng

Ví dụ:

PS a,b,c;

c=a.operator+(b);

Page 25: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

25/20

Bài tập (week 4)

• Nạp chồng các toán tử của các bài tập trongtuần 3

Page 26: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

26/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:1. Xây dựng lớp phân số gồm các thành phần:-DL: tử số, mẫu số-Pt: nhập, in, tối giản, so sánh 2 psHàm main:-Nhập mảng có n phân số (n<=10)-Sắp xếp mảng PS theo thứ tự giảm dần-In mảng sau khi xếp

Page 27: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

27/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:2. Xây dựng lớp số phức gồm các thành phần:-DL: phần thực, phần ảo-Pt: nhập, in, tính , nhân, chia 2 số phứcHàm main:-Nhập 2 số phức-Tính và in tổng, hiệu hai số phức-In mảng sau khi xếp

papt22

Page 28: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

28/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:3. Xây dựng lớp vectơ gồm các thành phần:-DL: số phần tử, mảng các phần tử-Pt: nhập, in, tổng 2 vectơ, tích vô hướngHàm main:-Nhập 2 vectơ-Tính và in tổng a+b

Page 29: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

29/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:4. Xây dựng lớp ma trận gồm các thành phần:-DL: số dòng, số cột, mảng các phần tử-Pt: nhập, in, kiểm tra ma trận có là đơn vị khôngHàm main:-Nhập ma trận a-Thông báo có là ma trận đơn vị không-In ma trận

Page 30: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

30/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:5. Xây dựng lớp sinh viên gồm các thành phần:-DL: họ tên, ngày sinh, giới tính, lớp (k43/41.01),điểm toán,

lý, hóa, đtb-Pt: nhập, in, tính điểm trung bìnhHàm main:-Nhập danh sách sinh viên-Sắp xếp theo điểm trung bình giảm dần-In danh sách sau khi xếp

Page 31: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

31/20

Bài tập (week 3)

• Sử dụng TC++ để lập trình:6. Xây dựng lớp hóa đơn gồm các thành phần:-DL: 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-Pt: nhập, in, kiểm tra phiếu nhập hay xuấtHàm main:-Nhập danh sách hóa đơn-Tính thành tiền cho các hóa đơn và in tổng thành tiền-In danh sách sau khi xếp theo số tiền giảm dần

Page 32: Lập trình hướng đối tượngsanghv.com/download/Courses/OOP2013/Lecture/Chapter 3.pdf · Phương thức: nhập, tính đtb, in Lớp sinh viên. 10/20 a. Khai báo

32/20

Qui cách nộp bài

Gửi tới địa chỉ: [email protected]: [email protected]êu đề:[Lớp][BT3][Stt][Họ và tên]Ví dụ:[K43/41.01][BT3][14][Lê hoàng Vũ]Hạn nộp: 23h59’ ngày 29/01/2008