1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình hướng đối tượng Chương 1. Tổng quan về OOP

113 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình hướng đối tượng Chương 1. Tổng quan về OOP
Tác giả Cao Tuấn Dũng
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Lập trình hướng đối tượng
Thể loại Sách giáo trình
Thành phố Hà Nội
Định dạng
Số trang 113
Dung lượng 2,39 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Các mô hình được tạo ra cần dễ tạo, dễ thay đổi, mở rộng, thẩm định và kiểm chứng • Các hệ thống được xây dựng linh hoạt trong thay đổi, có các kiến trúc xác định và có cơ hội để tạo r

Trang 1

LẬP TRÌNH H NG Đ I T ỢNG

Cao Tuấn Dũng dungct@soict.hut.edu.vn

Trang 4

• Công nghệ đối tượng là một

tập các quy tắc (trừu tượng

hóa, đóng gói, đa hình), các

Trang 5

5

• Tạo ra các mô hình phản ánh một lĩnh vực nào

đó sử dụng thuật ngữ của lĩnh vực đó

• Các mô hình được tạo ra cần dễ tạo, dễ thay

đổi, mở rộng, thẩm định và kiểm chứng

• Các hệ thống được xây dựng linh hoạt trong

thay đổi, có các kiến trúc xác định và có cơ hội

để tạo ra và thực thi các thành phần có khả

năng tái sử dụng

• Quy trình phát triển + Ngôn ngữ mô hình hóa +

Kỹ thuật công cụ phát triển

Trang 6

1.2 Công ngh ệ đối tượng được sử dụng ở đâu?

• Các hệ thống Client/Server và phát triển Web

 Công nghệ đối tượng cho

phép các công ty đóng gói thông tin doanh nghiệp trong các đối tượng và giúp phân phối quá trình xử lý qua

mạng Internet hoặc một mạng máy tính

Trang 7

7

Công ngh ệ đối tượng được sử dụng ở đâu?

• Hệ nhúng (embedded system)

• Hệ thống thời gian thực (real-time)

▫ Công nghệ đối tượng cho phép các hệ thống

th ời gian thực có thể phát triển với chất lượng

cao h ơn và linh hoạt hơn

Trang 8

• Các mốc chính c a công nghệ đối tượng

Trang 10

Assembly code

Trang 11

phải tuân theo một cách

thức chung truy cập vào

dữ liệu

Trang 12

L ịch sử phát triển của các NNLT

• c NNLT hướng đối tượng:

▫ Thể hiện các thành phần c a bài toán là các “đối

t ượng” (object)

▫ Hướng đối tượng là một kỹ thuật để mô hình hóa

h ệ thống thành nhiều đối tượng

Trang 13

▫ Ngôn ngữ cấu trúc: Trừu tượng hóa điều khiển

(control abstraction) + tr ừu tượng hóa ch c năng (functional abstraction)

▫ Ngôn ngữ HĐT: Trừu tượng hóa dữ liệu (Data

abstraction)

Trang 14

Bài t ập Đọc hiểu

• Đọc và tóm tắt một số điểm khác nhau giữa lập

trình cấu trúc (hướng th tục) và OOP

• http://www.desy.de/gna/html/cc/Tutorial/node3.htm

Trang 16

1 Tất cả đều là đối tượng

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ành vi giống

nhau

Alan Kay

Trang 17

18

Đố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

Trang 18

• Đối tượng trong thế giới thực

▫ Ví dụ một chiếc ô tô

• Liên quan đến chiếc ô tô:

▫ Các thông tin về chiếc xe như: màu sắc, tốc độ, số km

đã đi được,

▫ Các hoạt động c a chiếc xe như: tăng tốc khi nhấn

ga, gi ảm tốc khi đạp phanh,

2.1 Đối tượng là gì?

Trang 20

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

Trang 21

Hành vi được biểu diễn bởi các

thao tác (operations), ph ương

th c (methods)

22

Trang 22

Dave Age: 32 Height: 6’ 2”

Brett Age: 35 Height: 5’ 10”

