Tải bản đầy đủ (.pdf) (100 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.52 MB, 100 trang )

LẬP TRÌNH HƯỚNG ðỐI TƯỢNGLẬP TRÌNH HƯỚNG ðỐI TƯỢNG
Chương 1


9/30/2009
1
NộiNội dungdung
• Lập trình thông thường.
• Lập trình hướng ñối tượng.
•• UUnified MModeling LLanguage - UML.
2
LậpLập trìnhtrình thôngthông thườngthường
• Lập trình tuyến tính
– 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.
– Không giải quyết ñược các yêu cầu phức tạp.
3
LậpLập trìnhtrình thôngthông thườngthường ((tttt))
• Lập trình cấu trúc

Cấu
trúc
dữ
liệu
:
cách
tổ
chức


dữ
liệu
,

tả
bài
CCấấu trúc du trúc dữữ liliệệuu + GiGiảải thui thuậậtt = ChChươương trìnhng trình

Cấu
trúc
dữ
liệu
:
cách
tổ
chức
dữ
liệu
,

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.
4
LậpLập trìnhtrình thôngthông thườngthường ((tttt))
• Lập trình cấu trúc (tt)
– 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
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
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượ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

Các
ñặc
ñiểm
của

OOP
6
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản
• ðối tượng (Object)
– 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
:

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.
7
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong thế giới thực
Trạng thái:
• màu

hãng

sản
xuất

hãng
sản
xuất
• model
• giá
• …
Hành ñộng:
• Dừng
• Chạy
• Tăng tốc
•Thắng
•…
xe hơi
8
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong thế giới thực (tt)
– Mọi ñối tượng ñều có
trạng thái (state) và hành
ñộng
(behavior)
9
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong lập trình
– 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.
10
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
Thuộc tính:
•tiêu ñề
•nội dung
•kích thước

màu


màu

Phương thức:
•vẽ
•di chuyển
•ñổi kích thước
•ñóng, …
11
12
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
Thuộc tính:
•Màu lá
•Màu thân
•Chiều cao

Tọa
ñộ


Tọa
ñộ
Phương thức:
•vẽ
13
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Thể hiện (instance)
– 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.
ðố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ðối tượngtượng XeXe ñạpñạp
((làlà 1 1 thểthể hiệnhiện))
14
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Lớp (class)
– 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

phương

thức

ðịnh
nghĩa
các
thuộc
tính

phương
thức
chung cho các ñối tượng có cùng loại.
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, …
15
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Lớp (class)
– 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ớp ñược tạo ra khi biên dịch
• ðối tượng tạo ra khi thực thi chương trình.
ðối tượng là một thể hiện (instance) của 1 lớp
16
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh

Nghề
nghiệp

Nghề
nghiệp
– ðịa chỉ
– Hệ số lương
– Chức vụ
+ Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
ÔngÔng NVANVA BàBà TTBTTB Ông LVCÔng LVC
17
Một số khái niệm cơ bản (tt)Một số khái niệm cơ bản (tt)
• Truyền thông báo
– 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
.

ðố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ố).
– 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.
18
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh

Nghề
nghiệp
NhanVienNhanVien
– 8494
– NVA
– 1970

Ths
Tin
học
Nghề
nghiệp
– ðịa chỉ
– Hệ số lương
– Chức vụ
+ Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
ÔngÔng NVANVA
Ths
Tin

học
– ðH Tây ðô
– 3.04
– Giảng viên
NVA.nghỉNVA.nghỉ phépphép
(22/9/2009)(22/9/2009)
19
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượ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

Các
ñặc
ñiểm
của
OOP
20
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng (OOP)(OOP)
ThuThuộộc tínhc tính + HàmHàm = ĐĐốối ti tượượngng
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
Mục tiêu chính
 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.
21
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
ðối tượng 1ðối tượng 1
Dữ liệu
Hàm
 Dữ liệu và thủ tục ñược
xử lý chặc chẽ với nhau.
 Quan tâm ñến mối liên
