Nội dung
• Lập trình thông thường.
Chương 1
LẬP TRÌNH HƯỚNG ðỐI TƯỢNG
• Lập trình hướng ñối tượng.
• Unified Modeling Language - UML.
9/30/2009
2
1
Lập trình thông thường
Lập trình thông thường (tt
tt))
• Lập trình tuyến tính
• Lập trình cấu trúc
– Tư duy theo lối tuần tự, ñơn giản.
– ðơn luồng và các công việc ñược thực hiện tuần
tự trong luồng ñó.
– Tồn tại trong modul nhỏ của phương pháp lập
trình khác.
Cấu trúc dữ
dữ liliệ
ệu + Gi
Giả
ải thuậ
thuật = Ch
Chươ
ương
ng trình
– Cấu trúc dữ liệu: cách tổ chức dữ liệu, mô tả bài
toán dưới dạng ngôn ngữ lập trình.
– Giải thuật: một quy trình ñể thực hiện một công
việc xác ñịnh.
– Không giải quyết ñược các yêu cầu phức tạp.
3
4
Lập trình thông thường (tt)
tt)
Lập trình hướng ñối tượng
• Lập trình cấu trúc (tt)
• Một số khái niệm cơ bản
• Lập trình hướng ñối tượng
Object Oriented Programming – OOP
• Các ñặc ñiểm của OOP
– Phân chia chương trình chính thành các chương
trình con cho phù hợp với yêu cầu, chức năng và
mục ñích của mỗi bài toán
– Giải thuật luôn phụ thuộc chặt chẽ vào cấu trúc
dữ liệu
5
6
Một số khái niệm cơ bản
Một số khái niệm cơ bản (tt
tt))
• ðối tượng (Object)
• ðối tượng trong thế giới thực
– Trong thế giới thực:
• ñối tượng là một th c th (entity) cụ thể mà thông
thường ta có thể sờ, nhìn thấy hay cảm nhận ñược.
– Trong lập trình:
• Dùng ñể mô tả 1 người, sự vật hay khái niệm.
• ðối tượng là cái mà ứng dụng muốn ñề cập ñến.
• Trong hệ thống hướng ñối tượng, mọi thứ ñều là ñối
tượng.
xe hơi
7
Trạng thái:
• màu
• hãng sản xuất
• model
• giá
•…
Hành ñộng:
• Dừng
• Chạy
• Tăng tốc
•Thắng
•…
8
Một số khái niệm cơ bản (tt)
tt)
Một số khái niệm cơ bản (tt
tt))
• ðối tượng trong thế giới thực (tt)
• ðối tượng trong lập trình
– Mọi ñối tượng ñều có trạng thái (state) và hành
ñộng (behavior)
– Thuộc tính, ñặc tính, dữ liệu (attribute,
property, data):
• Trình bày, mô tả các ñặc ñiểm của ñối tượng.
– Phương thức, ứng xử, hàm (method,
behavior, function):
• Liên quan ñến những thứ ñối tượng làm.
• Tác ñộng lên dữ liệu của ñối tượng.
9
10
11
12
Một số khái niệm cơ bản (tt)
tt)
Thuộc tính:
•tiêu ñề
•nội dung
•kích thước
•màu…
Phương thức:
•vẽ
•di chuyển
•ñổi kích thước
•ñóng, …
Một số khái niệm cơ bản (tt)
tt)
Một số khái niệm cơ bản (tt
tt))
• Thể hiện (instance)
Thuộc tính:
•Màu lá
•Màu thân
•Chiều cao
•Tọa ñộ
– Thuộc tính ñược xác ñịnh giá trị cụ thể.
– ðối tượng cụ thể gọi là một thể hiện.
Phương thức:
•vẽ
13
ðối tượng (object) là một thực thể
phần mềm bao bọc các thuộc tính
bởi các phương thức liên quan.
ðối tượng Xe ñạp
(là 1 thể hiện
hiện))
Một số khái niệm cơ bản (tt)
tt)
Một số khái niệm cơ bản (tt
tt))
• Lớp (class)
• Lớp (class)
14
– Lớp tạo ra ñối tượng: bằng cách gán giá trị cụ
thể cho các thuộc tính.
– Là mẫu (prototype) của các ñối tượng cùng
kiểu.
– Là khuôn ñể ñổ ra các ñối tượng.
– ðịnh nghĩa các thuộc tính và phương thức
chung cho các ñối tượng có cùng loại.
• Lớp ñược tạo ra khi biên dịch
• ðối tượng tạo ra khi thực thi chương trình.
VD: Lớp XeDap là thiết kế chung cho các ñối
tượng xe mini, xe ñòn, xe ñầm, xe ñua, xe leo
núi, …
ðối tượng là một thể hiện (instance) của 1 lớp
15
16
Một số khái niệm cơ bản (tt)
NhanVien
• Truyền thông báo
Mã nhân viên
– Họ và tên
– Năm sinh
– Nghề nghiệp
– ðịa chỉ
– Hệ số lương
– Chức vụ
–
Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
+
– Thông báo (message): là 1 lời yêu cầu 1 hoạt
ñộng.
– Thông báo bao gồm:
• ðối tượng nhận thông ñiệp.
• Hoạt ñộng (tên của phương thức thực hiện).
• Chi tiết thực hiện (giá trị các tham số).
Ông NVA
Bà TTB
Ông LVC
– Truyền thông báo: kích hoạt hàm cùng tên
trên 1 ñối tượng ñể yêu cầu thông tin.
17
18
Lập trình hướng ñối tượng
NhanVien
NhanVien
Mã nhân viên
– Họ và tên
– Năm sinh
– Nghề nghiệp
– ðịa chỉ
– Hệ số lương
– Chức vụ
Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
+
• Một số khái niệm cơ bản
Lập trình hướng ñối tượng
(Object Oriented Programming – OOP)
• Các ñặc ñiểm của OOP
8494
– NVA
– 1970
– Ths Tin học
– ðH Tây ðô
– 3.04
– Giảng viên
–
–
Ông NVA
NVA.nghỉ phép
(22/9/2009)
19
20
Lập trình hướng ñối tượng (OOP)
Lập trình hướng ñối tượng (tt
tt))
Dữ liệu và thủ tục ñược
xử lý chặc chẽ với nhau.
Thuộ
Thu
ộc tính + Hàm = Đối ttượ
ượng
ng
Dữ liệu
Các thể hiện, đặc tính,
trạng thái của đối
tượng
Các hoạt động,
thao tác của đối
tượng
Quan tâm ñến mối liên
hệ giữa thủ tục và dữ
liệu.
Hàm
Mục tiêu chính
ðối tượng 1
Phân tích bài toán thành nhiều ñối tượng.
Quan tâm ñến dữ liệu hơn thủ tục.
Dữ liệu ñược bảo vệ (che giấu) và không thể truy
xuất từ bên ngoài ñối tượng.
Dữ liệu
Hàm
ðối tượng 3
Dữ liệu
Hàm
ðối tượng 2
Dễ chỉnh sửa, thêm mới
dữ liệu và hàm trong 1
ñối tượng.
Mục tiêu là tăng cường
khả năng sử dụng lại.
21
22
Lập trình hướng ñối tượng (tt)
tt)
Lập trình hướng ñối tượng (tt
tt))
• Sự trừu tượng hóa (abstraction)
• Sự trừu tượng hóa (abstraction)
– Là bước tiến hóa tiếp theo từ lập trình cấu trúc.
– Chỉ quan tâm ñến những ñặc ñiểm cần thiết
(phớt lờ ñi những chi tiết) tùy vào ngữ cảnh:
VD: Phân tích thông tin của 1 người:
- Trong ngữ cảnh làm việc trong trường.
- Trong ngữ cảnh học tại trường?
NhanVien
Mã nhân viên
– Họ và tên
– Năm sinh
–…
24
–
23
OOP
Các ñặc ñiểm của OOP
•
•
•
•
Tính bao gói
Tính thừa kế
Ảo hóa
ða hình
25
26
Tính bao gói
• Là ñặc ñiểm chủ yếu của OOP.
• Che giấu việc thực thi chi tiết của 1 ñối
tượng.
• Ngăn sự tác ñộng từ ñối tượng khác ñến
dữ liệu.
Ẩn thông tin là 1 tính
chất của bao gói
27
28
Tính bao gói (tt)
tt)
Tính bao gói (tt
tt))
– Các thuộc tính truy cập:
– Thể hiện sự kết hợp chặc chẽ giữa thuộc tính
và phương thức.
– Dùng chung (public): có quyền ñược truy xuất
từ bất kỳ vị trí nào.
– ðịnh nghĩa lớp: là việc ñóng gói nhiều thành
phần lại với nhau.
– Dùng riêng (private): chỉ truy xuất ñược từ bên
trong lớp (trong các phương thức của lớp ñó).
– Xác ñịnh và giới hạn các ñường truy cập ñến
lớp.
– ðược bảo vệ (protected): chỉ truy xuất ñược từ
bên trong lớp và các lớp thừa kế từ nó.
29
30
Các ñặc ñiểm của OOP
Các ñặc ñiểm của OOP
• Tính thừa kế (inheritance)
• Tính thừa kế (tt)
– Chú ý: tránh thiết kế sai về mặt ý nghĩa.
– Nhóm các ñặc tính chung lại với nhau.
– Sử dụng lại (kế thừa) các ñặc trưng chung
(thuộc tính + phương thức) của 1 lớp cho
trước.
– Ích lợi:
VD: Lớp XeHơi thừa kế từ lớp BánhXe là SAI.
– Lớp con phải chính là lớp cha, ngoài ra còn
phải có thêm những ñặc trưng riêng của nó:
• Thêm hàm hoặc thêm thuộc tính
• Tái ñịnh nghĩa hàm của lớp cha, ñổi kiểu thuộc
tính
• Dùng hàm ảo
• Chia sẻ và sử dụng lại những lớp ñã có:
– Tận dụng lại các thuộc tính chung.
– Tận dụng lại các thao tác tương tự.
• Thiết kế lớp gọn nhẹ, ñơn giản hơn.
31
32
Các ñặc ñiểm của OOP
Con người
–
–
Tên
Giới tính
• Tính thừa kế (tt)
– Lớp con sẽ có tất cả các thành phần của lớp
cha nhưng chỉ ñược quyền truy xuất thành
phần mà lớp cha cho phép (public +
protected).
Sinh viên
Nhân viên
Lớp học
ðiểm thi Toán
–
–
–
Nghề nghiệp
Hệ số lương
+
Tính ñiểm TB()
+
Nghỉ phép()
–
– Lớp cha không thể truy xuất ñược thành phần
của lớp con.
33
34
Các ñặc ñiểm của OOP
Các ñặc ñiểm của OOP
• Tính thừa kế (tt)
• Tính thừa kế
– Các thành phần của lớp con sẽ che ñi các
thành phần trùng tên trong lớp cha.
– Thừa kế ñơn: thừa kế từ 1 lớp
– Thừa kế bội: thừa kế từ 2 lớp trở lên.
• Khi truy xuất thành phần trùng tên ñó sẽ truy xuất
thành phần của lớp con.
• Tận dụng ñược nhiều thành phần có sẵn.
• Dễ gây ra xung ñột, cạnh tranh.
• Muốn truy xuất thành phần của lớp cha, phải chỉ
rõ.
– Trong C++:
– Trong Java:
<Tên lớp cha> :: <Tên hàm>
super..<Tên hàm>
35
36
Các ñặc ñiểm của OOP
Các ñặc ñiểm của OOP
• Tính thừa kế (tt)
• Ảo hóa (virtualization)
– Thừa kế bội
– Kể tên trong lớp cha một ứng xử chung (hàm
ảo – virtual, abstract) cho tập hợp các lớp
con.
– Khi nhận yêu cầu, tùy vào ñối tượng thuộc
lớp nào sẽ có ứng xử riêng (thực thi hàm
tương ứng của lớp ñó).
37
38
Các ñặc ñiểm của OOP
Các ñặc ñiểm của OOP
• Ảo hóa
• Ảo hóa
Vd:
1. “V ”: cho tập hợp các ñối tượng hình học (ñiểm,
ñường thẳng, hình tròn, hình vuông, …)
2. “Kêu”: cho tập hợp các con vật (chó, mèo, gà,
vịt, …)
3. “V nhà”: cho tập hợp các học sinh (ñi bộ, ñi xe
ñạp, ñi xe gắn máy, ñi xe buýt, …)
39
– Hàm ảo:
• Không nhất thiết phải cần ñịnh nghĩa ở lớp cha.
• Phải ñược ñịnh nghĩa lại trong lớp con.
– Lớp ảo:
• Chỉ dùng khai báo các hàm ảo bên trong.
• Không ñược dùng ñể tạo ra ñối tượng.
40
Các ñặc ñiểm của OOP
Các ñặc ñiểm của OOP
• Tính ña hình (polymorphism)
• Tính ña hình
– Các ñối tượng khác nhau khi nhận chung 1 yêu
cầu vẫn có thể có những ứng xử khác nhau.
– Kỹ thuật sử dụng: hàm ảo
ðiểm
ðường Thẳng
Hình Tròn
Hình Vuông
– Các hành ñộng cùng tên thực thi trên cùng 1 ñối
tượng vẫn có thể thực hiện khác nhau (có kết
quả khác nhau) tùy thuộc vào ngữ cảnh.
– Kỹ thuật sử dụng: tái ñịnh nghĩa hàm
• Hàm trùng tên
• Khác tham số (số lượng, thứ tự, kiểu)
“Vẽ”
41
42
UML - Unified Modeling Language
43
44
UML
Giới thiệu UML
– Tạm dịch là ngôn ngữ mô hình hóa thống nhất.
• Giới thiệu về UML
– Ra ñời vào năm 1997 và hiện nay ñang ñược sử dụng rất
phổ biến.
• Các loại biểu ñồ trong UML
– Bao gồm một hệ thống các ký hiệu ñồ họa, biểu ñồ (sơ
ñồ) thống nhất dùng ñể thiết kế các hệ thống thông tin
(IS) theo hướng ñối tượng.
• Biểu ñồ lớp
– ðược sử dụng cho các giai ñoạn phân tích, thiết kế, triển
khai và kiểm thử phần mềm.
– Các CaseTool (Rational Rose, System Architect, Argo
UML, Visual Paradigm for UML, Umbrello…) hỗ trợ UML
trong việc phát sinh chương trình tự ñộng cho các ngôn
ngữ OOP.
45
46
Các loại biểu ñồ trong UML
Sơ ñồ lớp (Class Diagram)
• UML Diagram
• Lớp
– Use Cases Diagram (biểu ñồ tình huống sử
dụng)
– Class Diagram (biểu ñồ lớp)
– Sequence Diagram (biểu ñồ trình tự)
– Collaboration Diagram (biểu ñồ cộng tác)
– State Diagram (biểu ñồ trạng thái)
– Component Diagram (biểu ñồ thành phần)
– Deployment Diagram (biểu ñồ triển khai)
47
48
Sơ ñồ lớp (Class Diagram)
Sơ ñồ lớp (Class Diagram)
• Quan hệ kết hợp (Association)
• Quan hệ kết hợp (Association)
49
50
Sơ ñồ lớp (Class Diagram)
Sơ ñồ lớp (Class Diagram)
• Quan hệ kết hợp
• Quan hệ tập hợp (Aggregation)
51
52
Sơ ñồ lớp (Class Diagram)
Sơ ñồ lớp (Class Diagram)
• Quan hệ tổng hợp (Composition)
• Thừa kế (inheritance)
Composition là 1 dạng
Aggregation ñặc biệt trong ñó
cái tổng thể sẽ ñược cấu
thành hoặc hủy bỏ từ những
thành phần của nó.
nó.
53
54
Bài tập
Bài tập về nhà
• Mô hình hóa việc bán vé tại rạp chiếu phim theo
góc nhìn của người mua vé / người quản lý
• Chọn các ñối tượng ngoài thực tế có liên
quan với nhau ñể xây dựng khung (thuộc
tính, phương thức) các ñối tượng với ñầy ñủ
các ñặc ñiểm:
• Tiệm tạp hóa: Chủ tiệm cần quản lý việc mua
bán hàng hóa (viết, tập) trong cửa hàng ñể biết
– Hàng nào mua vào giá bao nhiêu?
– Hàng nào bán ra và giá bao nhiêu?
Áp dụng kỹ thuật lập trình hướng ñối tượng và tính
thừa kế của nó ñể dựng khung ñối tượng cho người
phụ trách mua bán ñiền thông tin vào và sử dụng
phương thức cho việc mua bán
55
– Tính thừa kế.
– Ảo hóa.
– ða hình.
• Cho 3 ví dụ cụ thể cho từng ñối tượng
• Hạn nộp: 12:00 PM 06/10/2009 (mail hoặc
giấy)
56
Bài nộp
• Mail:
– Subject: C++ Bai 1 <ma sinh sien>
– <ma sinh vien> <Tên sinh viên>
– File word hoặc pdf
• Giấy
– C++ Bai 1
– <ma sinh sien> <Tên sinh viên>
57