Gary Age: 61 Height: 5’ 8”

Trang 23

Hành vi

Get the mail Cook dinner

Trang 24

Đ ịnh danh

Okay, which one of

you wise guys is

the real Poppini?

De great Poppini at-a your service

Trang 25

phương thức liên quan.

Thuộc tính được xác định bởi giá trị cụ thể gọi là

thuộc tính thể hi n Một đối tượng cụ thể được gọi là một thể hi n.

Trang 26

Đ ối tượng phần mềm và bài toán thực tiễn

Bài toán quản lý tài khoản ngân hàng – thẻ ATM – thanh toán điện tử

Thuộc

tính

Account name: Duc Binh Balance: 2.000.000 VND Deposit Debit

Balance inquiry

Yêu cầu dịch vụ Balance inquiry

Tôi muốn xem số

dư tài khoản

Trang 27

31

• 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

Trang 29

33

Attribute name: Duc Binh

Balance: 2.000.000 VND Deposit() Withdraw()

checkBalance() operation

Account object of Mr Duc Binh

Attribute name: Thu Lan

Balance: 1.000.000 VND Deposit() Withdraw()

checkBalance() operation

Account object of Mrs Thu Lan

Account Class (model of objects)

Method definition

operation

INSTANTIATE

Trang 30

L ớp và đối tượng

Thể hiện

Thiết kế mẫu

Trang 31

35

• Xét hệ thống bán hàng trực tuyến Amazon Đưa

ra một số ví dụ về lớp và đối tượng trong hệ

thống?

• Cùng câu hỏi cho hệ thống thông tin quản lý đào

tạo SIS ĐHBK?

Trang 32

2.3 T ương tác giữa các đối tượng

• S ự giao tiếp giữa các đối tượng trong thế giới thực:

• Các đối tượng và sự tương tác giữa chúng trong lập

trình

▫ Các đối tượng giao tiếp với nhau bằng cách gửi thông điệp

(message)

Trang 33

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#

Trang 34

G ọi hàm vs Gửi thông điệp

• Gọi hàm (Call function)

▫ Ch ỉ ra chính xác đoạn mã nào sẽ được thực hiện

▫ Ch ỉ có duy nhất một sự thực thi c a một hàm với một tên nào đó

▫ Không có hai hàm trùng tên

• Gửi thông điệp

▫ Yêu cầu một dịch vụ từ một đối tượng và đối tượng

s ẽ quyết định cần phải làm gì

▫ Các đối tượng khác nhau sẽ có các cách thực thi

các thông điệp theo cách khác nhau

Trang 35

Thông đi ệp vs Phương thức

• Thông điệp

▫ Được gửi từ đối tượng này đến đối tượng kia, không bao gồm đoạn

• Ph ương th c

▫ Th tục/hàm trong ngôn ngữ lập trình cấu trúc

▫ Là sự thực thi dịch vụ được yêu cầu bởi thông điệp

▫ Là đoạn mã sẽ được thực thi để đáp ng thông điệp được gửi đến

cho đối tượng

39

Trang 36

2.4 H ướng cấu trúc vs Hướng ĐT?

• Hướng cấu trúc:

▫ data structures + algorithms = Program

▫ (cấu trúc dữ liệu + giải thuật = Chương trình)

• Hướng đối tượng:

▫ objects + messages = Program

▫ (đối tượng + thông điệp = Chương trình)

Trang 37

H ướng cấu trúc – Hướng đối tượng

• Lập trình cấu trúc (procedural Programming):

▫ Đơn vị là các th tục, hàm

▫ D ữ liệu có ranh giới nhất định với th tục

• Lập trình Hướng đối tượng

▫ Đơn vị là đối tượng

▫ D ữ liệu gắn với hàm (phương th c) trong đối tượng

▫ M ỗi cấu trúc dữ liệu có các phương th c họat động trên nó

Trang 38

2.5 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

lt.on();

Trang 39

44

• Quyết định bằng cách áp dụng nguyên lý Đóng

gói

Trang 40