hệ
giữa thủ tục và dữ
liệu
.
ðối tượng 1ðối tượng 1
Dữ liệu
Hàm
Dữ liệu
Hàm
ðối tượng 3ðối tượng 3
ðối tượng 2ðối tượng 2
liệu
.
 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.
22
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
• Sự trừu tượng hóa (abstraction)
23
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
• 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?
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh
– …
24
OOPOOP
25
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính bao gói
• Tính thừa kế
• Ảo hóa

ða

hình

ða
hình
26
Tính bao góiTí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

Ngăn
sự
tác
ñộng
từ
ñối
tượng
khác
ñến
dữ liệu.

27
Ẩn thông tin là 1 tính
chất của bao gói
28
Tính bao góiTính bao gói ((tttt))
– Thể hiện sự kết hợp chặc chẽ giữa thuộc tính
và phương thức.
– ðịnh nghĩa lớp: là việc ñóng gói nhiều thành
phần
lại
với
nhau
.
phần
lại
với
nhau
.
– Xác ñịnh và giới hạn các ñường truy cập ñến
lớp.
29
Tính bao góiTính bao gói ((tttt))
– Các thuộc tính truy cập:
– Dùng chung (public): có quyền ñược truy xuất
từ bất kỳ vị trí nào.
– 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
ñó
).
trong
lớp
(
trong
các
phương
thức
của
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ó.
30
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (inheritance)
– 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
.
trước
.

– Ích lợi:
• 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
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– Chú ý: tránh
thiết kế sai về mặt ý nghĩa.
VD: Lớp XeHơi thừa kế từ lớp BánhXe là SAI.

Lớp
con
phải
chính

lớp
cha
,
ngoài
ra
còn

Lớp
con
phải
chính

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
32
Con Con ngườingười
– Tên
– Giới tính
SinhSinh viênviên
– Lớp học
– ðiểm thi Toán
+ Tính ñiểm TB()
NhânNhân viênviên
– Nghề nghiệp
– Hệ số lương
+ Nghỉ phép()
33
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• 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
).
protected
).
– Lớp cha không thể truy xuất ñược thành phần
của lớp con.
34
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– 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.
• 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.
thành
phần
của
lớp
con.
• Muốn truy xuất thành phần của lớp cha, phải chỉ
rõ.
– Trong C++: <Tên lớp cha> :::: <Tên hàm>
– Trong Java:
super <Tên hàm>

35
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế
– 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.

Tận
dụng
ñược
nhiều
thành
phần

sẵn
.

Tận
dụng
ñược
nhiều
thành
phần

sẵn
.
• Dễ gây ra xung ñột, cạnh tranh.
36
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– Thừa kế bội

37
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ảo hóa (virtualization)
– 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 ñó).
38
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ả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
,


,
2. “
Kêu
”:
cho
tập
hợp
các
con
vật
(
chó
,
mèo
,

,
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
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ảo hóa
– 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
:


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ácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính ña hình (polymorphism)
– 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
ðường Thẳng Hình Trònðiểm Hình Vuông
“Vẽ”
41
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính ña hình
– 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


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)
42
43
UML UML UUnified MModeling LLanguage
44
UMLUML
• Giới thiệu về UML
• Các loại biểu ñồ trong UML

Biểu
ñồ
lớp

Biểu
ñồ
lớp
45
GiớiGiới thiệuthiệu UMLUML
– Tạm dịch là ngôn ngữ mô hình hóa thống nhất.

– Ra ñời vào năm 1997 và hiện nay ñang ñược sử dụng rất
phổ biến.
– 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
ñồ
)
thống
nhất
dùng
ñể
thiết
kế
các
hệ
thống
thông
tin

(IS) theo hướng ñối tượng.
– ðượ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.
46
CácCác loạiloại biểubiểu ñồñồ trongtrong UMLUML
• UML Diagram
– Use Cases Diagram
(biểu ñồ tình huống sử
dụng)

