Giới thiệu
Các khái niệm cơ bản
Lớp và đối tượng
Kỹ thuật kế thừa và đa hình
Thiết kế chương trình hướng đối tượng
Khuôn mẫu (Template)
Các mẫu thiết kế hướng đối tượng
42 trang |
Chia sẻ: thuychi16 | Lượt xem: 812 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tài liệp môn Lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
G V : T H S . L Ê T H Ị N G Ọ C H Ạ N H
LẬP TRÌNH HƯỚNG ĐỐI
TƯỢNG
2/22/2016 Bài giảng lập trình hướng đối tượng
1
ĐỀ CƯƠNG MÔN HỌC
Giới thiệu
Các khái niệm cơ bản
Lớp và đối tượng
Kỹ thuật kế thừa và đa hình
Thiết kế chương trình hướng đối tượng
Khuôn mẫu (Template)
Các mẫu thiết kế hướng đối tượng
2/22/2016 Bài giảng lập trình hướng đối tượng 2
LẬP TRÌNH CÓ CẤU TRÚC
Tổ chức thành các chương trình con (các module)
Mỗi chương trình con đảm nhận xử lý một công việc nhỏ
hay một nhóm công việc trong toàn bộ hệ thống.
Mỗi chương trình con này lại có thể chia nhỏ thành các
chương trình con nhỏ hơn.
2/22/2016 Bài giảng lập trình hướng đối tượng 3
LẬP TRÌNH CÓ CẤU TRÚC
Sử dụng các lệnh có cấu trúc: for, do, while, if,
Chương trình là tập các hàm/ thủ tục
Ưu điểm:
- Chương trình được module hóa, do đó dễ hiểu, dễ bảo trì
hơn.
- Dễ dàng tạo ra các thư viện phần mềm
2/22/2016 Bài giảng lập trình hướng đối tượng 4
LẬP TRÌNH CÓ CẤU TRÚC
Nhược điểm:
- Dữ liệu và mã xử lý tách rời
- Người lập trình phải biết cấu trúc dữ liệu
- Khi thay đổi CTDL thì mã xử lý thay đổi theo
- 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
- Không mô tả được đầy đủ, trung thực hệ thống trong thực
tế.
2/22/2016 Bài giảng lập trình hướng đối tượng 5
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng đối tượng tập trung vào đối tượng, yếu tố
quan trọng trong quá trình phát triển chương trình và
không cho phép dữ liệu biến động tự do trong hệ thống.
Dữ liệu gắn chặt với các hàm thành phần, các vùng riêng
mà chỉ có các hàm này tác động lên và cấm các hàm bên
ngoài truy cập lên các dữ liệu này.
Lập trình hướng đối tượng cho phép chúng ta phân tích
bài toán thành các thực thể gọi là đối tượng. Sau đó xây
dụng dữ liệu cùng các hàm xung quanh các đối tượng đó.
Các đối tượng có thể trao đổi thông tin với nhau qua cơ
chế thông báo.
2/22/2016 Bài giảng lập trình hướng đối tượng 6
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
2/22/2016 Bài giảng lập trình hướng đối tượng 7
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Lập trình hướng đối tượng là phương pháp lập trình dựa
trên kiến trúc lớp (class) và đối tượng (object).
2/22/2016 Bài giảng lập trình hướng đối tượng 8
MỘT SỐ KHÁI NIỆM
Đối tượng (Object):
- Trong thế giới thực, khái niệm đối tượng được hiểu như là
một thực thể: người, vật, hoặc một bảng dữ liệu,
- Mỗi đối tượng sẽ tồn tại trong một hệ thống và có ý nghĩa
nhất định trong hệ thống.
- Đối tượng giúp biểu diễn tốt hơn thế giới thực trên máy
tính
- Mỗi đối tượng bao gồm 2 thành phần: thuộc tính và thao
tác (hành động)
2/22/2016 Bài giảng lập trình hướng đối tượng 9
Một người có các thuộc tính: tên, tuổi, địa chỉ, màu mắt,
Các hành động: đi, nói, thở,
Một đối tượng là một thực thể bao gồm
thuộc tính và hành động.
2/22/2016 Bài giảng lập trình hướng đối tượng 10
ĐỐI TƯỢNG TRONG LTHĐT
Tách biệt giữa giao tiếp và cài đặt cụ thể
2/22/2016 Bài giảng lập trình hướng đối tượng 11
MỘT SỐ KHÁI NIỆM
Lớp:
- 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).
- Thuộc tính (attribute) là một thành phần của đối tượng, có
giá trị nhất định cho mỗi đối tượng tại mỗi thời điểm
trong hệ thống. Ví dụ: tên, tuổi, cân nặng là các thuộc tính
của Người.
- Thao tác (operation) thể hiện hành vi của một đối tượng
tác động qua lại với các đối tượng khác hoặc với chính nó.
2/22/2016 Bài giảng lập trình hướng đối tượng 12
MỘT SỐ KHÁI NIỆM
Mỗi thao tác trên một lớp đối tượng cụ thể tương ứng với
một cài đặt cụ thể khác nhau. Một cài đặt như vậy được
gọi là một phương thức (method)
Cùng một thao tác (method) có thể áp dụng cho nhiều lớp
đối tượng khác nhau, một thao tác như vậy được gọi là có
tính đa hình (polymorphism)
Một đối tượng cụ thể thuộc một lớp được gọi là một thể
hiện (instance) của lớp đó.
Ví dụ: Huy, 25 tuổi, nặng 60kg, là một thể hiện của lớp
người.
2/22/2016 Bài giảng lập trình hướng đối tượng 13
INTERACTING OBJECTS
2/22/2016 Bài giảng lập trình hướng đối tượng 14
KẾT HỢP DỮ LIỆU VÀ HÀNH VI
Cách tiếp cận HĐT kết hợp dữ liệu và phần xử lý dữ liệu
vào trong một thực thể duy nhất, hệ thống trở thành sơ đồ
phân cấp duy nhất các lớp đối tượng.
2/22/2016 Bài giảng lập trình hướng đối tượng 15
SƠ ĐỒ HƯỚNG ĐỐI TƯỢNG
Sơ đồ đối tượng dùng để mô tả các 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 đó.
2/22/2016 Bài giảng lập trình hướng đối tượng 16
SƠ ĐỒ LỚP VÀ SƠ ĐỒ THỂ HIỆN
2/22/2016 Bài giảng lập trình hướng đối tượng 17
THIẾT KẾ THEO HƯỚNG ĐỐI TƯỢNG
Trừu tượng hóa dữ liệu và các hàm/thủ tục liên quan
Chia hệ thống ra thành các lớp/đối tượng
Mỗi lớp/đối tượng có các tính năng và hành động chuyên
biệt.
Các lớp có thể được sử dụng để tạo ra nhiều đối tượng cụ
thể
2/22/2016 Bài giảng lập trình hướng đối tượng 18
TRỪU TƯỢNG HÓA
2/22/2016 Bài giảng lập trình hướng đối tượng 19
2/22/2016 Bài giảng lập trình hướng đối tượng 20
Tam giác:
Thuộc tính:
Cạnh 1, cạnh 2, cạnh 3, màu
nền, màu biên, độ đậm biên
Thao tác:
Vẽ, tính diện tích, tính chu vi
Các đối tượng
Khái quát hóa về một tập các đối tượng có chung các đặc
điểm được quan tâm (và bỏ qua những chi tiết không cần
thiết)
Lớp/ kiểu dữ liệu
CÁC ĐẶC ĐIỂM QUAN TRỌNG CỦA
HƯỚNG ĐỐI TƯỢNG
Các lớp đối tượng – Classes
Đóng gói – Encapsulation
Thừa kế - Inheritance
Đa hình - Polymorphism
2/22/2016 Bài giảng lập trình hướng đối tượng 21
ĐÓNG GÓI – CHE DẤU THÔNG TIN
Đóng gói: Nhóm những gì có liên quan vào làm một, để
sau này có thể dùng một cái tên để gọi đến.
- Các hàm/thủ tục đóng gói các câu lệnh
- Các đối tượng đóng gói dữ liệu của chúng và các thủ tục
có liên quan
Che dấu thông tin: đóng gói để che một số thông tin và
chi tiết cài đặt nội bộ để bên ngoài không nhìn thấy
- Che giấu những gì mà người dùng không cần
- Che giấu những gì mà mình cần giữ bí mật
2/22/2016 Bài giảng lập trình hướng đối tượng 22
THỪA KẾ
Là cơ chế cho phép một lớp D có được
các thuộc tính và thao tác của lớp C, như
thể các thuộc tính và thao tác đó đã được
định nghĩa tại lớp D.
Cho phép cài đặt nhiều quan hệ giữa các
đối tượng: đặc biệt hóa, khái quát hóa
2/22/2016 Bài giảng lập trình hướng đối tượng 23
ĐA HÌNH
Cơ chế cho phép một tên thao tác hoặc thuộc tính có thể
được định nghĩa tại nhiều lớp và có thể có nhiều cài đặt
khác nhau tại mỗi lớp trong các lớp đó.
=> Đa hình hàm và đa hình đối tượng
2/22/2016 Bài giảng lập trình hướng đối tượng 24
CÁC ƯU ĐIỂM CỦA OOP
Nguyên lý kế thừa: tránh lặp, tái sử dụng
Nguyên lý đóng gói hay che dấu thông tin: chương trình
an toàn không bị thay đổi bởi những đoạn chương trình
khác.
Dễ mở rộng, nâng cấp
Mô phỏng thế giới thực tốt hơn
2/22/2016 Bài giảng lập trình hướng đối tượng 25
CÁC ĐẶC TÍNH CHỦ YẾU CỦA OOP
Chương trình được chia thành các đối tượng
Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối
tượng.
Các hàm thao tác trên các vùng dữ liệu của đối tượng được
gắn với cấu trúc dữ liệu đó.
2/22/2016 Bài giảng lập trình hướng đối tượng 26
CÁC ĐẶC TÍNH CHỦ YẾU CỦA OOP
Dữ liệu được đóng gói lại, được che giấu và không cho
phép các hàm ngoại lai truy nhập tự do.
Các đối tượng tác động và trao đổi thông tin với nhau qua
các hàm.
Có thể dễ dàng bổ sung dữ liệu và các hàm mới vào đối
tượng nào đó khi cần thiết.
Chương trình được thiết kế theo cách tiếp cận từ dưới lên.
2/22/2016 Bài giảng lập trình hướng đối tượng 27
NGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI
TƯỢNG (OOP)
Cung cấp được những khả năng lập trình hướng đối
tượng
- Cung cấp khả năng kiểm soát truy cập
- Kế thừa
- Đa hình
2/22/2016 Bài giảng lập trình hướng đối tượng 28
CÁC MỞ RỘNG CỦA C++
Các từ khóa:
2/22/2016 Bài giảng lập trình hướng đối tượng 29
CÁC MỞ RỘNG CỦA C++
Cách ghi chú thích:
• Kiểu chú thích /**/ được dùng cho các khối chú thích
lớn gồm nhiều dòng
• Kiểu // được dùng cho các chú thích một dòng
2/22/2016 Bài giảng lập trình hướng đối tượng 30
CÁC MỞ RỘNG CỦA C++
Dòng nhập/ xuất chuẩn:
Nhập/xuất dữ liệu thông qua hai biến đối tượng của dòng
(stream object) là cout và cin; khai báo trong thư viện
Sử dụng biến cout(console output) kết hợp với toán tử chèn
(insertion operator) <<
Sử dụng biến cin (console input) kết hợp với toán tử trích
(extraction operator) >>
2/22/2016 Bài giảng lập trình hướng đối tượng 31
CÁC MỞ RỘNG CỦA C++
Cách chuyển đổi kiểu dữ liệu (ép kiểu):
chuyển đổi kiểu giống như một lệnh gọi hàm.
Ví dụ:
int x;
long a;
a=long(x);
2/22/2016 Bài giảng lập trình hướng đối tượng 32
CÁC MỞ RỘNG CỦA C++
Vị trí khai báo biến:
C++ cho phép chúng ta khai báo linh hoạt bất kỳ vị trí nào
trong một phạm vi cho trước (không nhất thiết phải ngay đầu
của phạm vi), chúng ta xen kẽ việc khai báo dữ liệu với các
câu lệnh thực hiện.
2/22/2016 Bài giảng lập trình hướng đối tượng 33
CÁC MỞ RỘNG CỦA C++
Các biến const:
C++ xem const cũng như #define nếu như chúng
ta muốn dùng hằng có tên trong chương trình.
2/22/2016 Bài giảng lập trình hướng đối tượng 34
CÁC MỞ RỘNG CỦA C++
Struct trong C++:
2/22/2016 Bài giảng lập trình hướng đối tượng 35
CÁC MỞ RỘNG CỦA C++
Toán tử định vị phạm vi:
Toán tử định phạm vi (scope resolution operator) ký hiệu là
::, được dùng truy xuất một phần tử bị che bởi phạm vi hiện
thời.
#include
int X = 5;
int main()
{
int X = 16;
cout<< "Bien X ben trong = "<<X<<"\n";
cout<< "Bien X ben ngoai = "<<::X<<"\n";
return 0;
}
2/22/2016 Bài giảng lập trình hướng đối tượng 36
CÁC MỞ RỘNG CỦA C++
Toán tử new và delete:
C++ định nghĩa một phương thức mới để thực hiện việc cấp phát
động bộ nhớ bằng cách dùng hai toán tử new và delete.
Ví dụ:
int *P;
P = new int;
if (P==NULL)
cout<<"Khong con du bo nho de cap phat\n";
else
{
*P = 290;
cout<<*P<<"\n";
delete P;
}
2/22/2016 Bài giảng lập trình hướng đối tượng 37
CÁC MỞ RỘNG CỦA C++
Toán tử new – cú pháp:
new type_name
new ( type_name )
new type_name initializer
new ( type_name )initializer
Trong đó :
type_name: Mô tả kiểu dữ liệu được cấp phát. Nếu kiểu dữ liệu
mô tả phức tạp, nó có thể được đặt bên trong các dấu ngoặc.
initializer: Giá trị khởi động của vùng nhớ được cấp phát.
Nếu toán tử new cấp phát không thành công thì nó sẽ trả về
giá trị NULL.
2/22/2016 Bài giảng lập trình hướng đối tượng 38
CÁC MỞ RỘNG CỦA C++
Toán tử delete – cú pháp:
delete pointer
delete [] pointer
2/22/2016 Bài giảng lập trình hướng đối tượng 39
CÁC MỞ RỘNG CỦA C++
Các giá trị tham số mặc định:
C++ có khả năng định nghĩa các giá
trị tham số mặc định cho các hàm.
Ví dụ:
void function(long var);
//prototype
...
void function(long var)
{
for(int i = 0; i < var; i++)
;
}
2/22/2016 Bài giảng lập trình hướng đối tượng 40
void function(long var=100); //prototype
...
void function(long var)
{
for(int i = 0; i < var; i++)
;
}
BÀI TẬP
Vẽ sơ đồ lớp biểu diễn lớp đối tượng HÌNH
Vẽ sơ đồ lớp biểu diễn lớp đối tượng NHÂN VIÊN
2/22/2016 Bài giảng lập trình hướng đối tượng 41
BÀI TẬP
Viết chương trình nhập 4 biến nguyên và xuất các giá trị
vừa nhập bằng các cách sau:
1. Dùng 4 biến
2. Dùng mảng
3. Dùng mảng và vòng lặp do while
4. Dùng mảng và vòng lặp for
5. Dùng hàm để tách riêng phần nhập, xuất
2/22/2016 Bài giảng lập trình hướng đối tượng 42