Ví d ụ về lớp và đối tượng trong

• Lớp Time trong Java

Trang 41

46

Trang 43

48

Trang 44

Ch ương trình và các đối tượng: C++

Trang 47

52

• “Sự bỏ qua có chọn lựa”

▫ Quyết định cái gì là quan trọng và không

▫ Tập trung và dựa trên những gì là quan trọng

▫ Bỏ qua và không phụ thuộc vào những gì là không

quan tr ọng

Trang 48

2.1 Tr ừu tượng hóa (Abstraction)

• Là quá trình loại bỏ đi các thông tin

cụ thể và giữ lại những thông tin

chung

• Tập trung vào các đặc điểm cơ bản

của thực thể, các đặc điểm phân

biệt nó với các loại thực thể khác

• Phụ thuộc vào góc nhìn

▫ Quan trọng trong ngữ cảnh này nhưng

lại không có ý nghĩa nhiều trong ngữ

cảnh khác

53

Trang 49

54

54

Sinh viên Giáo viên

Khóa học diễn ra lúc 9:00 sáng các ngày thứ 3, 5, 7

Khóa học (ví dụ đại số)

Trang 50

Ví d ụ: Cửa ra vào

Trang 51

56

Trang 52

Câu h ỏi trên lớp

• Hệ thống làm quen kết bạn qua mạng

▫ Góc nhìn người sử dụng

▫ Góc nhìn người quản lý

Trang 53

58

2.2 Đóng gói (Encapsulation)

Tăng cường tính mềm dẻo

• Che giấu, ẩn đi chi tiết thực hiện bên trong

 Cung cấp cho thế giới bên ngoài một giao diện

 Người dùng không phụ thuộc vào việc sửa đổi

sự thực thi bên trong

Trang 54

together

• 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

• Che giấu:

▫ Che giấu dữ liệu (thông tin)

▫ Che giấu hành động: Thực hiện ẩn

Trang 55

60

• Bảo vệ dữ liệu: Cung cấp các con đường được

cấp phép để truy cập dữ liệu

• Thay đổi dữ liệu linh hoạt dễ dàng

Trang 56

Vai trò c ủa thực hiện ẩn

• Class creator và client programmers

• Thực hiện ẩn 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

▫ 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.

Trang 57

62

• Giao diện thông điệp

(phương th c) c a đối

tượng

• Giáo sư Clark được yêu

cầu dạy 4 lớp tháng tới

TakeSabbatical ()

Giáo sư Clark

Name: J Clark Employee ID: 567138 HireDate: 07/25/1991 Status: Tenured Discipline: Finance MaxLoad:4

SetMaxLoad(4)

Trang 58

Câu h ỏi thảo luận:

• Tính đóng gói đem lại lợi ích gì?

Trang 59

64

Tính đóng gói

• Cho phép điều khiển

▫ Việc sử dụng đối tượng

được kiểm soát thông qua

các method public

• Hỗ trợ sự thay đổi

▫ Việc sử dụng đối tượng

không b ị ảnh hưởng nếu

d ữ liệu nội tại (private) bị

thay đổi

Withdraw( ) Deposit( ) dollars 12

Withdraw( ) Deposit( ) balance 12.56

cents 56

Trang 60

2.3 Mô đun hóa (Modularity)

Trang 61

H thống quản lý siêu thị sách

H thống

k toán

H thống quản lý nhân viên

Trang 62

2.4 Phân c ấp (Hierarchy)

Phân cấp có thể được định nghĩa là:

▫ việc xếp hạng hay xếp thứ tự các mức trừu tượng vào một cấu trúc cây Các loại: phân cấp kết tập, phân cấp lớp, phân cấp phạm vi, phân cấp mức

kế thừa, phân cấp thành phần, phân cấp mức độ

chuyên môn hóa, phân cấp loại (Dictionary of

Object Technology, Firesmith, Eykholt, 1995.)

Trang 63

Tài khoản ngân hàng

Tiên gửi Cổ phiếu

Chứng khoán

Các loại giấy tờ có giá trị

