Một hành động cần có của một đối tượng hoặc thực thể khi được biểu thị trong một lớp được gọi là một phương thức.. - VD: các phương thức của sinh viên: Viết lý lịch,.[r]
Trang 1CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Sự khác nhau giửa lập trình hướng đối tượng và lập trình cấu trúc (truyền
Trang 2CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Diễn đạt “thiếu tự nhiên”
Có học sinh x
“Viết lý lịch cho học sinh x”
“x ơi, viết lý lịch đi em”
Diễn đạt nào tự nhiên hơn?
“x ơi, viết lý lịch đi em”
VietLyLich(x);
x.VietLyLich();
NHƯỢC ĐIỂM CỦA POP
Trang 3CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Khó mô tả những quan hệ phức tạp của thế giới
tự nhiên Biểu diễn dạng cấu trúc “phức tạp”
không phải là dễ dàng đối với nhiều người
Quan hệ giữa các dữ liệu được biểu diễn bằng cấu trúc lồng nhau hoặc một pointer
Tính phân lớp khó được phát hiện, có khó
khăn trong biểu diễn lẫn tính dễ hiểu
Trang 4CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Bảo mật kém do không thể giới hạn truy xuất đến một dữ liệu
x.Age=1000;
x.Score=-20;
}
Trang 5CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Cần một phương pháp lập trình khác giúp giải quyết những nhược điểm này.
OOP có những đặc điểm vượt trội so với POP và là hướng lập trình chủ đạo hiện
nay
Trang 6Diễn đạt hướng đối tượng
Thí dụ 1 : Xét hai diễn đạt:
• Nhân viên văn phòng viết lý lịch cho sinh viên “Hoàng”
ViếtLýLịch(Hoàng);
• Hoàng ơi, viết lý lịch đi em.Hoàng.ViếtLýLịch();
Theo bạn, tình huống nào đúng với thực tế?
Thí dụ 2 : Xét hai diễn đạt:
• Tính tổng mảng a có n phần tử Tổng(a,n);
• Mảng a ơi, tình tổng đi em: a.Tổng();
Xem a là một đối tượng.
Trang 7Diễn đạt hướng đối tượng
• Diễn đạt tác vụ theo hướng thủ tục :
TênTácVụ(ĐốiTượngDữLiệu); Tổng(a,n);
• Diễn đạt tác vụ theo hướng đối tượng :
ĐốiTượngDữLiệu.TênTácVụ(); a.Tổng();
• Xem dữ liệu là đối tượng làm chương trình
tự nhiên hơn vì giống thực tế hơn.
Trang 8CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
II CÁC KHÁI NIỆM HƯỚNG ĐỐI TƯỢNG CƠ BẢN
Đối tượng-Object
Lớp-Class
Tính thừa kế- Inheritance
Tính đa hình-Polymorphism
Trang 9CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Đối tượng - Object:
Một đối tượng là một khái niệm hoặc nội dung có các biên được định nghĩa có liên
quan đến vấn đề mà ta đang giải quyết
- Các thuộc tính: Tính chất/đặc tính riêng
- Các hành động: Các hành động khả dĩ của đối tượng
Tam
giác
Trang 10CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢNLớp - Class:
Một lớp là một cách gom nhóm các đối tượng có cùng các tính chất, cách ứng xử (hành động) và các mối quan hệ chung
VD: Hình học, Người, Sinh viên, Nhân viên
Trang 11CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢNTính chất/thuộc tính của lớp:
Một đặc tính cần có của một đối tượng
hoặc thực thể khi được biểu thị trong một lớp được gọi là một tính chất
-VD: thuộc tính của sinh viên: MSV, Họ tên, Ngày sinh, Lớp học, Điểm TB,…
- VD: thuộc tính của nhân viên là gì???!!
Trang 12CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Trang 13CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
PHÂN TÍCH CÁC THUỘC TÍNH VÀ PHƯƠNG THỨC CỦA LỚP
Trang 14CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Trang 15CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Đơn thừa kế: Là tiến trình tạo ra lớp mới từ một lớp hiện có
Đa thừa kế: Là tiến trình tạo ra lớp mới từ hai hay nhiều lớp hiện có
NGƯỜI
Sinh viên Nhân viên
ĐỘNG VẬT
Côn
Trang 16CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Trang 17CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Trang 18CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
CÁC THÀNH VIÊN RIÊNG VÀ CHUNG CỦA LỚP
Dữ liệu hoặc các hàm Dữ liệu hoặc các hàm
Trang 19CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
CÁC THÀNH VIÊN RIÊNG VÀ CHUNG CỦA LỚP
};
void diem :: khoitao(int h, int t)
{ x=h; y=t ; } void diem :: hien() { cout<< “Dang o diem (“ <<x<<”,”
<<y<<”)\n”;
} void main()
{ diem a;
a.khoitao(5,4);
a.hien();
}
Trang 20CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
HÀM THÀNH VIÊN
- Một thông điệp cho một đối tượng tương ứng với một lệnh gọi hàm.
- Các thông điệp có thể có tham số hoặc không.
- Để đáp lại một thông điệp, đối tượng thi hành một
phương thức, tương ứng một thân thủ tục.
- Một phương thức là một hàm nằm trong lớp.
- Trong lập trình hướng đối tượng ta gửi thông điệp thay
vì gọi các hàm <đối tượng>.<thông điệp>
- Một hàm được khai báo dưới dạng một thành viên của một lớp được gọi là hàm thành viên (member funstions).
- Xem lại vd ở slide trước – xác định các hàm thành viên.
Trang 21CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
HÀM THÀNH VIÊN
- Các hàm thành viên thường nằm trong phần chung của
lớp.
- Các hàm, các phương thức trong lớp phải được định
nghĩa trước khi dùng.
- Phần khai báo phải có các gía trị trả về và các đối số của
nó (nếu có).
- Các hàm thành viên không được trùng tên với bất kỳ một thành viên dữ liệu nào khác trong lớp.
Trang 22CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
{ assign value to object_data }
member_funtion2() { display data }
Trang 23CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
SỬ DỤNG LỚP – Định nghĩa đối tượng
Exampleclass object1, object2;
- Lớp Exampleclass không tạo đối tượng nào hết, chỉ mô tả đối tượng tạo ra có dạng ra sao.
- Định nghĩa một đối tượng cũng tương tự như định nghĩa một biến.
- Khi định nghĩa một đối tượng thì không gian sẽ được
chừa riêng cho nó trong bộ nhớ.
<Tên lớp> <đt1, đt2, đt3,…>;
VD: Diem A, B;
Trang 24CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
<tên đối tượng>.<tên hàm thành viên>()
- Truy cập dữ liệu thành viên lớp:
<tên đối tượng>.<tên dữ liệu thành viên>
Trang 25CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
SỬ DỤNG HÀM – Truyền và trả về đối tượng
- Việc truyền và trả về đối tượng cũng như truyền và trả kiểu dữ liệu cho hàm.
- Việc truyền và trả dữ liệu này không thật hiệu quả.
Trang 26CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
CÁC NGÔN NGỮ HƯỚNG ĐỐI TƯỢNG
Trang 27CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
BÀI TẬP TRÊN LỚP
1 - Phân tích lớp hinhchunhat (Hình chữ nhật)
- Khai báo lớp hinhchunhat
- Viết hàm main khai thác lớp hinhchunhat
+ Tạo một hinhchunhat A
+ Nhập thông tin cho hình A
+ In thông tin của hình A
+ In diện tích của hình A
Trang 28CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
Trang 29CHƯƠNG I: CÁC KHÁI NIỆM CĂN BẢN
BÀI TẬP TRÊN LỚP
3 Xây dựng lớp CAccount
- Dữ liệu thành viên: Tên, Mã số tài khoản, Tiền-Hàm thành viên:
+ Nhập thông tin cho tài khoản
+ In thông tin cho tai khoản
+ Lấy thông tin số tiền trong tài khoản
Viết hàm main để khai thác lớp
+ Nhập thông tin cho một danh sách TK
+ Tính tổng số tiền của danh sách
Trang 30• Một đối tượng sách trong hệ thống quản lý thư viện có các thuộc tính:
• - Tên sách
• - Tổng số quyển sách
• - Số quyển sách đang cho mượn
• Xây dựng lớp CSach với các thuộc tính tên và các phương thức sau:
• - Phương thức nhập liệu cho đối tượng từ bàn phím Các thông tin cần nhập là tên sách, tổng số sách, số đang cho mượn
• - Phương thức in thông tin đối tượng ra màn hình
• - Phương thức tính số sách còn lại trong thư viện (tổng số - số đang cho mượn)
• Trên số lớp đã xây dựng, viết chương trình chính thực hiện các công việc:
• - Nhập danh sách các quyển sách với số lượng các quyển sách được nhập từ bàn phím
• - In ra màn hình các quyển sách hiện có trong thư viện (Số sách còn lại phải lớn hơn 0)