Class Diagram
(
biểu
ñồ
lớp
)

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
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Lớp
48
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Quan hệ kết hợp (Association)
49
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Quan hệ kết hợp (Association)
50
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Quan hệ kết hợp
51
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Quan hệ tập hợp (Aggregation)
52
SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Quan hệ tổng hợp (Composition)
Composition Composition làlà 1 1 dạngdạng
Aggregation Aggregation ñặcñặc biệtbiệt trongtrong ñóñó
cáicái tổngtổng thểthể sẽsẽ ñượcñược cấucấu
thànhthành hoặchoặc hủyhủy bỏbỏ từtừ nhữngnhững
thànhthành phầnphần củacủa nónó
53

SơSơ ñồñồ lớplớp (Class Diagram)(Class Diagram)
• Thừa kế (inheritance)
54
BàiBài tậptập
• 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ý
• 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
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
BàiBài tậptập vềvề nhànhà
• 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:
– 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àiBài nộpnộp
• Mail:
– Subject: C++ Bai 1 <ma sinh sien>
– <ma sinh vien> <Tên sinh viên>

File word
hoặc
pdf


File word
hoặc
pdf
• Giấy
– C++ Bai 1
– <ma sinh sien> <Tên sinh viên>
57
LẬP TRÌNH HƯỚNG ðỐI TƯỢNGLẬP TRÌNH HƯỚNG ðỐI TƯỢNG
Chương 1


9/30/2009
1
NộiNội dungdung
• Lập trình thông thường.
• Lập trình hướng ñối tượng.
•• UUnified MModeling LLanguage - UML.
2
LậpLập trìnhtrình thôngthông thườngthường
• Lập trình tuyến tính
– 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.
– Không giải quyết ñược các yêu cầu phức tạp.
3
LậpLập trìnhtrình thôngthông thườngthường ((tttt))
• Lập trình cấu trúc


Cấu
trúc
dữ
liệu
:
cách
tổ
chức
dữ
liệu
,

tả
bài
CCấấu trúc du trúc dữữ liliệệuu + GiGiảải thui thuậậtt = ChChươương trìnhng trình

Cấu
trúc
dữ
liệu
:
cách
tổ
chức
dữ
liệu
,

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.
4
LậpLập trìnhtrình thôngthông thườngthường ((tttt))
• Lập trình cấu trúc (tt)
– 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
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
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượ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

Các
ñặc
ñiểm
của
OOP
6
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản
• ðối tượng (Object)
– 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
:

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.
7
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong thế giới thực
Trạng thái:
• màu

hãng
sản
xuất

hãng
sản
xuất
• model
• giá
• …
Hành ñộng:
• Dừng
• Chạy
• Tăng tốc
•Thắng
•…
xe hơi
8
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong thế giới thực (tt)
– Mọi ñối tượng ñều có
trạng thái (state) và hành

ñộng
(behavior)
9
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• ðối tượng trong lập trình
– 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.
10
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
Thuộc tính:
•tiêu ñề
•nội dung
•kích thước

màu


màu

Phương thức:
•vẽ
•di chuyển
•ñổi kích thước
•ñóng, …
11

12
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
Thuộc tính:
•Màu lá
•Màu thân
•Chiều cao

Tọa
ñộ

Tọa
ñộ
Phương thức:
•vẽ
13
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Thể hiện (instance)
– 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.
ðố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ðối tượngtượng XeXe ñạpñạp
((làlà 1 1 thểthể hiệnhiện))
14
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Lớp (class)
– 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

phương
thức

ðịnh
nghĩa
các
thuộc
tính

phương
thức
chung cho các ñối tượng có cùng loại.
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, …
15
MộtMột sốsố kháikhái niệmniệm cơcơ bảnbản ((tttt))
• Lớp (class)
– 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ớp ñược tạo ra khi biên dịch
• ðối tượng tạo ra khi thực thi chương trình.

ðối tượng là một thể hiện (instance) của 1 lớp
16
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh

Nghề
nghiệp
Nghề
nghiệp
– ðịa chỉ
– Hệ số lương
– Chức vụ
+ Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
ÔngÔng NVANVA BàBà TTBTTB Ông LVCÔng LVC
17
Một số khái niệm cơ bản (tt)Một số khái niệm cơ bản (tt)
• Truyền thông báo
– 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

.

ðố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ố).
– 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.
18
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh

Nghề
nghiệp
NhanVienNhanVien
– 8494
– NVA
– 1970