Các phần tử ở cùng cấp trong sơ đồ phân cấp

thì có cùng mức trừu tượng hóa

Trang 65

Phân tích và thi ết kế hướng đối

• Phương pháp luận (methodology) trong PT&TK

phần mềm thông thường được định nghĩa như

là một tập các quá trình và thao tác để tìm và khám phá cách có thể giải quyết được bài toán

phần mềm

• Một trong các phương pháp hiệu quả nhất để phát triển phần mềm

Trang 66

Phân tích và thi ết kế hướng đối

• Sáu giai đoạn

▫ Giai đoạn 0: Lập kế hoạch (make a plan)

▫ Giai đoạn 1: Xác định mục tiêu - làm gì (what are we making)

▫ Giai đoạn 2: Xác định cách làm thế nào (how to build it)

▫ Giai đoạn 3: Xây dựng phần lõi - Building the core

▫ Giai đoạn 4: Lặp lại (hiệu chỉnh) các trường hợp sử dụng

▫ Giai đoạn 5: Phát triển (evolution)

Trang 67

72

Giai đoạn 1: Xác định mục tiêu - làm gì (what are we

making)

• Trong giai đoạn này chúng ta có nhiệm vụ xác định cụ

th ể các mục tiêu, ch c năng và nhiệm vụ mà phần mềm chúng ta c ần xây dựng phải đáp ng

• Trong ph ương pháp lập trình cổ điển hướng th tục

ng ười ta gọi giai đoạn này là giai đoạn tạo ra “phân tích yêu cầu và mô tả hệ thống” (requirements analysis and

system specification)

• Trong PT&TK h ướng đối tượng người ta sử dụng các ký pháp và k ỹ thuật Use case để mô tả các công việc này

Trang 68

Bi ểu đồ Use case

Trang 70

Khuôn d ạng của thẻ CRC

• 1 Tên c a lớp Thông thường người ta đặt tên

lớp liên quan đến vai trò c a lớp, chúng ta sẽ sử

dụng lớp để làm gì

• 2 Trách nhiệm c a lớp: lớp có thể làm gì Thông

thường các thông tin ở đây bao gồm tên c a các

hàm thành phần – Tri th c mà lớp đó quản lý

• 3 Tương tác c a lớp: lớp này có thể tương tác

được với những lớp nào khác Những lớp cần

thiết để lớp đang xét hoàn thành nhiệm vụ

Trang 71

76

CRC card

Trang 72

M ột số đặc điểm cần lưu ý khi

1 Chúng ta c ần phân biệt rõ việc tạo ra lớp, sau đó mới nghĩa tới

vi ệc phát triển và hoàn thiện lớp trong quá trình giải quyết bài toán

2 Vi ệc phát hiện ra các lớp cần thiết cho chương trình là một trong

nh ững nhiệm vụ chính c a thiết kế hệ thống, nếu chúng ta đã có

nh ững lớp này (trong một thư viện lớp nào đó chẳng hạn) thì

công vi ệc sẽ dễ dàng hơn

3 Khi phân tích hay phát tri ển các lớp không nên tập trung vào để

bi ết tất cả về một lớp, chúng ta sẽ biết tất cả các thuộc tính này

khi phát tri ển hệ thống (learns as you go)

Trang 73

78

4 Khi ti ến hành lập trình cần tuân th theo các thiết kế đã làm

Không nên băn khoăn rằng chúng ta sẽ không sử dụng phương

pháp l ập trình truyền thống và cảm thấy choáng ngợp trước số

l ượng lớn các đối tượng

5 Luôn luôn gi ữ nguyên tắc: mọi vấn đề cần giải quyết theo

ph ương án đơn giản nhất, không nên ph c tạp hóa Sử dụng

nguyên lý c a Occam Razor: L ớp đơn giản nhất bao giờ cũng là

l ớp tốt nhất, hãy bắt đầu bằng những cái đơn giản và chúng ta sẽ

k ết thúc bằng những hệ thống phức tạp

Trang 74

Xác đ ịnh cách làm: Đối tượng

