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

Bài Giảng Phân Tích & Thiết Kế Hệ Thống Hướng Đối Tượng

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 (1.03 MB, 52 trang )

1

75ѬӠ1*ĈҤI HӐC HÀNG HҦI VIӊT NAM
KHOA CÔNG NGHӊ THÔNG TIN
BӜ MÔN Hӊ THӔNG THÔNG TIN

-----***-----

BÀI GIҦNG
PHÂN TÍCH & THIӂT Kӂ Hӊ THӔNG
+ѬӞ1*ĈӔ,7ѬӦNG

TÊN HӐC PHҪN

: PHÂN TÍCH & THIӂT Kӂ
Hӊ THӔ1*+ѬӞ1*ĈӔ,7ѬӦNG
MÃ HӐC PHҪN
: 17407
75Î1+ĈӜ Ĉ¬27ҤO
: ĈҤI HӐC CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGHӊ THÔNG TIN

HҦI PHÒNG - 2011


2

ЌЌ
Nӝi dung
&KѭѫQJ0{KuQKÿӕLWѭӧng
1.1. Sӵ phát triӇn cӫDP{KuQKÿӕLWѭӧng


1.2. NӅn tҧng cӫDP{KuQKÿӕLWѭӧng
1.3. Phҫn tӱ FѫEҧQWURQJP{KuQKÿӕLWѭӧng
&KѭѫQJ/ӟSYjÿӕLWѭӧng
&ѫEҧn vӅ ÿӕLWѭӧng
2.2. Mӕi quan hӋ giӳDFiFÿӕLWѭӧng
&ѫEҧn vӅ lӟp
2.4. Mӕi quan hӋ giӳa các lӟp
2.5. Sӵ WѭѫQJWiFOүn nhau cӫa lӟSYjÿӕLWѭӧng
&KѭѫQJ6ӵ phân loҥi (Classification).
3.1. Tҫm quan trӑng cӫa sӵ phân loҥi
;iFÿӏnh các lӟSYjÿӕLWѭӧng
&KѭѫQJ3KkQWtFKWKLӃt kӃ hӋ thӕQJKѭӟQJÿӕLWѭӧng sӱ dөng UML (Unified
Model Language)
4.1. Ngôn ngӳ mô hình thӕng nhҩt (UML)
4.2. Các biӇXÿӗ (Diagrams)
&KѭѫQJ4X\WUuQKSKkQWtFKYjWKLӃt kӃ
5.1. NӅn tҧng
4X\WUuQKYƭP{9zQJÿӡi cӫa triӇn khai phҫn mӅm
5.3. Quy trình vi mô: Quá trình phân tích và thiӃt kӃ
&KѭѫQJ0ӝt sӕ bài toán cө thӇ
6.1. HӋ thӕQJÿLӅu khiӇn: Quҧn lý hӋ thӕng giao thông
6.2. Ӭng dөng mҥQJOѭӟi: HӋ thӕng theo dõi kǤ nghӍ

Trang
5
5
8
9
12
12

12
13
15
15
16
16
16
18
18
23
37
37
37
40
44
44
46


3

Tên hӑc phҫn: Phân tích & ThiӃt kӃ hӋ thӕQJKѭӟQJÿӕLWѭӧng
Loҥi hӑc phҫn: 2
Bӝ môn phө trách giҧng dҥy: HӋ thӕng Thông tin
Khoa phө trách: CNTT.
Mã hӑc phҫn: 17407
Tәng sӕ TC: 2
TS tiӃt
Lý thuyӃt Thӵc hành/ Xemina Tӵ hӑc Bài tұp lӟn Ĉӗ án môn hӑc
45

30
15
0
0
0
Hӑc phҫn hӑFWUѭӟc: Phân tích và ThiӃt kӃ hӋ thӕng
Hӑc phҫn tiên quyӃt: Không yêu cҫu.
Hӑc phҫn song song: Không yêu cҫu.
Mөc tiêu cӫa hӑc phҫn:
Cung cҩp các kiӃn thӭFFѫEҧn vӅ phân tích, thiӃt kӃ hӋ thӕng thông tin tin hӑc hoá theo mô hình
KѭӟQJÿӕLWѭӧng sӱ dөng UML.
Nӝi dung chӫ yӃu:
3KѭѫQJSKiSOXұn phân tích thiӃt kӃ hӋ thӕQJKѭӟQJÿӕLWѭӧng; Nguyên tҳc và công cө mô hình hoá
hӋ thӕng; ThiӃt kӃ và FjLÿһt hӋ thӕQJKѭӟQJÿӕLWѭӧng; Các ví dө minh hoҥ.
Nӝi dung chi tiӃt:
PHÂN PHӔI SӔ TIӂT
7Ç1&+ѬѪ1*0ӨC
TS LT TH BT KT
&KѭѫQJ0{KuQKÿӕLWѭӧng
2
2
1.1. Sӵ phát triӇn cӫDP{KuQKÿӕLWѭӧng
1.2. NӅn tҧng cӫDP{KuQKÿӕLWѭӧng
1.3. Phҫn tӱ FѫEҧQWURQJP{KuQKÿӕLWѭӧng
&KѭѫQJ/ӟSYjÿӕLWѭӧng
2
2
&ѫEҧn vӅ ÿӕLWѭӧng
2.2. Mӕi quan hӋ giӳDFiFÿӕLWѭӧng
&ѫEҧn vӅ lӟp

2.4. Mӕi quan hӋ giӳa các lӟp
2.5. Sӵ WѭѫQJWiFOүn nhau cӫa lӟSYjÿӕi Wѭӧng
&KѭѫQJ6ӵ phân loҥi (Classification).
2
3.1. Tҫm quan trӑng cӫa sӵ phân loҥi
;iFÿӏnh các lӟSYjÿӕLWѭӧng
&KѭѫQJ3KkQWtFKWKLӃt kӃ hӋ thӕQJKѭӟQJÿӕi
18
16
2
Wѭӧng sӱ dөng UML (Unified Model Language)
4.1. Ngôn ngӳ mô hình thӕng nhҩt (UML)
4.2. Các biӇXÿӗ (Diagrams)
&KѭѫQJ4X\WUuQKSKkQWtFKYjWKLӃt kӃ
2
2
5.1. NӅn tҧng
4X\WUuQKYƭP{9zQJÿӡi cӫa triӇn khai phҫn mӅm
5.3. Quy trình vi mô: Quá trình phân tích và thiӃt kӃ
&KѭѫQJ0ӝt sӕ bài toán cө thӇ
4
3
1
6.1. HӋ thӕQJÿLӅu khiӇn: Quҧn lý hӋ thӕng giao thông
6.2. Ӭng dөng mҥQJOѭӟi: HӋ thӕng theo dõi kǤ nghӍ
NhiӋm vө cӫa sinh viên:
Tham dӵ các buәi hӑc lý thuyӃt và thӵc hành, làm các bài tұSÿѭӧc giao, làm các bài thi giӳa hӑc
phҫn và bài thi kӃt thúc hӑc phҫQWKHRÿ~QJTX\ÿӏnh.
Tài liӋu hӑc tұp:
1. Grady Booch, Robert A.Maksimchuk, Michael W.Engle, Bobbi J.Young, Ph.D, Jim

Conallen, Kelli A.Houston, Object-Oriented Analysis And Design with Application, Third
Edition.
2. Robert V. Stumpf, Lavette C. Teague, Object-Oriented Systems Analysis and Design with
UML, Pearson Prentice Hall
ĈRjQ9ăQ%DQPhân tích và thi͇t k͇ h͏ th͙QJK˱ͣQJÿ͙LW˱ͫng, Nhà xuҩt bҧQĈ+4*+j
Nӝi, 2006.


4

4. NguyӉQ9ăQ9ӷ, Phân tích và thi͇t k͇ các h͏ th͙ng thông tin hi͏Qÿ̩i, Nhà xuҩt bҧn Thӕng
Kê, Hà Nӝi, 2002.
Hình thӭc và tiêu chuҭQÿiQKJLiVLQKYLrQ:
- Hình thӭc thi: thi viӃt.
- Tiêu chuҭQÿiQKJLiVLQKYLrQFăQFӭ vào sӵ tham gia hӑc tұp cӫa sinh viên trong các buәi
hӑc lý thuyӃt và thӵc hành, kӃt quҧ làm các bài tұSÿѭӧc giao, kӃt quҧ cӫa các bài thi giӳa hӑc phҫn
và bài thi kӃt thúc hӑc phҫn.
7KDQJÿLӇm: 7KDQJÿLӇm chӳ A, B, C, D, F.
ĈLӇPÿiQKJLiKӑc phҫn: Z = 0,3X + 0,7Y.

Bài giҧng này là tài liӋu chính thӭc và thӕng nhҩt cӫa Bӝ môn HӋ thӕng Thông tin, Khoa Công
nghӋ 7K{QJWLQYjÿѭӧFGQJÿӇ giҧng dҥy cho sinh viên.

Ngày phê duyӋt:

7Uѭӣng Bӝ môn

/

/



5

&+ѬѪ1*,: 0Ð+Î1+ĈӔ,7ѬӦ1*

6͹SKiWWUL͋QFͯDP{KuQKÿ͙LW˱ͫQJ
Trong mөc này chúng ta khҧo sát sӵ phát triӇn cӫa các công cө ÿӇ giúp chúng ta hiӇu sӵ thành
lұp và các nét nәi bұt cӫa kӻ thuұW KѭӟQJ ÿӕL Wѭӧng. Trong quá trình phát triӇn công nghӋ phҫn
mӅm chúng ta có thӇ ÿӇ ý và nghiên cӭXWKHRKѭӟng sau:
- Phát triӇQFiFFKѭѫQJWUuQKQKӓ tӟLFiFFKѭѫQJWUuQKOӟn
- Sӵ phát triӇn cӫa các ngôn ngӳ lұp trình bұFFDRKѫQ
Hҫu hӃt tҩt cҧ FiFFKѭѫQJWUuQKSKҫn mӅPQJj\FjQJÿzLKӓi cao vào phӭc tҥSKѫQ&KtQKÿLӅu
Qj\ÿmWK~Fÿҭy viӋc nghiên cӭXWURQJOƭQKYӵc công nghӋ phҫn mӅPPjÿһc biӋt quan tâm tӟi sӵ
phân tích, trӯXWѭӧng và tә chӭc cho hӋ thӕQJĈLÿ{LYӟLÿLӅu này, viӋc phát triӇn các ngôn ngӳ lұp
WUuQKFNJQJÿmÿiSӭQJÿѭӧc phҫn nào vӅ giҧi quyӃt yêu cҫu phӭc tҥp cӫa hӋ thӕng.
:HQJHUÿmSKkQORҥi ra mӝt sӕ ngôn ngӳ lұp trình bұc cao phә biӃn và sҳp xӃp theo thӭ tӵ tùy
thuӝc và mӝt sӕ ÿһc tính cӫa tӯng loҥi ngôn ngӳ:
- ThӃ hӋ ngôn ngӳ thӭ nhҩt (1954 -195)
FORTRAN I

BiӇu thӭc toán hӑc

ALGOL 58

BiӇu thӭc toán hӑc

Flowmatic

BiӇu thӭc toán hӑc


IPL V

BiӇu thӭc toán hӑc

- ThӃ hӋ ngôn ngӳ thӭ hai (1959 ± 1961)
FORTRAN II

Các thӫ tөc con, tách riêng rӁ các
mô hình phӭc tҥp

ALGOL 60

Cҩu trúc khӕi, kiӇu dӳ liӋu

COBOL

Mô tҧ dӳ liӋu

Lisp

Con trӓ,

- ThӃ hӋ ngôn ngӳ thӭ ba (1962 ± 1970)
PL/1

FORTRAN + ALGOL + COBOL

ALGOL 68


KӃ thӯa nghiêm ngһt tӯ ALGOL 60

Pascal

KӃ thӯDÿѫQJLҧn tӯ ALGOL 60

Simula

Lӟp, trӯXWѭӧng dӳ liӋu

- *LDLÿRҥn (1970 -
7URQJJLDLÿRҥn này có rҩt nhiӅu ngôn ngӳ NKiFQKDXÿXӧc phát minh
ra. Tuy nhiên có mӝt sӕ ngôn ngӳ VDXÿmÿѭӧc sӱ dөng rӝng rãi:
C

HiӋu quҧ, có thӇ thӵFWKLÿXӧc

FORTRAN 77

Theo chuҭn ANSI


6

Pascal

KӃ thӯDÿѫQJLҧn tӯ ALGOL 60

Simula


Lӟp, trӯXWѭӧng dӳ liӋu

- *LDLÿRҥQKѭӟQJÿӕLWѭӧng (1980 ± 1990)
Smalltalk

Ngôn ngӳ KѭӟQJÿӕLWѭӧng

C++

Phát triӇn tӯ C và Simula

Ada83

MҥQKKѫQ3DVFDO

Eiffel

Phát triӇn tӯ Ada và Simula

- *LDL ÿRҥn Framework (1990 ± ngày nay): NhiӅu ngôn ngӳ mӟL ÿXӧc phát triӇn và yêu cҫu cҫn
phҧi tuân theo mӝt tiêu chuҭQQjRÿy'RÿyGүQÿӃn viӋc lұp trình theo các Framework..
Visual Basic

DӉ dàng phát triӇn các giao diӋQÿӗ
hӑa cho các ӭng dөng Windows

Java

KӃ thӯa tӯ Oak


Python

Ngôn ngӳ kӏch bҧQ KѭӟQJ ÿӕi
Wѭӧng

J2EE

DӵD WUrQ FiF )UDPHZRUN Fѫ Eҧn
cӫa Java

.NET

DӵDWUrQFiFÿӕLWѭӧng Framework
FѫEҧn cӫa Microsoft

Visual C#
Visual Basic .NET

Visual Basic cho Framework cӫa
Microsoft .NET

Bây giӡ chúng ta xem xét cҩu trúc cӫa mӛi thӃ hӋ ngôn ngӳ lұp trình. Trong hình 1-1, chúng ta
có thӇ thҩy kiӃn trúc cӫa các ngôn ngӳ lұp trình ӣ thӃ hӋ thӭ nhҩWYjÿҫu thӡi kì thӭ 2. VӅ kiӃn trúc,
chúng ÿѭӧc xây dӵng bӣi các khӕLFѫEҧn và các phҫQÿѭӧc liên kӃt vӟLQKDXQKѭWKӃ nào. Trong
hình này, chúng ta có thӇ thҩy rҵng các khӕLFѫEҧQÿӇ xây dӵng lên các ӭng dөQJOjFiFFKѭѫQJ
trình con.


7


Các ӭng dөQJÿѭӧc viӃt bӣi nhӳng ngôn ngӳ Qj\WK{QJWKѭӡng ÿѭӧc thiӃt kӃ vӟLFiFFKѭѫQJ
trình con và dӳ liӋu toàn cөF&iFPNJLWrQWUrQKuQKYӁ nói rҵQJFiFFKѭѫQJWUuQKSKө thuӝc vào các
kiӇu dӳ liӋu khác nhau. Trong suӕt quá trình thiӃt kӃ dӳ liӋu cӫa mӝWFKѭѫQJWUuQKFRQFyWKӇ tách
biӋt vӟi dӳ liӋu cӫa các chѭѫQJWUuQKFRQNKiF. Mӝt lӛi trong mӝt phҫn cӫDFKѭѫQJWUuQKFyWKӇ ҧnh
Kѭӣng tӟi toàn bӝ hӋ thӕng bӣi vì cҩu trúc dӳ liӋu toàn cөFÿѭӧc sӱ dөng cho tҩWFiFFiFFKѭѫQJ
trình con.
Khi chúng ta cҫn chӍnh sӱa mӝt hӋ thӕng lӟn, khó có thӇ duy trì tính toàn vҽn cӫa thiӃt kӃ gӕc.
KiӃn trúc cӫa ngôn ngӳ lұp trình ӣ cuӕLJLDLÿRҥQYjÿҫXJLDLÿRҥn 3
GiӳDQăPFXӕLFQJWKuFiFFKѭѫQJWUuQKFNJQJÿѭӧc công nhұn là trung gian giӳD³Yҩn
ÿӅ´YjPi\WtQK³&KѭѫQJWUuQKÿҫu tiên, giӡ ÿѭӧc gӑi là thӫ tөF´FiFFKѭѫQJWUuQKFRQÿѭӧFÿӅ
xuҩWWURQJJLDLÿRҥQQKѭQJQyYүQFKѭDÿѭӧFFRLQKѭOjPӝt abstraction ӣ thӡLÿLӇPÿy
6XESURJUDPVÿѭӧFÿiQKJLiQKѭOjPӝWKѭӟng tiӃp cұQÿӇ tách các chӭFQăQJFӫDFKѭѫQJWUuQK
Các subprogram có thӇ phөc vө QKѭOjPӝWNƭWKXұt tóm tҳt có 3 hê quҧ quan trӑng. Thӭ nhҩt,
các ngôn ngӳ lұSWUuQKÿѭӧc hӛ trӧ vӟi nhiӅu các truyӅn tham sӕ khác nhau. Thӭ hai, nӅn tҧng cӫa
lұp trình cҩu trúc là sҳp xӃp, bӕ WUtU}UjQJWK{QJTXDFiFFKѭѫQJWUuQKFRQ7Kӭ EDSKѭѫQJSKiS
cҩu trúc thӇ hiӋQÿѭӧFѭXÿLӇm, cung cҩSFiFÿӏQKKѭӟQJÿӇ các nhà thiӃt kӃ cӕ gҳng xây dӵng mӝt
hӋ thӕng phӭc tҥSWK{QJTXDFiFFKѭѫQJWUuQKQKӓ KѫQÿѭӧc coi là các khӕLFKѭѫQJWUuQKFѫEҧn.
KiӃn trúc lұSWUuQKWURQJJLDLÿRҥn này chӍ ra mӝWYjLÿLӅu không phù hӧp cӫa các ngôn ngӳ WUѭӟc
ÿy


8

KiӃn trúc ngôn ngӳ lұp trình ӣ cuӕLJLDLÿRҥQÿҫXJLDLÿRҥn 3
KiӃn trúc cӫa ngôn ngӳ lұp trình ӣ cuӕLJLDLÿRҥn thӭ 3
7URQJJLDLÿRҥn này, viӋc phân tích thiӃt kӃ FiFFKѭѫQJWUuQKPDQJWtQKTX\P{Oӟn ngày càng
nhiӅXYjÿzLKӓi nhiӅXÿӝi, nhiӅu nhóm phai tham gia cùng mӝt lúc, do vұy rҩt cҫn thiӃt phҧi chia
FKѭѫQJWUuQKUDWKjQKFiFSKҫQNKiFQKDX'RÿyKuQKWKjQKYLӋFFKLDFiFFKѭѫQJWUuQKUDWKjQK
các module nhӓ QKѭÿѭӧc hiӇn thӏ ӣ KuQKGѭӟLÿk\


KiӃn trúc ngôn ngӳ lұp trình cӫa cuӕLJLDLÿRҥn 3
KiӃn trúc cӫDÿӕLWѭӧQJFѫEҧn và ngôn ngӳ lұSWUuQKKѭѫQJÿӕLWѭӧng
TrӯXWѭӧng hóa dӳ liӋu là quan trӑQJÿӇ kiӇm soát sӵ phӭc tҥp cӫa dӳ liӋu.

1͉QW̫QJFͯDP{KuQKK˱ͣQJÿ͙LW˱ͫQJ
ThiӃt kӃ hӋ thӕQJ WKHR Kѭӟng cҩu trúc giúp nhӳng nhà lұp trình viên xây dӵng các hӋ thӕng
phӭc tҥp sӱ dөng thuұW WRiQQKѭOjFiFNKӕL Fѫ EҧQ7ѭѫQJWӵ, thiӃt kӃ hӋ thӕQJWKHRKѭӟQJÿӕi
WѭӧQJJL~SQJѭӡi lұSWUuQKYLrQNKDLWKiFÿѭӧc nhӳQJÿLӇm mҥnh cӫDÿӕLWѭӧQJFѫEҧn và ngôn ngӳ
lұSWUuQKKѭӟQJÿӕi tѭӧng, sӱ dөng lӟSYjÿӕLWѭӧQJQKѭOjFiFNKӕi xây dӵQJFѫEҧn.


9

Trên thӵc tӃP{KuQKÿӕLWѭӧQJÿmEӏ chi phӕi bәi mӝt sӕ tác nhân, không chӍ là ngôn ngӳ lұp
WUuQK KѭӟQJ ÿӕL Wѭӧng. Thӵc vұ\ QKѭ ÿm WKҧo luұn ӣ phҫQ WUѭӟc, nӅn tҧQJ P{ KuQK KѭӟQJ ÿӕi
Wѭӧng, P{ KuQKÿӕL WѭӧQJÿm FKӭng mình là mӝt khái niӋm thӕng nhҩt trong khoa hӑc máy tính,
không chӍ thích hӧp vӟi ngôn ngӳ lұp trình mà còn thích hӧp vӟi thiӃt kӃ giao diӋQQJѭӡLGQJFѫ
sӣ dӳ liӋu, và ngay cҧ vӟi kiӃn trúc cӫa máy tính. Nguyên nhân cӫa viӋFÿѭӧFѭDFKXӝng phә biӃn
ÿyOjKѭӟQJÿӕL WѭӧQJJL~S FK~QJWDÿӕi phó vӟi các kӃ thӯa phӭc tҥp trong nhiӅu loҥi hӋ thӕng
khác nhau.
Phân tích và thiӃt kӃ KѭӟQJÿӕLWѭӧQJWKHRÿyÿѭDUDVӵ phát triӇn tiên tiӃQKѫQ1yNK{QJSKi
vӥ các cҩu trúc cӫDFKѭѫQJWUuQK ÿmÿѭӧc thiӃt kӃ WUѭӟFÿy7X\QKLrQKҫu hӃt các lұp trình viên
NK{QJÿѭӧc huҩn luyӋn khҳt khe kӻ QăQJSKkQWtFKYjWKLӃt kӃ KѭӟQJÿӕLWѭӧng.

&iFSK̯QW͵FͯDP{KuQKÿ͙LW˱ͫQJ
Hҫu hӃt các lұp trình viên làm viӋc trên mӝt ngôn ngӳ và sӱ dөng chӍ mӝt phong cách lұp trình.
Hӑ lұp trình theo mô hình mүu cӫa ngôn ngӳ mà hӑ sӱ dөng.
Phong cách lұSWUuQKÿѭӧF[HPQKѭOjPӝt cách tә chӭFFKѭѫQJWUuQKGӵa trên mӝt sӕ các mô
hình cӫa lұp trình và ngôn ngӳ ÿmYLӃWUDFKѭѫQJWUuQKPӝt cách rõ ràng. Theo thӕng kê thì có mӝt
sӕ kiӇu lұSWUuQKVDXÿk\

+ѭӟng thӫ tөc

Các thuұt toán

+ѭӟQJÿӕLWѭӧng

Các lӟSYjÿӕLWѭӧng

+ѭӟng Logic

Các mөFÿtFK

+ѭӟng luұt

Các luұW,I«WKHQ

+ѭӟng ràng buӝc

Các quan hӋ bҩt biӃNK{QJÿәi.

Không có mӝt kiӇu lұp trình nào mà tӕt nhҩWÿӕi vӟi tҩt các các loҥi ӭng dөng. Ví dө: Lұp trình
WKHRKѭӟng thӫ tөc thì tӕWÿӕi vӟi viӋc thiӃt kӃ FiFFKѭѫQJWUuQKOLrQTXDQWӟi viӋFWtQKWRiQ«Tӯ
WUѭӟc tӟLQD\ÿmYjÿDQJWӗn tҥi nhiӅXSKѭѫQJSKiSÿѭӧc áp dөQJÿӇ phân tích thiӃt kӃ mӝt hӋ thӕng
thông tin. Mӝt trong nhӳQJSKѭѫQJSKiSÿyOjKѭӟng thӫ tөc, ÿѭӧc sӱ dөng trong viӋc giҧi quyӃt
các vҩQÿӅ cӫa hӋ thӕng hiӋn tҥi hoһc cho viӋc xây dӵng mӝt hӋ thӕng mӟi. Có nhiӅXSKѭѫQJSKiS
ÿѭӧc sӱ dөng cho viӋc thiӃt kӃ và phát triӇn hӋ thӕng thông tin bao gӗm: Systems Development
Life Cycle (SDLC), Rapid Application Development (RAD), Object-Oriented Analysis and Design.
3KѭѫQJ SKiS 6'/& ÿѭӧc sӱ dөng phә biӃn nhҩW ÿy Oj 6WUXFWXUHG 6\VWHP $QDO\VLV DQG 'HVLJQ
3KѭѫQJSKiSFҩu trúc cho phép nhà phân tích chia nhӓ hӋ thӕng phӭc tҥp ra thành các hӋ thӕng nhӓ
KѫQU}UjQJKѫQYjTXҧQOêFNJQJGӉ GjQJKѫQ

3KѭѫQJSKiS22$'FKӫ yӃXOjSKkQWtFKWKHRKѭӟQJÿӕLWѭӧQJKѫQOjKѭӟng thӫ tөFQKѭOj
SKѭѫQJSKiS66$'0ӝWÿӕLWѭӧng là mӝWQJѭӡLÿӏa ÿLӇm hay mӝt sӵ vұWÿѭӧc mô tҧ hay tӗn tҥi
trong hӋ thӕQJPjFyÿLӅu cҫn quan tâm:
-

&iLJuÿӇ phân biӋt, nhұn biӃWQy Ĉӏnh danh cӫa nó và toàn bӝ các thuӝc tính).


10

-

Quan hӋ vӟi cai gì (Quan hӋ cӫa nó vӟLFiFÿӕLWѭӧng khác).

-

Nó làm nhӳQJFiLJu &iFSKѭѫQg thӭc cӫa nó thӵc hiӋn vӟi CSDL).

3KkQWtFKKѭӟQJÿӕLWѭӧng là quá trình phát triӇn mӝWP{KuQKKѭӟQJÿӕLWѭӧng mà trong mô
KuQKQj\FiFÿӕLWѭӧQJEDQÿҫu biӇu diӉn các thӵc thӇ YjFiFSKѭѫQJWKӭc liên quan tӟi vҩQÿӅ cҫn
giҧi quyӃt.
ThiӃt kӃ KѭӟQJÿӕi Wѭӧng là quá trình phát triӇn mӝWP{KuQKKѭӟQJÿӕLWѭӧQJWURQJJLDLÿRҥn
này phҧL [iFÿӏQKÿѭӧc các yêu cҫu. Nói tóm lҥL WURQJ22$' FK~QJWDÿӅ cұp tӟi thuұt ngӳ ÿӕi
Wѭӧng nhiӅXKѫQOjFKӭFQăQJ
Phân tích và thiӃt kӃ hӋ thӕQJWKHRKѭӟng truyӅn thӕng
System development life Cycle (SDLC) hoһc Structured Systems Analysis and Design (SSAD)
là nӅn tҧng cho mӑi hoҥWÿӝng và nhiӋm vө cҫn thiӃWÿӇ hoàn thành viӋc phát triӇn mӝt hӋ thӕng
WK{QJWLQ3KѭѫQJSKiSQj\QKѭÿmÿӅ cұp ӣ phҫQWUѭӟFÿѭӧc gӑi là mô hình WKiFQѭӟc.
Các vҩQÿӅ FѫEҧn trong SSAD có thӇ ÿѭӧc tóm tҳWQKѭVDX
-


ĈLӅX ÿҫX WLrQ WURQJ 66$' ÿy Oj Vӵ SKkQ WtFK WKHR Kѭӟng tӯ trên xuӕQJ Gѭӟi. Ӣ ÿk\ KӋ
thӕQJÿѭӧc coi mӝt tәng thӇ EDQÿҫu. Chӫ yӃu viӋc phân tích ӣ JLDLÿRҥQQj\ÿӇ hiӇXÿѭӧc
nhӳQJÿһc tính cӫa hӋ thӕng, bӓ qua nhӳng phҫn nhӓ và chӍ tiӃt. Nhӳng phҫn này sӁ ÿѭӧc
phân tích sau.

-

TiӃp theo, phҥm vi cӫa hӋ thӕQJÿѭӧFÿӏQKQJKƭDOjQѫLKӋ thӕQJÿѭӧc triӇn khai. Nhà phân
tích tұp trung vào 2 mөFÿtFKFKtQK+Ӌ thӕng mӟi cҫn phҧi làm nhӳng gì và HӋ thӕng mӟi
OjPQyQKѭWKӃ nào?

-

3KѭѫQJSKiSQj\\rXFҫXQJѭӡi dùng theo sát tӯ ÿҫu tӟi khi dӵ án hoàn thành. Nhà phân
tích sӁ gһp gӥ vӟLQJѭӡi dùng và giҧi quyӃt vҩQÿӇ, xác nhұt nhӳng vҩQÿӅ PjQJѭӡi dùng
cҫn.

-

Hai vҩQÿӅ chính trong viӋc phát triӇn hӋ thӕQJWK{QJWLQÿyOjFiFTX\WUuQKYjGӳ liӋXÿѭӧc
xây dӵQJÿӝc lұp vӟLSKѭѫQJSKiSQj\&iFTX\WUuQKÿѭӧc xây dӵng bӣLFiFOѭӧFÿӗ luӗng
dӳ liӋuOѭӧFÿӗ này mô phӓng luӗng dӳ liӋu giӳa quy trình và dӳ liӋXOѭXWUӳ YjQyÿѭӧc
WKD\ÿәLQKѭWKӃ nào. Mô hình dӳ liӋXÿѭӧFÿӏQKQJKƭDEҵng viӋc quan hӋ giӳa các thӵc thӇ
(ERD), ERD mô tҧ dӳ liӋu (thӵc thӇ) và sӵ phӕi kӃt hӧp giӳa chúng.

Phân tích thiӃt kӃ hӋ thӕQJKѭӟQJÿӕLWѭӧng
3KѭѫQJSKiSWLӃp cұQWKHRKѭӟQJÿӕL WѭӧQJÿӇ phát triӇn mӝt hӋ thӕng xem hӋ thӕng QKѭOj
mӝt tұSFiFÿӕLWѭӧQJWѭѫQJWiFYӟi nhau, làm viӋFFQJQKDXÿӇ hoàn thành nhiӋm vө. Không có
sӵ tách biӋt giӳDTX\WUuQKYjFKѭѫQJWUuQK.K{QJFyVӵ tách biӋt giӳa thӵc thӇ dӳ liӋu và tӋp tin.

MӝWÿӕLWѭӧng là mӝt vҩQÿӅ trong hӋ thӕng máy tính. PKѭѫQJSKiS22$'FyWKӇ chia ra làm 2
OƭQKYӵc chính:


11

-

3KkQWtFKKѭӟQJÿӕLWѭӧQJĈLӅu này liên quan tӟi phát triӇQP{KuQKKѭӟQJÿӕLWѭӧng cӫa
ӭng dөQJ ĈLӅX Qj\ [iF ÿӏQK ÿӕL Wѭӧng biӇu diӉn các thӵc thӇ và quan hӋ giӳD FiF ÿӕi
WѭӧQJYjSKѭѫQJSKiSFҫn thiӃWÿӇ giҧi quyӃt vҩQÿӅ.

-

ThiӃt kӃ KѭӟQJÿӕLWѭӧng: ĈLӅu này liên quan tӟi phát triӇQP{KuQKKѭӟQJÿӕLWѭӧng cӫa hӋ
thӕng cҫn thiӃWÿӇ thӵc hiӋn các yêu cҫu. Các nhà phân tích và lұp trình phҧLQJKƭWKXұt ngӳ
ÿӕLWѭӧng nhiӅXKѫQOjFKӭFQăQJ

0{KuQKÿӕi Wѭӧng dӵa trên các yêu tӕ FѫEҧn bao gӗm: abstraction, encapsulation, modularity,
KLHUDUFK\«0өc tiêu tұp trung ӫDP{KuQKÿӕLWѭӧQJOjSKkQWtFKÿӕLWѭӧng. Mӝt hӋ thӕQJKѭӟng
ÿӕLWѭӧng sӁ có mӝt sӕ ÿӕLWѭӧng, mӛLÿӕLWѭӧng này sӁ kӃt hӧp vӟLFiFÿӕLWѭӧng NKiFÿӇ hoàn
thành mӝt nhiӋm vө.

%jLW̵S
1) Trình bày sӵ phát triӇn cӫa các mô hình lұp trình?
2) Trình bày nӅn tҧng cӫDP{KuQKÿӕLWѭӧng?
3) Các thành phҫn cӫDP{KuQKÿӕLWѭӧng?


12


&+ѬѪ1*,,: /Ӟ39¬ĈӔ,7ѬӦ1*

&˯E̫QY͉ÿ͙LW˱ͫQJ
Trong khóa hӑF Qj\ QKѭQJ FK~QJ WD ÿm ÿӅ cұp tӯ FKѭѫQJ WUѭӟF ÿӕi vӟi sӱ dөng OOAD thì
QJѭӡi phân tích và lұp trình sӱ dөng thuұt ngӳ ÿӕLWѭӧng rҩt rҩt nhiӅu. Vұy ta tӵ hӓLÿӕLWѭӧng là
gì?
ĈӕL Wѭӧng là mӝW WUѭӡng hӧp cӫa mӝt sӵ viӋc có kiӇu cө thӇ. Chúng ta lҩy mӝt ví dө vӅ ÿӕi
tѭӧng là An, mӝWVLQKYLrQWUѭӡQJĈҥi hӑc Hàng hҧi. An là mӝWWUѭӡng hӧp trong tҩt cҧ các sinh
viên cӫDWUѭӡQJĈҥi hӑc Hàng hҧi.
&K~QJWDFNJQJFyWKӇ QyLÿӕLWѭӧQJOjFiLJuÿyPjFK~QJWDPXӕn lҩy thông tin vӅ chúng. Ví
dө, tôi muӕn quҧn lý các khóa hӑc khác nhau tҥLWUѭӡQJĈҥi hӑc Hàng hҧL7KHRÿyW{LSKҧi tҥo các
ÿӕLWѭӧng mà có thӇ OѭXWUӳ thông tin vӅ các khóa hӑFQj\ÿӇ chúng ta có thӇ theo dõi hay lҩy thông
tin vӅ các khóa hӑc khác nhau.
1KѭYұy, mӝWÿӕLWѭӧng có thӇ là tӗn tҥi ӣ dҥng vұt chҩWQKѭlà mӝt sinh viên, mӝt khóa hӑc,
hay mӝt quyӇn sách hoһc tӗn tҥi ӣ dҥQJWUuXWѭӧQJQKѭOjFҧP[~F«

Trong UML chúng ta xây dӵQJ ÿӕL Wѭӧng bҵng viӋc sӱ dөng mӝt hình chӳ nhұt vӟi 2 phҫn.
Phҫn trên chӭa tên cӫDÿӕLWѭӧng và tên cӫa lӟSPjÿӕLWѭӧng thuӝc vào lӟSÿy&~SKiSFKXҭn là:
WrQÿӕLWѭӧng: tên lӟp. PhҫQGѭӟi liӋt kê các thuӝc tính cӫDÿӕLWѭӧQJÿy

0͙LTXDQK͏JLͷDFiFÿ͙LW˱ͫQJ
Toàn bӝ hӋ thӕQJÿѭӧc xây dӵng tӯ rҩt nhiӅu lӟSYjÿӕLWѭӧng. HoҥWÿӝng cӫa hӋ thӕng thu ÿѭӧc
thông qua sӵ phӕi hӧp cӫDFiFÿӕi Wѭӧng trong hӋ thӕng. Các mӕi quan hӋ cung cҩSFiFÿѭӡng dүn
ÿӇ FiFÿӕLWѭӧQJWѭѫQJ tác vӟi nhau. Có hai loҥi quan hӋ giӳDFiFÿӕi Wѭӧng là :
- liên kӃt(link)
- kӃt tұp (aggregation)
Mӕi quan hӋ liên kӃt (link)



13

Mӕi quan hӋ liên kӃt là sӵ kӃt nӕi vұt lý hoһc logic giӳa các ÿӕLWѭӧng. MӝWÿӕLWѭӧng phӕi hӧp vӟi
FiFÿӕLWѭӧng khác thông qua các liên kӃt cӫa nó vӟLFiFÿӕLWѭӧng này. Nói mӝt cách khác, mӝt
liên kӃt biӇu diӉn mӝt liên hӧp (association) [iF ÿӏQK WURQJ ÿy PӝW ÿӕi Wѭӧng(client) sӱ dөng
nhӳng dӏch vө cӫDÿӕLWѭӧng khác (supplier).
7K{QJ WKѭӡQJ WK{QJ ÿLӋS ÿѭӧc truyӅn giӳa KDL ÿӕL Wѭӧng là mӝt chiӅX ÿ{L NKL Fy WKӇ là cҧ hai
chiӅX&iFWK{QJÿLӋSÿѭӧc khӣi tҥo ӣ SKtDFOLHQWVDXÿyÿѭӧFÿѭDWӟi supplier, còn dӳ liӋu có thӇ
dӏch chuyӇn theo cҧ hai chiӅu trên liên kӃt.
Vӟi mӛi liên kӃt, mӝWÿӕLWѭӧng có thӇ có mӝt trong ba vai trò:
 Actor: MӝWÿӕLWѭӧng có thӇ hoҥWÿӝQJWUrQFiFÿӕLWѭӧng khác chӭ không bӏ thao tác bӣi
FiFÿӕi Wѭӧng khác.
 Server: MӝWÿӕLWѭӧng không bao giӡ hoҥWÿӝng trên các ÿӕLWѭӧng khác; nó chӍ có thӇ bӏ
thao tác bӣLFiFÿӕLWѭӧng khác.
 $JHQW/jÿӕLWѭӧng vӯa có thӇ hoҥWÿӝQJWUrQFiFÿӕLWѭӧng khác, lҥi vӯa có thӇ bӏ FiFÿӕi
Wѭӧng khác thao tác.
Mӕi quan hӋ kӃt tұp (aggregation)
Mӕi quan hӋ kӃt tұp chӍ là mӝt dҥQJÿһc biӋt cӫa mӕi quan hӋ liên hӧSWURQJÿyPӝWÿӕLWѭӧng là sӵ
tәng hӧp cӫDFiFÿӕLWѭӧng thành phҫn.
Ví dө:
Mӝt chiӃc xe ô tô có 4 bánh, mӝt cҫn lái, mӝt hӝp sӕ, mӝWÿӝQJFѫ

2.3&˯E̫QY͉OͣS
Lӟp là mӝt sӵ WUuXWѭӧQJWURQJP{KuQKKѭӟQJÿӕLWѭӧng và trong ngôn ngӳ KѭӟQJÿӕLWѭѫQJ
Mӝt lӟp bao gӗm cҩu trúc và hành vi. Các lӟp có thӇ ÿӏQKQJKƭDWK{QJTXDFiFOӟp khác bҵng viӋc
sӱ dөng tính chҩt kӃ thӯa.
Mӝt lӟp là mô tҧ cho mӝt tұSÿӕLWѭӧng có thuӝc tính và hoҥWÿӝng giӕng nhau. Nó phөc vө QKѭ
là mӝt mүu khi mà tҥo mӝWÿӕLWѭӧng mӟi. MөFÿtFKFӫDQyOjÿӏQKQJKƭDPӝt tұp các thuӝc tính và
thao tác mà mô tҧ ÿҫ\ÿӫ cҩu trúc và hành vi cӫDFiFÿӕLWѭӧQJ7URQJFiFKQyLNKiFWKuÿӕLWѭӧng
là mӝWWUѭӡng hӧp cө thӇ cӫa lӟp. Nó luôn luôn bҳt nguӗn tӯ lӟp. Nó có cҩu trúc và hành vi tùy theo

sӵ mô tҧ trong lӟp.
Trong UML mӝt lӟSÿѭӧc biӇu diӉQQKѭOjPӝt hình chӳ nhұt vӟi 3 phҫn riêng biӋWÿѭӧc phân
tách bӣi dòng kҿ ngang. Phҫn trên cùng thӇ hiên tên lӟp, phҫn giӳDÿӏQKQJKƭDWҩt cҧ các thuӝc tính
cӫa lӟp, phҫn cuӕi cùng chӭDFiFÿӏQKQJKƭDWKDRWiF


14

Lӟp là mӝt loҥLÿӕLWѭӧQJÿһc biӋt. Nó là mӝt tұp hӧSFiFÿӕLWѭӧQJÿmÿѭӧc tҥo1yÿѭӧc dùng
ÿӇ tҥo và huӹ FiFÿӕLWѭӧng thuӝc vӅ Qy1yFNJQJFyWKӇ ÿѭӧFGQJÿӇ OѭXGӳ liӋu và cung cҩp cho
các dӏnh vө trong cùng nhóm. Mӝt ӭng dөng có thӇ truy cұp các dӏch vө cӫa nó thông qua tên lӟp.

&iFSKѭѫQJSKiSÿѭӧc sӱ dөQJÿӇ [iFÿӏnh lӟp
Trong thӵc tӃ có rҩt nhiӅXSKѭѫQJSKiSFyWKӇ [iFÿӏQKÿѭӧc lӟp trong mӝt hӋ thӕng. Tuy nhiên
ӣ ÿk\W{LÿӅ cұp tӟLSKѭѫQJSKiSKD\ÿѭӧc dùng nhҩt:
-

;iFÿӏnh các danh tӯ.

-

;iFÿӏnh lӟp dӵa trên khái niӋm vӅ danh sách lӟp.


15

2.40͙LTXDQK͏JLͷDFiFOͣS
Quan hӋ giӳa các lӟp có 4 loҥi:
 Liên hӋ ( Association)
 Khái quát hoá (Generalization)

 Phө thuӝc (Dependency)
 Nâng cҩp (Refinement)
M͡t liên h͏ là mӝt sӕ nӕi kӃt giӳa các lӟSFNJQJFyQJKƭDOjVӵ nӕi kӃt giӳDFiFÿӕLWѭӧng cӫa các
lӟp này. Trong UML, 1 liên hӋ ÿѭӧFÿӏQKQJKƭDOjPӝt mӕi quan hӋ mô tҧ mӝt tұp hӧp các nӕi kӃt
trong khi nӕi kӃWÿѭӧFÿӏQKQJKƭDOjPӝt sӵ liên quan vӅ ngӳ nghƭa giӳa mӝWQKyPFiFÿӕLWѭӧng.
Khái quát hoá là mӕi quan hӋ giӳa mӝt yӃu tӕ PDQJWtQKNKiLTXiWFDRKѫQYjPӝt yӃu tӕ chuyên
biӋWKѫQ&yWKӇ chӭa chӍ các thông tin bә sung mӝt thӵc thӇ (mӝWÿӕLWѭӧng là mӝt thӵc thӇ cӫa mӝt
lӟp) cӫa yӃu tӕ mang tính chuyên biӋWKѫQFyWKӇ ÿѭӧc sӱ dөng ӣ bҩt cӭ QѫLQjRPjÿӕLWѭӧng mang
WtQKNKiLTXiWKRiKѫQÿѭӧc phép.
S͹ phͭ thu͡c là mӝt quan hӋ giӳa các yӃu tӕ gӗm mӝt yӃu tӕ PDQJWtQKÿӝc lұp và mӝt yӃu tӕ mang
tính phө thuӝc mӝt sӵ WKD\ÿәi trong yӃu tӕ ÿӝc lұp sӁ ҧnh KѭӣQJÿӃn yӃu tӕ phө thuӝc.
M͡t s͹ nâng c̭p là mӝt quan hӋ giӳa hai lӡi mô tҧ cӫa cùng mӝt sӵ vұWQKѭQJӣ nhӳng mӭFÿӝ
trӯXWѭӧng hoá khác nhau.

6͹W˱˯QJWiFO̳QQKDXFͯDOͣSYjÿ͙LW˱ͫQJ
LӟSYjÿӕLWѭӧng, mһc dù có mӕi liên hӋ WѭѫQJӭng lүQQKDXQKѭQg bҧn chҩt lҥi khác nhau:
 Lӟp là sӵ trӯXWѭӧng hoá cӫa các ÿӕLWѭӧng. Trong khi ÿy ÿӕLWѭӧng là mӝt thӇ hiӋn cӫa lӟp.
 ĈӕLWѭӧng là mӝt thӵc thӇ cө thӇ, có thӵc, tӗn tҥi trong hӋ thӕQJ7URQJNKLÿyOӟp là mӝt
khái niӋm trӯXWѭӧng, chӍ tӗn tҥi ӣ dҥng khái niӋPÿӇ mô tҧ FiFÿһc tính chung cӫa mӝt sӕ
ÿӕi Wѭӧng.
 Tҩt cҧ các ÿӕLWѭӧng thuӝc vӅ cùng mӝt lӟp có cùng các thuӝFWtQKYjFiFSKѭѫQJWKӭc.
 Mӝt lӟp là mӝt nguyên mүu cӫa mӝt ÿӕLWѭӧng. Nó xác ÿӏnh các hành ÿӝng khҧ thi và các
thuӝc tính cҫn thiӃt cho mӝt nhóm các ÿӕLWѭӧng cө thӇ.
Nói chung, lӟp là khái niӋm tӗn tҥi khi phát triӇn hӋ thӕng, mang tính khái niӋm, trӯXWѭӧng. Trong
khi ÿy ÿӕLWѭӧng là mӝt thӵc thӇ cө thӇ tӗn tҥi khi hӋ thӕng ÿDQJKRҥt ÿӝng.

%jLW̵S
1) ĈӕLWѭӧng là gì? Mӕi quan hӋ giӳDFiFÿӕLWѭӧng?
2) Lӟp là gì? Mӕi quan hӋ giӳa các lӟp?
3) Trình bày mӕi quan hӋ giӳa LӟSYjĈӕLWѭӧng?



16

&+ѬѪ1*,,,: 6Ӵ3+Æ1/2Ҥ,
Sӵ phân loҥL ÿѭӧc thӵc hiӋn dӵa trên nhӳng gì hiӇu biӃt cӫa chúng ta. Trong thiӃt kӃ KѭӟQJÿӕi
Wѭӧng, viӋc phân loҥLFiFÿӕLWѭӧng cùng vӟi FiFWѭѫQJWiFFӫa nó trong hӋ thӕng là vô cùng quan
trӑng. NӃXQKѭFK~QJWDSKkQORҥLNK{QJÿ~QJWKuKӋ thӕng chúng ta sӁ cӗng kӅnh, hoҥWÿӝng không
hiӋu quҧNKyNKăQWURQJYLӋc triӇn khai và lұp trình. Tuy nhiên nӃu chúng ta có cái nhìn tӕt và viӋc
phân loҥLFiFÿӕLWѭӧng, xây dӵng các lӟp chính xác sӁ dүn tӟi hӋ thӕng chúng ta thiӃt kӃ rõ ràng, và
triӇQNKDLFNJQJGӉ KѫQQKDQKKѫQWUiQKÿѭӧc viӋc trùng lһp công viӋc.
Không có mӝWTX\ÿӏQKFKXQJQjRÿӇ WuPUDÿѭӧc sӵ phân loҥi tӕt nhҩt, tҩt cҧ ÿӅu phҧi dӵa trên
kinh nghiӋm và yêu cҫu cӫa hӋ thӕng hiӋn tҥi.

7̯PTXDQWU͕QJFͯDYL͏FSKkQOR̩LKͫSOê
ViӋF[iFÿӏnh các lӟSYjFiFÿӕLWѭӧng là mӝt trong nhӳng phҫQÿҫy thӱ thách cӫa phân tích và
thiӃt kӃ KѭӟQJÿӕLWѭӧng. Kinh nghiӋm cho thҩy rҵQJ[iFÿӏnh bao gӗm cҧ phát hiӋn và sáng tҥo.
Thông qua phát hiӋn, chúng ta có thӇ nhұQUDÿѭӧc nhӳng lӟSWUuXWѭӧQJYjNƭWKXұt mà tҥo nên vҩn
ÿӅ. Thông qua sáng tҥRFK~QJWDÿѭDUDQKӳQJNKiLTXiWWUuXWѭӧQJFNJQJQKѭFiFNƭWKXұt mӟi xác
ÿӏQKFiFÿӕLWѭӧng cӝng tiFQKѭWKӃ nào.
Cuӕi cùng, phát hiӋn và sáng tҥo là các vҩQÿӅ trong phân loҥi và viӋc phân loҥLOjÿLWuPQKӳng
vҩQÿӅ WѭѫQJWӵ nhau. Khi chúng ta phân loҥLFK~QJWDWuPÿӃn nhӳng nhóm sӵ viӋc mà có chung
mӝt cҩu trúc hoһc các hành vi chung, phә biӃn.
Phân loҥL JL~S FK~QJWD FiFK[iFÿӏnh nhӳng lӟp tәng quát, và sӵ phân cҩp giӳa các lӟp vӟi
nhau. Bҵng viӋc nhұQUDFiFWѭѫQJWiFFKXQJJLӳDFiFÿӕLWѭӧQJFK~QJWDÿѭDUDFiFNƭWKXұWÿѭӧc
coi là quyӃWÿӏnh trong viӋc thӵc hiӋn. ViӋc phân loҥLFNJQJKѭӟng dүn chúng ta trong viӋFÿѭDUD
nhӳng quyӃWÿӏnh vӅ module hóa. Chúng ta có thӇ chӑQYjÿһt toàn bӝ các lӟSYjÿӕLWѭӧng trong
cùng mӝt module hoһc trong các module khác nhau, tùy thuӝc vào sӵ giӕng nhau mà chúng ta tìm
thҩy giӳa các lӟSYjÿӕLWѭӧQJÿy3Kkn loҥLFNJQJÿyQJYDLWUzWURQJYLӋc chӍ ÿӏnh các quy trình xӱ
lý. Chúng ta có thӇ ÿһt toàn bӝ các quy trình cùng vӟi nhau trong mӝt bӝ xӱ lý hoһc ӣ các bӝ xӱ lý

khác nhau, tùy thuӝc vào viӋFÿyQJJyLFKӭFQăQJKRһFOjÿӝ tin cұy.

;iFÿ͓QKFiFOͣSYjÿ͙LW˱ͫQJ
VҩQÿӅ phân loҥLÿmÿѭӧc vô sӕ các nhà triӃt hӑc, ngôn ngӳ hӑc, các nhà khoa hӑc và cҧ các nhà
toán hӑFÿһc biӋt quan tâm. Chúng ta có thӇ tham khҧo nhӳng kinh nghiӋm cӫa hӑ ӣ WURQJOƭQKYӵc
phân loҥi này vào viӋc thiӃt kӃ KѭӟQJÿӕLWѭӧng nhӡ sӵ phân loҥi.
3KѭѫQJSKiSWLӃp cұn cә ÿLӇn và hiӋQÿҥi
&yKѭӟng tiӃp cұn phә biӃQWKѭӡQJÿѭӧFGQJÿӇ phân loҥi:


17

-

Loҥi cә ÿLӇn.

-

Nhóm khái niӋm.

-

Lý thuyӃt nguyên mүu

Loҥi cә ÿLӇn
7URQJKѭӟng tiӃp cұn cә ÿLӇQÿӇ phân loҥL´7ҩt cҧ các thӵc thӇ mà có mӝt thuӝc tính hoһc mӝt
tұp các thuӝc tính giӕng nhau tҥo lên mӝt loҥL1KѭOjFiFWKXӝc tính cҫn thiӃWYjÿӫ ÿӇ ÿӏQKQJKƭD
mӝt loҥL´
Nhóm khái niӋm.
VӟLKѭӟng tiӃp cұn này thì các lӟSÿѭӧc tҥo ra do viӋc xây dӵng các khái niӋm mô tҧ ÿҫu tiên

cӫa lӟp này và VDXÿySKkQORҥi các thӵc thӇ theo các mô tҧ.
Lý thuyӃt mүu
Mӝt lӟp cӫDFiFÿӕLWѭӧQJÿѭӧc miêu tҧ bӣi mӝWÿӕLWѭӧng nguyên mүu, và mӝWÿӕLWѭӧQJÿѭӧc
FRLQKѭOjPӝt thành viên cӫa lӟSÿyQӃu và chӍ nӃXQyQyWѭѫQJWӵ vӟi các mүu này.

%jLW̵S
1) Sӵ phân loҥi là gì? Tҫm quan trӑng cӫa sӵ phân loҥi?
2) 7UuQKEj\SKѭѫQJSKiS[iFÿӏnh lӟSYjÿӕLWѭӧng?


18

&+ѬѪ1*,9: 3+Æ17Ë&+9¬7+,ӂ7.ӂ+ѬӞ1*ĈӔ,7ѬӦ1*
6Ӱ'Ө1*80/

1J{QQJͷP{KuQKWK͙QJQK̭W UML
UML là ngôn ngӳ chuҭn cho viӋFTX\ÿӏnh các tiêu chuҭn, hình dung, xây dӵng, và tài liӋu cӫa
mӝt hӋ thӕng phҫn mӅm.
UML là viӃt tҳt cӫa Unified Modeling Language. UML hoàn toàn khác vӟi các ngôn ngӳ lұp
WUuQKKѭӟQJÿӕLWѭӧQJQKѭ&MDYD«
80/ÿѭӧc sӱ dөng cho viӋc tҥo các bҧn kӃ hoҥch cho viӋc phát triӇn phҫn mӅm.
UML không phҧi là ngôn ngӳ lұSWUuQKQKѭQJFiFF{QJFө có thӇ ÿѭӧFGQJÿӇ sinh ra mã lӋnh
trong các ngôn ngӳ khác nhau. UML có mӕi liên quan mұt thiӃt vӟi phân tích và thiӃt kӃ hӋ thӕng
KѭӟQJÿӕLWѭӧng. Vì vұy trong bài giҧng này tôi sӱ dөQJ80/QKѭOjPӝt công cө chính trong viӋc
thiӃt kӃ và giҧng dҥy.
4.1.1 Các khӕLFѫEҧn trong UML
80/ÿyQJYDL WUzTXDQWUӑng trong viӋc tҥo nên mô hình khái niӋm. Mô hình khái niӋm cӫa
UML có thӇ ÿѭӧc tҥo bӣi 3 phҫn tӯ chính sau:
-


Các khӕi UML

-

Các luұt, nguyên tҳFÿӇ kӃt nӕi giӳa các khӕi

-

Kӻ thuұt chung cӫa UML.

Các khӕi cӫa UML có thӇ ÿѭӧFÿӏQKQJKƭDOj
-

Things.

-

Relationships.

-

Diagrams.

4.1.2. Things
Things là các khӕi quan trӑng cӫa UML. Things có thӇ là: Structural, Behavioral, Grouping và
Annotational.
Structural things: 6WUXFWXUDOWKLQJVÿӏQKQJKƭDSKҫn cӕ ÿӏnh cӫa mô hình. Chúng thӇ hiӋn các
phҫn tӯ vұt lý và khái niӋm. Có mӝt sӕ Strutural things sau:
-


Class: biӇu diӉn cho mӝt tұSFiFÿӕi tuwngj có cùng trách nhiӋm, nhiӋm vө.
x

Phҫn trên cùng biӉu diӉn tên lӟp.

x

Phҫn thӭ 2 biӇu diӉn các thuӝc tính cӫa lӟp.

x

Phҫn thӭ ÿѭӧFGQJÿӇ mô tҧ các thao tác có thӇ ÿѭӧc thӵc hiӋn.

x

Phҫn thӭ 4 là phҫn lӵa chӑQGQJÿӇ hiӇn thӏ thêm các thành phҫn phө thêm


19

-

,QWHUIDFHÿӏQKQJKƭDPӝt tұSFiFWKDRWiFPjÿһc tҧ rõ trách nhiӋm cӫa hӋ thӕng. Ĉѭӧc
biӇu diӉn bҵng mӝWKuQKWUzQErQGѭӟi ghi tên cӫa giao diӋQĈѭӧFGQJÿӇ mô tҧ các
chӭFQăQJP{Wҧ cái chung nhҩt. Trong giao diӋQFKѭDFyYLӃt mã lӋQKÿӇ thӵc thi.

-

&ROODERUDWLRQ ÿӏQK QJKƭD Vӵ WѭѫQJ WiF Oүn nhau giӳa các phҫn tӱ. CollDERUDWLRQ ÿѭӧc
biӇu diӉn bҵQJKuQKHFOLSVQpWÿӭt. Tên cӫDQyÿѭӧc ghi ӣ bên trong hình.


-

Use case: biӇu diӉn mӝt tұp các hoҥWÿӝQJÿѭӧc thӵc hiӋn bӣi mӝt hӋ thӕng cho mӝt mөc
ÿtFK [iF ÿӏnh. 8VH FDVH ÿѭӧc biӇu diӉn bҵng hình eclip liӅn nét vӟL WrQ ÿѭӧc ghi bên
trong hình.


20

-

Actor có thӇ ÿѭӧFÿӏQKQJKƭDQKѭOjFiFWKӵc thӇ bên trong hoһFErQQJRjLWѭѫQJWiFYӟi
hӋ thӕng.

-

Kí hiӋu bҳWÿҫXÿѭӧFGQJÿӇ khӣi tҥo, bҳWÿҫu mӝt quy trình xӱ lý.

-

Kí hiӋu kӃWWK~FĈѭӧFGQJÿӇ báo hiӋu kӃt thúc mӝt quá trình xӱ lý.

-

Active class: có cҩu tҥo giӕng vӟL FODVV QKѭQJ ÿѭӡng viӅQ ErQ QJRjL ÿұP KѫQ Ĉѭӧc
GQJÿӇ miêu tҧ KjQKÿӝng hiӋn hành cӫa hӋ thӕng.

-


Component: Mô tҧ phҫn vұt lý cӫa hӋ thӕng. Tên cӫDQyÿѭӧc ghi ӣ bên trong hình và có
thӇ add thêm các phҫn tӱ khác nӃu cҫn thiӃt.


21

-

Node: mô tҧ phҫn tӱ vұt lý mà tӗn tҥi trong thӡi gian chҥ\FKѭѫQJWUuQK 1RGHÿѭӧc biӇu
diӉn bӣi hình vuông vӟLWrQÿѭӧc ghi ӣ trong hình.

Behavioral things: Behavioral thing gӗm có các phҫQÿӝng cӫDP{KuQK80/7KHRÿyFyPӝt
sӕ loҥi behavioral things sau:
-

,QWHUDFWLRQ ÿѭӧF ÿӏQK QJKƭD QKѭ Oj Pӝt hoҥW ÿӝng bao gӗm mӝt nhóm các thông
ÿLӋSÿѭӧc chuyӇn giӳa các phҫn tӱ ÿӇ hoàn thành mӝt nhiӋm vө rõ ràng, riêng biӋt.

-

6WDWHPDFKLQH6WDWHPDFKLQHÿӏQKQJKƭDPӝt chuӛi các trҥng thái mà mӝt ÿӕLWѭӧng
phҧi trҧi qua trong viӋFÿiSӭng sӵ kiӋn. Các sӵ kiӋn là nhӳng tác nhân bên ngoài
chӏu trách nhiӋPWKD\ÿәi.

Grouping things: có thӇ ÿѭӧFÿӏQKQJKƭDQKѭOjPӝWNƭWKXұWÿӇ nhóm các phҫn tӱ cӫa mô hình
UML lҥi vӟi nhau. ChӍ có duy nhҩt mӝt loҥi Grouping thing: Package.
Annotation things: có thӇ ÿѭӧFÿӏQKQJKƭDQKѭOjPӝWNƭWKXұWÿӇ ÿiQKGҩu, chú thích, mô tҧ
cӫa cuác phҫn tӱ UML. Note là Annotational thing duy nhҩt.
4.1.3. Quan hӋ
Quan hӋ giӳa các phҫn tӱ FNJQJOjPӝt khӕi quan trӑng cӫa UML. Nó cho thҩy các phҫn tӱ ÿѭӧc

liên kӃt vӟLQKDXQKѭWKӃ nào và sӵ kӃt hӧp này mô tҧ chӭFQăQJFӫDFKѭѫQJWUuQK
Có 4 loҥi quan hӋ ÿѭӧFÿӅ cұSVDXÿk\
-

Dependency: là loҥi quan hӋ giӳa 2 sӵ viӋc mà khi có mӝt phҫn tӱ WKD\ÿәLWKuFNJQJ
ҧQKKѭӣng tӟi mӝt phҫn tӱ khác.


22

-

Association là liên kӃWFѫEҧQÿѭӧFGQJÿӇ kӃt nӕi giӳa các phҫn tӱ trong mô hình
80/1yFNJQJP{Wҧ FiFÿӕLWѭӧng liên kӃt vӟLQKDXQKѭWKӃ nào.

-

Generalization: có thӇ ÿѭӧFÿӏQKQJKƭDQKѭOjPӝt quan hӋ mà kӃt nӕi mӝt phҫn tӱ
chuyên dөng vӟi nhӳng phҫn tӱ chung. Nó mô tҧ quan hӋ kӃ thӯa cӫDFiFÿӕLWѭӧng.

-

Realization: có thӇ ÿѭӧFÿӏQKQJKƭDQKѭOjPӝt quan hӋ WURQJÿySKҫn tӱ ÿѭӧc liên
kӃt vӟi nhau. Mӝt phҫn tӱ mô tҧ mӝt sӕ trách nhiӋPPjFKѭDÿѭӧc thӵc thi và môt
phҫn tӱ khác thì thӵc thi chúng. KiӇu quan hӋ này tӗn tҥLWURQJWUѭӡng hӧp interface.

4.1.4. UML Diagram
Tҩt cҧ các phҫn tӱ, quan hӋ giӳa chúng tҥo nên mӝt biӇXÿӗ UML hoàn chӍQKYjOѭӧFÿӗ
này biӇu diӉn mӝt hӋ thӕng.
BiӇXÿӗ UML là 1 phҫn quan trong trong toàn bӝ quy trình. UML bao gӗPOѭӧFÿӗ sau:

-

Class diagram.

-

Object diagram.

-

Use case diagram.

-

Sequence diagram.

-

Collaboration diagram.

-

Activity diagram.

-

Statechart diagram.

-


Deployment diagram.

-

Component diagram.

4.1.5. KiӃn trúc UML
Bҩt kǤ hӋ thӕQJQjRFNJQJÿѭӧc sӱ dөng bӣi nhӳQJQJѭӡLGQJNKiFQKDX1Jѭӡi dùng có thӇ là
lұp trình viên, phát triӇn, kiӇm thӱ QKj ÿҫX WѭQKj SKkQ WtFK«9u Yұ\ WUѭӟc khi thiӃt kӃ mӝt hӋ
thӕQJÿѭӧc hình thành vӟi các phӕi cҧQKNKiFQKDXWURQJVX\QJKƭFӫa tӯQJQJѭӡi dùng.
80/ÿyQJYDLWUzTXan trӑng trong viӋc mô tҧ các cách nhìn nhұn khác nhau cӫa hӋ thӕng. Có
mӝt sӕ cách nhìn nhұQVDXÿk\


23

-

Design cӫa mӝt hӋ thӕng bao gӗm các lӟp, giao diӋn và các cӝng tác. UML cung cҩp
biӇXÿӗ lӟp, biӇXÿӗ ÿӕLWѭӟQJÿӇ hӛ trӧ cách thiӃt kӃ này.

-

Implementation ÿӏQK QJKƭD FiF WKjQK SKҫQ ÿѭӧc sҳp xӃp lҥi vӟL QKDX ÿӇ tҥo nên
mӝt hӋ thӕng vұt lý hoàn chӍnh. BiӇXÿӗ thành phҫQ80/ÿѭӧFGQJÿӇ hӛ trӧ thӵc
thi theo cách này.

-

Process ÿӏQK QJKƭD OXӗng cӫa hӋ thӕng. Sӱ dөng các phҫn tӱ giӕQJ QKѭ ӣ trong

Design.

-

Deployment biӇu diӉn các nút vұt lý cӫa hӋ thӕng mà tҥo nên phҫn cӭQJ/ѭӧFÿӗ
triӇQNKDLÿѭӧc sӱ dөQJÿӇ hӛ trӧ khía cҥnh này.

&iFEL͋Xÿ͛
4.2.1. Class diagram
Giӟi thiӋu
BiӇXÿӗ lӟp là mӝt dҥng biӇXÿӗ WƭQK1yELӇu diӉQFiLQKuQWƭQKFӫa mӝt ӭng dөng. BiӇXÿӗ lӟp
không chӍ ÿѭӧc dùng cho viӋc mô tҧ bên ngoài, lұp tài liӋu cӫa các ҧQKKѭӣng khác nhau cӫa hӋ
thӕng mà còn xây dӵng nên mã lӋnh cho ӭng dөng.
Trong biӇXÿӗ lӟp miêu tҧ các thuӝc tính và các thao tác cӫa mӝt lӟSYjFNJQJJLjQJEXӝc vӟi hӋ
thӕng. BiӇXÿӗ lӟSÿѭӧc sӱ dөng rӝng rãi trong viӋc thiӃt kӃ P{KuQKKѭӟQJÿӕLWѭӧng bӣi vì chӍ có
biӇXÿӗ UML mӟi có thӇ ánh xҥ trӵc tiӃp sang ngôn ngӳ KѭӟQJÿӕi tuӧng.
BiӇXÿӗ lӟp biӇu diӉn mӝt tұp các lӟp, giao diӋn, kӃt hӧp, cӝng tác, và giҵng buӝc. BiӇu ÿӗ lӟp
ÿѭӧF[HPQKѭOjELӇXÿӗ cҩu trúc.
MөFÿtFK
MөFÿtFKFӫa biӇu lӟp là xây dӵQJOrQFiFKQKuQWƭQKFӫa ӭng dөng. BiӇXÿӗ lӟp là biӇXÿӗ mà
có thӇ ánh xҥ trӵc tiӃp sang ngôn ngӳ lұSWUuQKKѭӟQJÿӕLWѭӧng. MөFÿtFKFӫa biӇXÿӗ lӟp có thӇ
tóm tҳWQKѭVDu:
-

Phân tích và thiӃt kӃ FiFKQKuQWƭQKFӫa ӭng dөng.

-

Mô tҧ các trách nhiӋm, chӭFQăQJFӫa hӋ thӕng.


-

Làm nӅn tҧng cho biӇXÿӗ thành phҫn và biӇXÿӗ triӇn khai.

VӁ biӇXÿӗ lӟSQKѭWKӃ nào?
BiӇXÿӗ lӟp có nhiӅu thuӝc tính cҫn phҧi chú ý trong khi vӁ QKѭQJӣ ÿk\WURQJWjLOLӋu này chӍ
ÿӅ cұp tӟi nhӳng thuӝFWtQKFѫEҧn nhҩt và hay dùng nhҩt.
Mӝt sӕ ÿLӇm cҫn chú ý khi vӁ biӇXÿӗ lӟp:
-

Tên cӫa biӇXÿӗ lӟSQrQÿһt sao cho có thӇ mô tҧ ÿѭӧc diӋn mҥo cӫa hӋ thӕng.

-

Mӛi mӝt phҫn tӱ và các quan hӋ cӫa nó phҧi rõ ràng.

-

Khҧ QăQJFӫa lӟp (thuӝc tính và thao tác) phҧi rõ ràng và duy nhҩt.


24

-

ChӍ biӇu diӉn nhӳng thuӝFWtQKÿһc biӋt cӫa lӟp, bӣi vì nhӳng nӃu chúng ta biӇu diӉn
cҧ nhӳng thuӝc tính không quan trӑng sӁ làm cho hӋ thӕng phӭc tҥp, rӕi và khó triӇn
khai.

-


Sӱ dөng nRWHNKLÿѭӧc yêu cҫu mô tҧ diӋn mҥo cӫa biӇXÿӗ. Bӣi vì mөFÿtFKFXӕi
FQJOjOjPFKRQJѭӡi dùng và lұp trình viên có thӇ hiӇXÿѭӧc hӋ thӕQJÿѭӧc mô tҧ
QKѭWKӃ nào.

Ví dө: VӁ biӇXÿӗ lӟp cӫa mӝt hӋ thӕQJÿѫQÿһt hàng trong mӝt ӭng dөng bán hàng. HӋ
thӕng nj\ÿѭӧc mô tҧ QKѭVDX
-

Ĉҫu tiêu tҩt cҧ FiF2UGHU ÿѫQÿһWKjQJ

×