Ths
Tin
học
Nghề
nghiệp

– ðịa chỉ
– Hệ số lương
– Chức vụ
+ Làm việc ()
+ Nghỉ phép ()
+ Lãnh lương ()
ÔngÔng NVANVA
Ths
Tin
học
– ðH Tây ðô
– 3.04
– Giảng viên
NVA.nghỉNVA.nghỉ phépphép
(22/9/2009)(22/9/2009)
19
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượ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

Các
ñặc
ñiểm

của
OOP
20
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng (OOP)(OOP)
ThuThuộộc tínhc tính + HàmHàm = ĐĐốối ti tượượngng
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
Mục tiêu chính
 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.
21
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
ðối tượng 1ðối tượng 1
Dữ liệu
Hàm
 Dữ liệu và thủ tục ñược
xử lý chặc chẽ với nhau.
 Quan tâm ñến mối liên
hệ
giữa thủ tục và dữ
liệu
.
ðối tượng 1ðối tượng 1
Dữ liệu

Hàm
Dữ liệu
Hàm
ðối tượng 3ðối tượng 3
ðối tượng 2ðối tượng 2
liệu
.
 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.
22
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
• Sự trừu tượng hóa (abstraction)
23
LậpLập trìnhtrình hướnghướng ñốiñối tượngtượng ((tttt))
• 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?
NhanVienNhanVien
– Mã nhân viên
– Họ và tên
– Năm sinh
– …

24
OOPOOP
25
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính bao gói
• Tính thừa kế
• Ảo hóa

ða
hình

ða
hình
26
Tính bao góiTí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

Ngăn

sự
tác
ñộng
từ
ñối
tượng
khác
ñến
dữ liệu.
27
Ẩn thông tin là 1 tính
chất của bao gói
28
Tính bao góiTính bao gói ((tttt))
– Thể hiện sự kết hợp chặc chẽ giữa thuộc tính
và phương thức.
– ðịnh nghĩa lớp: là việc ñóng gói nhiều thành
phần
lại
với
nhau
.
phần
lại
với
nhau
.
– Xác ñịnh và giới hạn các ñường truy cập ñến
lớp.
29

Tính bao góiTính bao gói ((tttt))
– Các thuộc tính truy cập:
– Dùng chung (public): có quyền ñược truy xuất
từ bất kỳ vị trí nào.
– 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
ñó
).
trong
lớp
(
trong
các
phương
thức
của
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ó.
30

CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (inheritance)
– 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
.
trước
.
– Ích lợi:
• 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
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– Chú ý: tránh
thiết kế sai về mặt ý nghĩa.
VD: Lớp XeHơi thừa kế từ lớp BánhXe là SAI.

Lớp
con
phải
chính

lớp
cha
,
ngoài

ra
còn

Lớp
con
phải
chính

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
32
Con Con ngườingười
– Tên
– Giới tính
SinhSinh viênviên
– Lớp học
– ðiểm thi Toán
+ Tính ñiểm TB()
NhânNhân viênviên
– Nghề nghiệp
– Hệ số lương

+ Nghỉ phép()
33
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• 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
).
protected
).
– Lớp cha không thể truy xuất ñược thành phần
của lớp con.
34
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– 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.
• 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.
thành

phần
của
lớp
con.
• Muốn truy xuất thành phần của lớp cha, phải chỉ
rõ.
– Trong C++: <Tên lớp cha> :::: <Tên hàm>
– Trong Java:
super <Tên hàm>
35
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế
– 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.

Tận
dụng
ñược
nhiều
thành
phần

sẵn
.

Tận
dụng
ñược
nhiều
thành

phần

sẵn
.
• Dễ gây ra xung ñột, cạnh tranh.
36
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Tính thừa kế (tt)
– Thừa kế bội
37
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ảo hóa (virtualization)
– 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 ñó).
38
CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ả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
,

,
2. “
Kêu
”:
cho
tập
hợp
các
con
vật
(
chó
,
mèo
,

,
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

CácCác ñặcñặc ñiểmñiểm củacủa OOPOOP
• Ảo hóa
– 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
:

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

×