Tổng hợp bài giảng môn Lập trình Hướng đối tượng | Trường Đại học Bách Khoa Hà Nội

Tổng hợp bài giảng môn Lập trình Hướng đối tượng| Bài giảng môn Lập trình Hướng đối tượng| Trường Đại học Bách Khoa Hà Nội. Tài liệu gồm 193 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.

1
Lp trình hướng đối tượng
TS H.Q.Thng, TS C.T.Dũng
B
môn công ngh phn mm
Đại hc bách khoa Ni
H.Q. Thng - C.T. Dũng BM CNPM
2
Môn hc: Lp trình hướng đối tượng
Gii thiu v môn hc
Đề cương chi tiết môn hc
Tài liu tham kho môn hc
Bài tp ln môn hc
Thi đánh giá môn hc
2
H.Q. Thng - C.T. Dũng BM CNPM
3
Gii thiu v môn hc
Mc đích môn hc: Môn hc này được gii
thi
u cho sinh viên các kiến thc k thut
trong LTHDT. Sinh viên s
tiếp cn vi
phương pháp lun, các k năng, k thut
trong thi
ết kế lp trình hướng đối tượng
V trí môn hc: áp dng cho sinh viên năm
th 4 (hc k 7), CNTT. Trong môn hc s
dng kiến thc ca các môn hc: Cu trúc d
liu gii thut, h điều hành, thuyết
ngôn ng
H.Q. Thng - C.T. Dũng BM CNPM
4
Gii thiu v môn hc (tiếp)
Thi lượng môn hc: 45 tiết thuyết được
phân b
trong 12 tun. S các bài tp
tu
n, sinh viên t tham kho tài liu được
giao
để thc hin bài tp ln (đồ án môn
h
c) ngay t tun 2 ca cui hc k
Bài tp ln môn (đồ án môn hc): làm theo
nhóm, có b
o v làm theo nhóm
3
H.Q. Thng - C.T. Dũng BM CNPM
5
Đề cương chi tiết môn hc
Chương 1. Tng quan v lp trình ng
đi ng
Chương 2. Các k thut làm vic vi
h
ng, biến, xây dng s dng hàm
trong
LTHĐT
Chương 3. Các k thut bn trong
xây d
ng lp
Chương 4. K thut tha kế, kết tp
đa hình trong LTHĐT
H.Q. Thng - C.T. Dũng BM CNPM
6
Đề cương chi tiết môn hc
Chương 5. Ngôn ng hình hóa UML
s
dng trong LTHDT
Chương 6. Thiết kế khuôn mu
Chương 7. Các phép đo đánh giá phn
m
m ng đi ng
4
H.Q. Thng - C.T. Dũng BM CNPM
7
Tài liu tham kho môn hc
[1]. Peter Coad, Jill Nicola; Object-Oriented
Programming
[2]. Harvey M. Deitel, Paul J. Deitel C++
How to Programing (5th Edition)
[3]. Harvey M. Deitel, Paul J. Deitel How to
Java Programing (5th Edition)
[4]. Bruce Eckel - Thinking in C++ . Second
Edition. MindView Inc., 2000. th
ti v t
web site: www.bruceeckel.com
[5] Martin Fowler UML Distilled: A Brief
Guide to the Standard Object Modeling
Language, Third Edition
H.Q. Thng - C.T. Dũng BM CNPM
8
Bài tp ln (đồ án môn hc)
Đồ án môn hc: Sinh viên được chia làm
các nhóm, m
i nhóm chn mt cu trúc
d
liu hoc gii thut tiêu biu để xây
d
ng phn mm theo nguyên hướng
đối tượng (công c tu chn).
Yêu cu ca đồ án môn hc: các nhóm
ti
ến hành t đánh giá phn mm
hướng đối tượng theo các tiêu chí
5
H.Q. Thng - C.T. Dũng BM CNPM
9
Đánh giá môn hc
Cui k thi hết môn, thi gian 60-90 phút
Điểm đánh giá môn hc:
Điểm kim tra điều kin: 20%
Điểm thi: trng s 40%
Điểm đồ án môn hc: trng s 40%
Điều kin min thi: thc hin tt đồ án
môn h
c nhng nghiên cu sâu v
các lĩnh vc trong CNTT. Đồ án môn hc
th
c hin đúng theo các quy định chun
c
a môn hc
H.Q. Thng - C.T. Dũng BM CNPM
10
Tho lun
Các câu hi ca sinh viên liên quan đến
n
i dung môn hc “Lp trình hướng đối
tượng”
Các câu hi ca sinh viên liên quan đến
n
i dung ca bài tp ln phương pháp
th
c hin bo v
Các câu hi ca sinh viên liên quan đến
n
i dung thi
6
H.Q. Thng - C.T. Dũng BM CNPM
11
Chương 1. Các khái nim bn trong Lp
trình
hướng đối tượng (LTHDT)
1. Lch s phát trin ca các ngôn ng lp
trình
2.
Đối tượng các khái nim liên quan
3. Khái ni
m thc hin n (hidden
implementation) trong LTHDT
4. Khái ni
m tái s dng trong LTHDT
5. Khái ni
m kế tha trong LTHDT
6. Khái ni
m đa hình trong lp trình hướng
đối tượng
H.Q. Thng - C.T. Dũng BM CNPM
12
7. Khi to gii phóng đối tượng trong LTHDT
8. B
t li x li trong LTHDT
9. Phân tích thi
ết kế hướng đối tượng
10. Extreme programming
11. T
i sao ngôn ng C++ thông dng
12. T
i sao ngôn ng Java thông dng
13. Quá trình d
ch mt phn mm
14. Các
đặc điểm ca công c biên dich độc lp
15. Câu h
i bài tp tun 1
Chương 1. Các khái nim bn trong Lp
trình
hướng đối tượng (LTHDT) tiếp
7
H.Q. Thng - C.T. Dũng BM CNPM
13
1. Lch s phát trin ca các ngôn ng lp
trình
Tt c các ngôn ng lp trình cho phép yêu
c
u chúng ta phi tru tượng hóa (abstraction).
Trong tt c các ngôn ng lp trình chúng ta đã
tr
c tiếp hoc gián tiếp thc hin tru tượng
hóa.
Hp ng (Assembly language) mt ngôn ng lp
trình tu
n t, gn vi tp các lnh máy ca CPU
thế kh năng tru tượng hóa rt nh.
Các ngôn ng lp trình cu trúc kh năng tru tượng
đã tăng lên rt nhiu so vi hp ng. tưỏng chính:
tìm ra cách th
hin bài toán cn gii quyết bng
nh
ng cu trúc lp trình trong các ngôn ng tương
ng.
Phương pháp tiếp cn hướng logic (logic-oriented)
H.Q. Thng - C.T. Dũng BM CNPM
14
1. Lch s phát trin ca các ngôn ng lp
trình
Mong mun tìm ra môt cách tiếp cn cho phép gii
quy
ết chung được s lượng ln các bài toán.
Phương pháp tiếp cn hướng đối tượng được coi
m
t phương pháp tt để phc v cho mc đích y.
Chúng ta tiếp cn bài toán bng cách th hin các
thành ph
n ca bài toán các đối tượng” (object).
Mi đối tượng th coi như mt “thành phn sng”
- ngh
ĩa trng thái, các hot động -
th
c hin các thao tác nào đó. Các thao tác này thc
hi
n các chc năng ca h thng.
8
H.Q. Thng - C.T. Dũng BM CNPM
15
Trừu tượng hóa
Trừu tượng hóa điều khin (control
abstraction): M
t trong những đặc tính
quan tr
ng ca các ngôn ng lp trình.
a = (1 + 2) * 5;
Bao gồm trong đó khái nim, trừu tượng hóa
ch
ức năng
Trừu tượng hóa d liu: Ch quan tâm d
liệu được s dụng như thế nào, không
quan tâm nó
đưc biu din c th ra sao.
H.Q. Thng - C.T. Dũng BM CNPM
16
1. Lch s phát trin ca các ngôn ng
lp trình
Alan Kay đã tng hp các đặc tính ca LTHDT:
1. T
t c đều đối tượng.
2.
Chương trình phn mm th coi mt tp
h
p các đối tượng tương tác vi nhau
3. M
i đối tượng trong chương trình các d
liu độc lp ca mình chiếm b nh riêng
c
a mình.
4. M
i đối tượng đều dng đặc trưng ca lp
các
đối tượng đó.
5. T
t c các đối tượng thuc v cùng mt lp
đều các hành vi ging nhau
9
H.Q. Thng - C.T. Dũng BM CNPM
17
2. Đối tượng các khái nim liên quan
Đối tượng
Giao din ca đối tượng
Lp đối tượng
Thuc tính đối tượng
Hành vi đối tượng
Gi thông điệp
Biu điễn đối tượng - biu đồ đối tượng
bi
u đồ lp trong UML
H.Q. Thng - C.T. Dũng BM CNPM
18
Đối tượng (object)
Đối tượng
chìa khóa
để hiu
được k thut
hướng đối tượng
Trong h thng
hướng đối tượng,
m
i th đều đối
tượng
Viết mt chương trình hướng đối tượng nghĩa đang xây dng
mt hình ca mt vài b phn trong thế gii thc
10
H.Q. Thng - C.T. Dũng BM CNPM
19
Đối Tượng Thế Gii Thc (Real Object)
Mt đối tượng thế gii thc mt thc
th
c th thông thường chúng ta th
s, nhìn thy hay cm nhn được.
Tt c
tr
ng thái
(state) và
hành
động
(behaviour)
H.Q. Thng - C.T. Dũng BM CNPM
20
Đối Tượng Phn Mm (Software
Object)
Các đối tượng phn mm th được
dùng
để biu din các đối tượng thế gii
th
c.
Cũng trng thái
hành
động
Trng thái: thuc tính
(attribute; property)
Hành động: phương thc
(method)
11
H.Q. Thng - C.T. Dũng BM CNPM
21
Đối tượng
Đối tượng (object) là mt
thc th phn mm bao
bc các thuc tính các
phương thc liên quan.
Đối tượng phn mm Đối tượng phn mm Xe Đạp
Thuc tính được xác định
bi giá tr c th gi
thuc tính th hin.
Mt đối tượng c th
được gi mt th hin.
H.Q. Thng - C.T. Dũng BM CNPM
22
Lớp đối tượng
Trong thế gii thc nhiu đối tượng cùng loi.
Chương trình hướng đối tượng nhiu đối
tượng cùng loi chia s nhng đặc điểm chung.
d
12
H.Q. Thng - C.T. Dũng BM CNPM
23
Lp
Mt lp mt thiết kế (blueprint) hay mu (prototype)
cho các
đối tượng cùng kiu
d: lp XeDap mt thiết kế chung cho nhiu đối tượng xe
đạp được to ra
Lp định nghĩa các thuc tính các phương thc
chung cho t
t c các đối tượng ca cùng mt loi nào đó
Mt đối tượng mt th hin c th ca mt lp.
d: mi đối tượng xe đạp mt th hin ca lp XeDap
Mi th hin th nhng thuc tính th hin khác
nhau
d: mt xe đạp th đang bánh răng th 5 trong khi mt
xe khác th
đang bánh răng th 3.
H.Q. Thng - C.T. Dũng BM CNPM
24
d Lớp Xe đạp
Khai báo cho lp
XeDap
Đối tượng ca lp
XeDap
13
H.Q. Thng - C.T. Dũng BM CNPM
25
Trao đổi thông điệp
Một chương trình (xây dng theo tiếp cận HĐT)
t
p các đối tượng trao đổi thông điệp vi nhau
return SS#
H.Q. Thng - C.T. Dũng BM CNPM
26
Giao din của đối tượng
Th thách ca LTHDT là th ánh x mt
ph
n t (thc th) trong không gian bài toán v
một đối tượng trong không gian li gii.
Một đối tượng có th đưc s dng khi nó
th
đáp ứng được mt s "yêu cu" nào đó t
bên ngoài. Giao din của đối tượng định nghĩa
các d
ch v đối tượng cung cp
Java
Light lt = new Light();
lt.on();
C++
Light
lt;
lt.on();
14
H.Q. Thng - C.T. Dũng BM CNPM
27
d v lp và đối tượng trong mt s
NNLT
Lp Time trong Java
H.Q. Thng - C.T. Dũng BM CNPM
28
Java: Chương trình và c đối tượng
15
H.Q. Thng - C.T. Dũng BM CNPM
29
Lp Time trong C++
H.Q. Thng - C.T. Dũng BM CNPM
30
Chương trình và c đối tượng: C++
16
H.Q. Thng - C.T. Dũng BM CNPM
31
Chương trình và c đối tượng: C++
H.Q. Thng - C.T. Dũng BM CNPM
32
Đóng gói (Encapsulation)
Kết qu ca quá trình trừu tượng hóa:
Đối tượng = Thuc tính + phương thức
Đóng gói: Thông tin và hoạt động bên trong ca
m
ột đối tượng có th đưc che khi thế gii bên
ngoài.
Che du thông tin
Thc hin n
17
H.Q. Thng - C.T. Dũng BM CNPM
33
3. Khái nim thc hin n trong LTHDT
Thông thường trong lp trình người ta phân bit hai
công vi
c: th nht công vic to ra các lp đối
tượng (class creators) công vic th hai s dng
các lp đối tượng này (client programmers).
hai nguyên nhân ch ra s cn thiết phi kh
năng thc hin n trong LTHDT:
Kh năng này cho phép quy định nhng người s
dng (client) ch được phép truy nhp s dng
nh
ng đã quy định cho h. Mt phn class được
che d
u không cho người s dng được quyn
truy nhp.
Kh năng này cho phép nhng người thiết kế các
class kh năng thay đổi hay định nghĩa li class
vn chc chn rng không nh hưởng ti
chương trình ca nhng người s dng class này.
H.Q. Thng - C.T. Dũng BM CNPM
34
3. Khái nim thc hin n trong LTHDT
C++/ Java s dng các t khóa để xác định kh
năng
truy nhp các thông tin d liu t bên
ngoài l
p: public, private, và protected.
Public
private
protected
18
H.Q. Thng - C.T. Dũng BM CNPM
35
4. Khái nim tái s dng trong LTHDT
Khi mt lp được to ra, chúng ta đã mt công sc để
xây dng viết cho các lp này. Kh năng s
dng li các lp mt trong nhng tính cht quan
trng ca LTHDT.
Cách d nht để s dng li lp s dng trc tiếp
các
đối tượng ca lp này như các biến cn thiết để
gii quyết bài toán
Cách th hai s dng các biến - đối tượng thuc
m
t lp để xây dng nên các lp mi (tc đối tượng
nm bên trong lp mi. Nguyên hp thành
(composition) còn goi nguyên kết tp (aggregation
). Nguyên hp thành th hin quan h (has-a
relationship).
Cách th ba: th hin nguyên kế tha
H.Q. Thng - C.T. Dũng BM CNPM
36
5. Khái nim kế tha trong LTHDT
Kh năng cho phép chúng ta th xây dng
được các lp mi da trên các lp đã sn,
chúng ta ch
cn thêm vào đó nhng chưa
có, nhng chưa đủ, được gi tính kế tha
trong LTHDT.
Lp s
Lp kế tha
Tính cht ca kế tha
Mi quan h “Là”: các đối tượng thuc lp kế
tha th được coi như các đối tượng thuc
các l
p s quan h Như là”: trong các
l
p kế tha định nghĩa li các hành vi ca lp
s
pháp UML
19
H.Q. Thng - C.T. Dũng BM CNPM
37
5. Khái nim kế tha trong LTHDT
H.Q. Thng - C.T. Dũng BM CNPM
38
6. Khái nim đa hình trong LTHDT
polymorphism” nghia “nhiu hình thc”, hay “nhiu
dng sng”
Định nghĩa: Đa hình hin tượng các đối tượng thuc
các lp khác nhau kh năng hiu cùng mt thông
điệp theo các cách khác nhau
d: nhn được cùng mt thông điệp “nhy”, mt con
kangaroo và mt con cóc nhy theo hai kiu khác
nhau: chúng cùng hành vi “nhy” nhưng các hành vi
này ni dung khác nhau.
20
H.Q. Thng - C.T. Dũng BM CNPM
39
Đa hình
Ng cnh khác kết qu khác
Đường Thng Hình TrònĐiểm Hình Vuông
V
H.Q. Thng - C.T. Dũng BM CNPM
40
6. Khái nim đa hình trong LTHDT
Khi xây dng các lp kế tha trong
LTHDT có th
xy ra trường hp trong
l
p kế tha lp s cùng định
ngh
ĩa mt hành vi (hàm) nào đó giao
di
n ging ht nhau. Khi đó chúng ta gi
hàm này,
chương trình dch không th
xác định được s gi hành vi nào, hành
vi
được định nghĩa trong lp s hay
hành vi trong l
p kế tha.
chế liên kết sm (early binding function)
chế liên kết mun (late binding function)
| 1/193

Preview text:

Lập trình hướng đối tượng TS H.Q.Thắng, TS C.T.Dũng
Bộ môn công nghệ phần mềm
Đại học bách khoa Hà Nội
Môn học: Lập trình hướng đối tượng
 Giới thiệu về môn học
 Đề cương chi tiết môn học
 Tài liệu tham khảo môn học
 Bài tập lớn môn học
 Thi và đánh giá môn học
H.Q. Thắng - C.T. Dũng BM CNPM 2 1
Giới thiệu về môn học
Mục đích môn học: Môn học này được giới
thiệu cho sinh viên các kiến thức và kỹ thuật
trong LTHDT. Sinh viên sẽ tiếp cận với
phương pháp luận, các kỹ năng, kỹ thuật
trong thiết kế và lập trình hướng đối tượng
Vị trí môn học: áp dụng cho sinh viên năm
thứ 4 (học kỳ 7), CNTT. Trong môn học có sử
dụng kiến thức của các môn học: Cấu trúc dữ
liệu và giải thuật, hệ điều hành, lý thuyết ngôn ngữ
H.Q. Thắng - C.T. Dũng BM CNPM 3
Giới thiệu về môn học (tiếp)
 Thời lượng môn học: 45 tiết lý thuyết được
phân bổ trong 12 tuần. Sẽ có các bài tập
tuần, sinh viên tự tham khảo tài liệu được
giao để thực hiện bài tập lớn (đồ án môn
học) ngay từ tuần 2 của cuối học kỳ
 Bài tập lớn môn (đồ án môn học): làm theo
nhóm, có bảo vệ làm theo nhóm
H.Q. Thắng - C.T. Dũng BM CNPM 4 2
Đề cương chi tiết môn học
Chương 1. Tổng quan về lập trình hướng đối tượng
Chương 2. Các kỹ thuật làm việc với
hằng, biến, xây dựng và sử dụng hàm trong LTHĐT
Chương 3. Các kỹ thuật cơ bản trong xây dựng lớp
Chương 4. Kỹ thuật thừa kế, kết tập và đa hình trong LTHĐT
H.Q. Thắng - C.T. Dũng BM CNPM 5
Đề cương chi tiết môn học
Chương 5. Ngôn ngữ mô hình hóa UML và sử dụng trong LTHDT
Chương 6. Thiết kế khuôn mẫu
Chương 7. Các phép đo đánh giá phần mềm hướng đối tượng
H.Q. Thắng - C.T. Dũng BM CNPM 6 3
Tài liệu tham khảo môn học
[1]. Peter Coad, Jill Nicola; Object-Oriented Programming 
[2]. Harvey M. Deitel, Paul J. Deitel C++
How to Programing (5th Edition) 
[3]. Harvey M. Deitel, Paul J. Deitel How to Java Programing (5th Edition) 
[4]. Bruce Eckel - Thinking in C++ . Second
Edition. MindView Inc., 2000. Có thể tải về từ web site: www.bruceeckel.com 
[5] Martin Fowler UML Distilled: A Brief
Guide to the Standard Object Modeling Language, Third Edition

H.Q. Thắng - C.T. Dũng BM CNPM 7
Bài tập lớn (đồ án môn học)
 Đồ án môn học: Sinh viên được chia làm
các nhóm, mỗi nhóm chọn một cấu trúc
dữ liệu hoặc giải thuật tiêu biểu để xây
dựng phần mềm theo nguyên lý hướng
đối tượng (công cụ tuỳ chọn).
 Yêu cầu của đồ án môn học: các nhóm
tiến hành mô tả và đánh giá phần mềm
hướng đối tượng theo các tiêu chí
H.Q. Thắng - C.T. Dũng BM CNPM 8 4 Đánh giá môn học
 Cuối kỳ thi hết môn, thời gian 60-90 phút
 Điểm đánh giá môn học:
 Điểm kiểm tra điều kiện: 20%
 Điểm thi: trọng số 40%
 Điểm đồ án môn học: trọng số 40%
 Điều kiện miễn thi: thực hiện tốt đồ án
môn học và có những nghiên cứu sâu về
các lĩnh vực trong CNTT. Đồ án môn học
thực hiện đúng theo các quy định chuẩn của môn học
H.Q. Thắng - C.T. Dũng BM CNPM 9 Thảo luận
 Các câu hỏi của sinh viên liên quan đến
nội dung môn học “Lập trình hướng đối tượng”
 Các câu hỏi của sinh viên liên quan đến
nội dung của bài tập lớn và phương pháp thực hiện và bảo vệ
 Các câu hỏi của sinh viên liên quan đến nội dung thi
H.Q. Thắng - C.T. Dũng BM CNPM 10 5
Chương 1. Các khái niệm cơ bản trong Lập
trình hướng đối tượng (LTHDT)

1. Lịch sử phát triển của các ngôn ngữ lập trình
2. Đối tượng và các khái niệm liên quan
3. Khái niệm thực hiện ẩn (hidden implementation) trong LTHDT
4. Khái niệm tái sử dụng trong LTHDT
5. Khái niệm kế thừa trong LTHDT
6. Khái niệm đa hình trong lập trình hướng đối tượng
H.Q. Thắng - C.T. Dũng BM CNPM 11
Chương 1. Các khái niệm cơ bản trong Lập
trình hướng đối tượng (LTHDT) tiếp

7. Khởi tạo và giải phóng đối tượng trong LTHDT
8. Bắt lỗi và xử lý lỗi trong LTHDT
9. Phân tích và thiết kế hướng đối tượng 10. Extreme programming
11. Tại sao ngôn ngữ C++ thông dụng
12. Tại sao ngôn ngữ Java thông dụng
13. Quá trình dịch một phần mềm
14. Các đặc điểm của công cụ biên dich độc lập
15. Câu hỏi và bài tập tuần 1
H.Q. Thắng - C.T. Dũng BM CNPM 12 6
1. Lịch sử phát triển của các ngôn ngữ lập trình
 Tất cả các ngôn ngữ lập trình cho phép và yêu
cầu chúng ta phải trừu tượng hóa (abstraction).
 Trong tất cả các ngôn ngữ lập trình chúng ta đã
trực tiếp hoặc gián tiếp thực hiện trừu tượng hóa.
 Hợp ngữ (Assembly language) là một ngôn ngữ lập
trình tuần tự, gần với tập các lệnh mã máy của CPU
vì thế khả năng trừu tượng hóa là rất nhỏ.
 Các ngôn ngữ lập trình cấu trúc khả năng trừu tượng
đã tăng lên rất nhiều so với hợp ngữ. Tư tưỏng chính:
tìm ra cách thể hiện bài toán cần giải quyết bằng
những cấu trúc lập trình có trong các ngôn ngữ tương ứng.  Phương pháp H.Q. Th tiếp ắng - cậ C.T. D n ũng BM CNPM
hướng logic (logic-oriented) 13
1. Lịch sử phát triển của các ngôn ngữ lập trình
 Mong muốn tìm ra môt cách tiếp cận cho phép giải
quyết chung được số lượng lớn các bài toán.
 Phương pháp tiếp cận hướng đối tượng được coi là
một phương pháp tốt để phục vụ cho mục đích ấy.
 Chúng ta tiếp cận bài toán bằng cách thể hiện các
thành phần của bài toán là các “đối tượng” (object).
 Mỗi đối tượng có thể coi như một “thành phần sống”
- có nghĩa là nó có trạng thái, có các hoạt động -
thực hiện các thao tác nào đó. Các thao tác này thực
hiện các chức năng của hệ thống.
H.Q. Thắng - C.T. Dũng BM CNPM 14 7 Trừu tượng hóa
 Trừu tượng hóa điều khiển (control
abstraction): Một trong những đặc tính
quan trọng của các ngôn ngữ lập trình.  a = (1 + 2) * 5;
 Bao gồm trong đó khái niệm, trừu tượng hóa chức năng
 Trừu tượng hóa dữ liệu: Chỉ quan tâm dữ
liệu được sử dụng như thế nào, không
quan tâm nó được biểu diễn cụ thể ra sao.
H.Q. Thắng - C.T. Dũng BM CNPM 15
1. Lịch sử phát triển của các ngôn ngữ lập trình
Alan Kay đã tổng hợp các đặc tính của LTHDT:
1. Tất cả đều là đối tượng.
2. Chương trình phần mềm có thể coi là một tập
hợp các đối tượng tương tác với nhau
3. Mỗi đối tượng trong chương trình có các dữ
liệu độc lập của mình và chiếm bộ nhớ riêng của mình.
4. Mỗi đối tượng đều có dạng đặc trưng của lớp các đối tượng đó.
5. Tất cả các đối tượng thuộc về cùng một lớp đều có các H.Q. Th hành ắng - C.T. D vi giố ũng BM CNPM ng nhau 16 8
2. Đối tượng và các khái niệm liên quan  Đối tượng
 Giao diện của đối tượng  Lớp đối tượng
 Thuộc tính đối tượng  Hành vi đối tượng  Gửi thông điệp
 Biểu điễn đối tượng - biểu đồ đối tượng
và biểu đồ lớp trong UML
H.Q. Thắng - C.T. Dũng BM CNPM 17 Đối tượng (object)  Đối tượng là chìa khóa để hiểu được kỹ thuật hướng đối tượng  Trong hệ thống hướng đối tượng, mọi thứ đều là đối tượng
Viết một chương trình hướng đối tượng nghĩa là đang xây dựng
một mô hình của một vài bộ phận trong thế giới thực
H.Q. Thắng - C.T. Dũng BM CNPM 18 9
Đối Tượng Thế Giới Thực (Real Object)
 Một đối tượng thế giới thực là một thực
thể cụ thể mà thông thường chúng ta có thể
sờ, nhìn thấy hay cảm nhận được.  Tất cả có trạng thái (state) và hành động (behaviour)
H.Q. Thắng - C.T. Dũng BM CNPM 19
Đối Tượng Phần Mềm (Software Object)
 Các đối tượng phần mềm có thể được
dùng để biểu diễn các đối tượng thế giới thực.
 Cũng có trạng thái và hành động
 Trạng thái: thuộc tính (attribute; property)
 Hành động: phương thức (method)
H.Q. Thắng - C.T. Dũng BM CNPM 20 10 Đối tượng Đối tượng phần mềm
Đối tượng phần mềm Xe Đạp
Đối tượng (object) là một
Thuộc tính được xác định thực thể phần mềm bao
bởi giá trị cụ thể gọi là
bọc các thuộc tính và các
thuộc tính thể hiện.
phương thức liên quan.
Một đối tượng cụ thể
được gọi là một thể hiện.
H.Q. Thắng - C.T. Dũng BM CNPM 21 Lớp đối tượng
 Trong thế giới thực có nhiều đối tượng cùng loại.
 Chương trình hướng đối tượng có nhiều đối
tượng cùng loại chia sẻ những đặc điểm chung.  Ví dụ
H.Q. Thắng - C.T. Dũng BM CNPM 22 11 Lớp
 Một lớp là một thiết kế (blueprint) hay mẫu (prototype)
cho các đối tượng cùng kiểu
 Ví dụ: lớp XeDap là một thiết kế chung cho nhiều đối tượng xe đạp được tạo ra
 Lớp định nghĩa các thuộc tính và các phương thức
chung cho tất cả các đối tượng của cùng một loại nào đó
 Một đối tượng là một thể hiện cụ thể của một lớp.
 Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap
 Mỗi thể hiện có thể có những thuộc tính thể hiện khác nhau
 Ví dụ: một xe đạp có thể đang ở bánh răng thứ 5 trong khi một
xe khác có thể là đang ở bánh răng thứ 3.
H.Q. Thắng - C.T. Dũng BM CNPM 23 Ví dụ Lớp Xe đạp Khai báo cho lớp XeDap Đối tượng của lớp XeDap
H.Q. Thắng - C.T. Dũng BM CNPM 24 12 Trao đổi thông điệp
 Một chương trình (xây dựng theo tiếp cận HĐT)
là tập các đối tượng trao đổi thông điệp với nhau return SS#
H.Q. Thắng - C.T. Dũng BM CNPM 25
Giao diện của đối tượng
 Thử thách của LTHDT là có thể ánh xạ một
phần tử (thực thể) trong không gian bài toán về
một đối tượng trong không gian lời giải.
 Một đối tượng có thể được sử dụng khi nó có
thể đáp ứng được một số "yêu cầu" nào đó từ
bên ngoài. Giao diện của đối tượng định nghĩa
các dịch vụ mà đối tượng cung cấp Java C++ Light lt = new Light(); Light lt; lt.on(); lt.on();
H.Q. Thắng - C.T. Dũng BM CNPM 26 13
Ví dụ về lớp và đối tượng trong một số NNLT  Lớp Time trong Java
H.Q. Thắng - C.T. Dũng BM CNPM 27
Java: Chương trình và các đối tượng
H.Q. Thắng - C.T. Dũng BM CNPM 28 14 Lớp Time trong C++
H.Q. Thắng - C.T. Dũng BM CNPM 29
Chương trình và các đối tượng: C++
H.Q. Thắng - C.T. Dũng BM CNPM 30 15
Chương trình và các đối tượng: C++
H.Q. Thắng - C.T. Dũng BM CNPM 31 Đóng gói (Encapsulation)
 Kết quả của quá trình trừu tượng hóa:
 Đối tượng = Thuộc tính + phương thức
 Đóng gói: Thông tin và hoạt động bên trong của
một đối tượng có thể được che khỏi thế giới bên ngoài.  Che dấu thông tin  Thực hiện ẩn
H.Q. Thắng - C.T. Dũng BM CNPM 32 16
3. Khái niệm thực hiện ẩn trong LTHDT
 Thông thường trong lập trình người ta phân biệt hai
công việc: thứ nhất là công việc tạo ra các lớp đối
tượng (class creators) và công việc thứ hai là sử dụng
các lớp đối tượng này (client programmers).
 Có hai nguyên nhân chỉ ra sự cần thiết phải có khả
năng thực hiện ẩn trong LTHDT:
 Khả năng này cho phép quy định những người sử
dụng (client) chỉ được phép truy nhập và sử dụng
những gì đã quy định cho họ. Một phần class được
che dấu và không cho người sử dụng được quyền truy nhập.
 Khả năng này cho phép những người thiết kế các
class có khả năng thay đổi hay định nghĩa lại class
mà vẫn chắc chắn rằng không ảnh hưởng tới
chương trình của những người sử dụng class này.
H.Q. Thắng - C.T. Dũng BM CNPM 33
3. Khái niệm thực hiện ẩn trong LTHDT
 C++/ Java sử dụng các từ khóa để xác định khả
năng truy nhập các thông tin dữ liệu từ bên
ngoài lớp: public, private, và protected.  Public  private  protected
H.Q. Thắng - C.T. Dũng BM CNPM 34 17
4. Khái niệm tái sử dụng trong LTHDT
 Khi một lớp được tạo ra, chúng ta đã mất công sức để
xây dựng và viết mã cho các lớp này. Khả năng sử
dụng lại các lớp là một trong những tính chất quan trọng của LTHDT.
 Cách dễ nhất để sử dụng lại lớp là sử dụng trực tiếp
các đối tượng của lớp này như là các biến cần thiết để giải quyết bài toán
 Cách thứ hai là sử dụng các biến - đối tượng thuộc
một lớp để xây dựng nên các lớp mới (tức là đối tượng
nằm bên trong lớp mới. Nguyên lý hợp thành
(composition) còn goi là nguyên lý kết tập (aggregation
). Nguyên lý hợp thành thể hiện quan hệ có (has-a relationship).
H.Q. Thắng - C.T. Dũng BM CNPM 35
 Cách thứ ba: thể hiện ở nguyên lý kế thừa
5. Khái niệm kế thừa trong LTHDT
 Khả năng cho phép chúng ta có thể xây dựng
được các lớp mới dựa trên các lớp đã có sẵn,
chúng ta chỉ cần thêm vào đó những gì chưa
có, những gì chưa đủ, được gọi là tính kế thừa trong LTHDT.  Lớp cơ sở  Lớp kế thừa
 Tính chất của kế thừa
 Mối quan hệ “Là”: các đối tượng thuộc lớp kế
thừa có thể được coi như các đối tượng thuộc
các lớp cơ sở và quan hệ “Như là”: trong các
lớp kế thừa định nghĩa lại các hành vi của lớp cơ sở  Ký pháp UML
H.Q. Thắng - C.T. Dũng BM CNPM 36 18
5. Khái niệm kế thừa trong LTHDT
H.Q. Thắng - C.T. Dũng BM CNPM 37
6. Khái niệm đa hình trong LTHDT
 “polymorphism” có nghia “nhiều hình thức”, hay “nhiều dạng sống”
 Định nghĩa: Đa hình là hiện tượng các đối tượng thuộc
các lớp khác nhau có khả năng hiểu cùng một thông
điệp theo các cách khác nhau
 Ví dụ: nhận được cùng một thông điệp “nhảy”, một con
kangaroo và một con cóc nhảy theo hai kiểu khác
nhau: chúng cùng có hành vi “nhảy” nhưng các hành vi
này có nội dung khác nhau.
H.Q. Thắng - C.T. Dũng BM CNPM 38 19 Đa hình
 Ngữ cảnh khác  kết quả khác Điểm Đường Thẳng Hình Tròn Hình Vuông Vẽ
H.Q. Thắng - C.T. Dũng BM CNPM 39
6. Khái niệm đa hình trong LTHDT
 Khi xây dựng các lớp kế thừa trong
LTHDT có thể xảy ra trường hợp trong
lớp kế thừa và lớp cơ sở cùng định
nghĩa một hành vi (hàm) nào đó có giao
diện giống hệt nhau. Khi đó chúng ta gọi
hàm này, chương trình dịch không thể
xác định được sẽ gọi hành vi nào, hành
vi được định nghĩa trong lớp cơ sở hay
hành vi trong lớp kế thừa.
 Cơ chế liên kết sớm (early binding function)
 Cơ chế liên kết muộn (late binding function)
H.Q. Thắng - C.T. Dũng BM CNPM 40 20