• Trong giai đoạn này , một trong những yêu cầu quan trong đó là thiết kế các đối tượng (object design) Trong PT&TK h ướng đối tượng người ta đã tổng kết 5 bước để thi ết kế đối tượng:

• Bước 1 Phát hiện đối tượng (Object discovery) B ước này được thực hiện ở giai đoạn phân tích chương trình Chúng ta phát

hi ện các đối tượng nhờ các yếu tố bên ngoài và các đặc điểm bên ngoài

• Bước 2 Lắp ráp đối tượng (Object assembly) B ước tìm

ki ếm các đặc điểm c a đối tượng để thêm vào các thuộc tính, các hàm thành ph ần cho đối tượng

Trang 75

80

B ước 3 Xây dựng hệ thống (System construction) Trong giai đoạn

này chúng ta phát tri ển các đối tượng, xem xét các tương tác giữa

các đối tượng để hình thành hệ thống hoạt động

B ước 4 Mở rộng hệ thống (System extension) Khi chúng ta thêm

vào các tính năng c a hệ thống, chúng ta cần thêm các lớp mới, các

đối tượng mới và các tương tác giữa các đối tượng này với các đối

t ượng đã có trong hệ thống

B ước 5 Tái sử dụng đối tượng (Object reuse) Đây là một trong

nh ững thử nghiệm quan trọng c a các đối tượng và lớp trong thiết

k ế phần mềm Chúng ta cần phải sử dụng lại các lớp và các đối

t ượng trong phần mềm (thông qua tính kế thừa và tương tác giữa

các đối tượng)

Trang 77

5.1 Ngôn ng ữ C++

• Phiên b ản cải tiến ngôn ngữ lập trình C thành ngôn ngữ

l ập trình hướng đối tượng

• T ất cả các chương trình đã có sẵn c a C sẽ chạy được trong C++

• C++ có nh ững đặc tính phát triển tốt hơn ngôn ngữ C:

▫ TRong C++ có đặc tính tham chiếu c a các biến

(references) cho phép quản lý địa chỉ c a các biến hay l ấy ra giá trị c a các biến ở các địa chỉ tương ng

▫ Quản lý tên hàm và biển đã được mở rông thông qua

cơ chế chồng hàm function overloading,

Trang 78

5.1 Ngôn ng ữ C++

• Tư tưởng phân vùng các biến namespaces cho phép

qu ản lý các biến được tốt hơn

• Tính hi ệu quả

• Các ph ần mềm xây dựng trở nên dễ hiểu hơn

• Hi ệu quả sử dụng c a các thư viện

• Kh ả năng sử dụng lại mã thông qua templates

• Qu ản lý lỗi

• Cho phép xây d ựng các phần mềm lớn hơn

Trang 79

84

5.2.1 Java là gì?

• Java là một ngôn ngữ lập trình HĐT được phát triển

bởi Sun Microsystems

khiển các bộ xử lý bên trong

các thiết bị điện tử dân dụng

như máy điện thoại cầm tay,

lò vi sóng…

 Bắt đầu được sử dụng từ

năm 1995

Trang 81

5.2.2 Các ấn bản của Java

86

J2EE: Xây dựốg dựa trêố ốềố tảốg của J2SE, cuốg cấp các tíốh ốăốg để ớây dựốg Ố t ốềố tảốg đầy đủ, ổố địốh, aố toàố ộà ốhaốh để ớây dựốg các ứốg dụốg doaốh ốghiệp

J2ME: Cuốg cấp Ố t Ốôi tr ờốg Ốạốh Ốẽ, liốh hoạt cho các ứốg dụốg chạy trêố di đ ốg ộà các thiết bị ốhúốg khác (PDAs, b giải

Ốã cáp truyềố hìốh, Ốáy iố…)

Jaộa Card: Cuốg cấp Ốôi

tr ờốg aố toàố chạy trêố các thẻ thôốg Ốiốh (sỐart card) ộà các thiết

Ngày đăng: 27/12/2022, 09:18

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w