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.65 MB, 52 trang )

1

TRƢỜNG ĐẠ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
HƢỚNG ĐỐI TƢỢNG

TÊN HỌC PHẦN

: PHÂN TÍCH & THIẾT KẾ
HỆ THỐNG HƢỚNG ĐỐI TƢỢNG
MÃ HỌC PHẦN
: 17407
TRÌNH ĐỘ ĐÀO TẠ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

MỤC LỤC
Nội dung
Chƣơng 1. Mô hình đối tƣợng
1.1. Sự phát triển của mô hình đối tượng


1.2. Nền tảng của mô hình đối tượng
1.3. Phần tử cơ bản trong mô hình đối tượng
Chƣơng 2. Lớp và đối tƣợng
2.1. Cơ bản về đối tượng
2.2. Mối quan hệ giữa các đối tượng
2.3. Cơ bản về lớp
2.4. Mối quan hệ giữa các lớp
2.5. Sự tương tác lẫn nhau của lớp và đối tượng
Chƣơng 3. Sự phân loại (Classification).
3.1. Tầm quan trọng của sự phân loại
3.2. Xác định các lớp và đối tượng
Chƣơng 4. Phân tích thiết kế hệ thống hƣớng đối tƣợ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ểu đồ (Diagrams)
Chƣơng 5. Quy trình phân tích và thiết kế
5.1. Nền tảng
5.2. Quy trình vĩ mô: Vòng đờ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ế
Chƣơng 6. Một số bài toán cụ thể
6.1. Hệ thống điều khiển: Quản lý hệ thống giao thông
6.2. Ứng dụng mạng lướ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ống hướng đối tượ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ọc trƣớ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ức cơ bản về phân tích, thiết kế hệ thống thông tin tin học hoá theo mô hình
hướng đối tượng sử dụng UML.
Nội dung chủ yếu:
Phương pháp luận phân tích thiết kế hệ thống hướng đối tượng; Nguyên tắc và công cụ mô hình hoá
hệ thống; Thiết kế và cài đặt hệ thống hướng đối tượng; Các ví dụ minh hoạ.
Nội dung chi tiết:
PHÂN PHỐI SỐ TIẾT
TÊN CHƢƠNG MỤC
TS LT TH BT KT
Chƣơng 1. Mô hình đối tƣợng
2
2
1.1. Sự phát triển của mô hình đối tượng
1.2. Nền tảng của mô hình đối tượng
1.3. Phần tử cơ bản trong mô hình đối tượng
Chƣơng 2. Lớp và đối tƣợng
2
2
2.1. Cơ bản về đối tượng
2.2. Mối quan hệ giữa các đối tượng
2.3. Cơ bản về lớp

2.4. Mối quan hệ giữa các lớp
2.5. Sự tương tác lẫn nhau của lớp và đối tượng
Chƣơng 3. Sự phân loại (Classification).
2
3.1. Tầm quan trọng của sự phân loại
3.2. Xác định các lớp và đối tượng
Chƣơng 4. Phân tích thiết kế hệ thống hƣớng đối
18
16
2
tƣợ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ểu đồ (Diagrams)
Chƣơng 5. Quy trình phân tích và thiết kế
2
2
5.1. Nền tảng
5.2. Quy trình vĩ mô: Vòng đờ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ế
Chƣơng 6. Một số bài toán cụ thể
4
3
1
6.1. Hệ thống điều khiển: Quản lý hệ thống giao thông
6.2. Ứng dụng mạng lướ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ập đượ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ần theo đúng quy đị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
3. Đoàn Văn Ban, Phân tích và thiết kế hệ thống hướng đối tượng, Nhà xuất bản ĐHQG Hà
Nội, 2006.


4

4. Nguyễn Văn Vỵ, Phân tích và thiết kế các hệ thống thông tin hiện đại, Nhà xuất bản Thống
Kê, Hà Nội, 2002.
Hình thức và tiêu chuẩn đánh giá sinh viên:
- Hình thức thi: thi viết.
- Tiêu chuẩn đánh giá sinh viên: căn cứ 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ập đượ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.
Thang điểm: Thang điểm chữ A, B, C, D, F.
Điểm đánh giá họ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ệ Thông tin và được dùng để giảng dạy cho sinh viên.

Ngày phê duyệt:

Trƣởng Bộ môn

/

/



5

CHƢƠNG I: MÔ HÌNH ĐỐI TƢỢNG
1.1. Sự phát triển của mô hình đối tượng
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ật hướng đối tượ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ứu theo 2 hướng sau:
- Phát triển các chương trình nhỏ tới các chương trình lớn
- Sự phát triển của các ngôn ngữ lập trình bậc cao hơn.
Hầu hết tất cả các chương trình phần mềm ngày càng đòi hỏi cao vào phức tạp hơn. Chính điều
này đã thúc đẩy việc nghiên cứu trong lĩnh vực công nghệ phần mềm, mà đặc biệt quan tâm tới sự
phân tích, trừu tượng và tổ chức cho hệ thống. Đi đôi với điều này, việc phát triển các ngôn ngữ lập
trình cũng đã đáp ứng được phần nào về giải quyết yêu cầu phức tạp của hệ thống.
Wenger đã phân loạ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ừa đơn giản từ ALGOL 60

Simula

Lớp, trừu tượng dữ liệu

- Giai đoạn (1970 -1980): Trong giai đoạn này có rất nhiều ngôn ngữ khác nhau đuợc phát minh
ra. Tuy nhiên có một số ngôn ngữ sau đã được sử dụng rộng rãi:
C

Hiệu quả, có thể thực thi đuợc

FORTRAN 77

Theo chuẩn ANSI


6

Pascal

Kế thừa đơn giản từ ALGOL 60

Simula

Lớp, trừu tượng dữ liệu


- Giai đoạn hướng đối tượng (1980 – 1990)
Smalltalk

Ngôn ngữ hướng đối tượng

C++

Phát triển từ C và Simula

Ada83

Mạnh hơn Pascal

Eiffel

Phát triển từ Ada và Simula

- Giai đoạn Framework (1990 – ngày nay): Nhiều ngôn ngữ mới đuợc phát triển và yêu cầu cần
phải tuân theo một tiêu chuẩn nào đó. Do đó dẫn đến việc lập trình theo các Framework..
Visual Basic

Dễ dàng phát triển các giao diện đồ
họa cho các ứng dụng Windows

Java

Kế thừa từ Oak

Python


Ngôn ngữ kịch bản hướng đối
tượng

J2EE

Dựa trên các Framework cơ bản
của Java

.NET

Dựa trên các đối tượng Framework
cơ bả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ất và đầu thời kì thứ 2. Về kiến trúc,
chúng được xây dựng bởi các khối cơ bản và các phần được liên kết với nhau như thế nào. Trong
hình này, chúng ta có thể thấy rằng các khối cơ bản để xây dựng lên các ứng dụng là các chương
trình con.


7

Các ứng dụng được viết bởi những ngôn ngữ này thông thường được thiết kế với các chương
trình con và dữ liệu toàn cục. Các mũi tên trên hình vẽ nói rằng các chương trình phụ 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ột chương trình con có thể tách
biệt với dữ liệu của các chương trình con khác. Một lỗi trong một phần của chương trình có thể ảnh
hưởng tới toàn bộ hệ thống bởi vì cấu trúc dữ liệu toàn cục được sử dụng cho tất các các chương
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ối giai đoạn 2 và đầu giai đoạn 3
Giữa năm 1960, cuối cùng thì các chương trình cũng được công nhận là trung gian giữa “vấn
đề” và máy tính. “ Chương trình đầu tiên, giờ được gọi là thủ tục.” các chương trình con được đề
xuất trong giai đoạn 1950 nhưng nó vẫn chưa được coi như là một abstraction ở thời điểm đó.
Subprograms được đánh giá như là một hướng tiếp cận để tách các chức năng của chương trình.
Các subprogram có thể phục vụ như là một kĩ thuật tóm tắt có 3 hê quả quan trọng. Thứ nhất,
các ngôn ngữ lập trình đượ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ố trí rõ ràng thông qua các chương trình con. Thứ ba, phương pháp
cấu trúc thể hiện được ưu điểm, cung cấp các định hướng để các nhà thiết kế cố gắng xây dựng một
hệ thống phức tạp thông qua các chương trình nhỏ hơn được coi là các khối chương trình cơ bản.
Kiến trúc lập trình trong giai đoạn này chỉ ra một vài điều không phù hợp của các ngôn ngữ trước
đó.


8

Kiến trúc ngôn ngữ lập trình ở cuối giai đoạn 2 đầu giai đoạn 3
Kiến trúc của ngôn ngữ lập trình ở cuối giai đoạn thứ 3
Trong giai đoạn này, việc phân tích thiết kế các chương trình mang tính quy mô lớn ngày càng
nhiều và đòi hỏi nhiều độ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
chương trình ra thành các phần khác nhau. Do đó, hình thành việc chia các chương trình ra thành
các module nhỏ như được hiển thị ở hình dưới đây:

Kiến trúc ngôn ngữ lập trình của cuối giai đoạn 3
Kiến trúc của đối tƣợng cơ bản và ngôn ngữ lập trình hƣơng đối tƣợng

Trừu tượng hóa dữ liệu là quan trọng để kiểm soát sự phức tạp của dữ liệu.

1.2. Nền tảng của mô hình hướng đối tượng
Thiết kế hệ thống theo hướ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ật toán như là các khối cơ bản. Tương tự, thiết kế hệ thống theo hướng đối
tượng giúp người lập trình viên khai thác được những điểm mạnh của đối tượng cơ bản và ngôn ngữ
lập trình hướng đối tượng, sử dụng lớp và đối tượng như là các khối xây dựng cơ bản.


9

Trên thực tế, mô hình đối tượng đã bị chi phối bổi một số tác nhân, không chỉ là ngôn ngữ lập
trình hướng đối tượng. Thực vậy, như đã thảo luận ở phần trước, nền tảng mô hình hướng đối
tượng, mô hình đối tượng đã chứ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ện người dùng, cơ
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ệc được ưa chuộng phổ biến
đó là hướng đối tượng giúp chúng ta đố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ế hướng đối tượng theo đó đưa ra sự phát triển tiên tiến hơn. Nó không phá
vỡ các cấu trúc của chương trình đã được thiết kế trước đó. Tuy nhiên, hầu hết các lập trình viên
không được huấn luyện khắt khe kỹ năng phân tích và thiết kế hướng đối tượng.

1.3. Các phần tử của mô hình đối tượng
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ập trình được xem như là một cách tổ chức chương trình dựa trên một số các mô
hình của lập trình và ngôn ngữ đã viết ra chương trình một cách rõ ràng. Theo thống kê thì có một
số kiểu lập trình sau đây:
+ Hướng thủ tục


Các thuật toán

+ Hướng đối tượng

Các lớp và đối tượng

+ Hướng Logic

Các mục đích

+ Hướng luật

Các luật If…then

+ Hướng ràng buộc

Các quan hệ bất biế, không đổi.

Không có một kiểu lập trình nào mà tốt nhất đối với tất các các loại ứng dụng. Ví dụ: Lập trình
theo hướng thủ tục thì tốt đối với việc thiết kế các chương trình liên quan tới việc tính toán… Từ
trước tới nay đã và đang tồn tại nhiều phương pháp được áp dụng để phân tích thiết kế một hệ thống
thông tin. Một trong những phương pháp đó là hướng thủ tục, được sử dụng trong việc giải quyết
các vấn đề 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ều phương pháp
đượ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.
Phương pháp SDLC được sử dụng phổ biến nhất đó là Structured System Analysis and Design.
Phương pháp cấ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ỏ
hơn, rõ ràng hơn, và quản lý cũng dễ dàng hơn.
Phương pháp OOAD chủ yếu là phân tích theo hướng đối tượng hơn là hướng thủ tục như là
phương pháp SSAD. Một đối tượng là một người, địa điểm hay một sự vật được mô tả hay tồn tại

trong hệ thống mà có 3 điều cần quan tâm:
-

Cái gì để phân biệt, nhận biết nó (Đị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ới các đối tượng khác).

-

Nó làm những cái gì (Các phương thức của nó thực hiện với CSDL).

Phân tích hướng đối tượng là quá trình phát triển một mô hình hướng đối tượng mà trong mô
hình này các đối tượng ban đầu biểu diễn các thực thể và các phương thức liên quan tới vấn đề cần
giải quyết.
Thiết kế hướng đối tượng là quá trình phát triển một mô hình hướng đối tượng, trong giai đoạn
này phải xác định được các yêu cầu. Nói tóm lại trong OOAD chúng ta đề cập tới thuật ngữ đối
tượng nhiều hơn là chức năng.
Phân tích và thiết kế hệ thống theo hƣớ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ạt động và nhiệm vụ cần thiết để hoàn thành việc phát triển một hệ thống
thông tin. Phương pháp này như đã đề cập ở phần trước được gọi là mô hình thác nước.
Các vấn đề cơ bản trong SSAD có thể được tóm tắt như sau:
-

Điều đầu tiên trong SSAD đó là sự phân tích theo hướng từ trên xuống dưới. Ở đây, hệ

thống được coi một tổng thể ban đầu. Chủ yếu việc phân tích ở giai đoạn này để hiểu được
những đặ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ống được định nghĩa là nơi hệ thống được triển khai. Nhà phân
tích tập trung vào 2 mục đích chính: Hệ thống mới cần phải làm những gì và Hệ thống mới
làm nó như thế nào?

-

Phương pháp này yêu cầu ngườ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ới người dùng và giải quyết vấn để, xác nhật những vấn đề mà người dùng
cần.

-

Hai vấn đề chính trong việc phát triển hệ thống thông tin đó là các quy trình và dữ liệu được
xây dựng độc lập với phương pháp này. Các quy trình được xây dựng bởi các lược đồ luồng
dữ liệu, lược đồ này mô phỏng luồng dữ liệu giữa quy trình và dữ liệu lưu trữ và nó được
thay đổi như thế nào. Mô hình dữ liệu được định nghĩa bằ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ống hƣớng đối tƣợng
Phương pháp tiếp cận theo hướng đối tượng để phát triển một hệ thống xem hệ thống như là
một tập các đối tượng tương tác với nhau, làm việc cùng nhau để hoàn thành nhiệm vụ. Không có
sự tách biệt giữa quy trình và chương trình. Không có sự tách biệt giữa thực thể dữ liệu và tệp tin.
Một đối tượng là một vấn đề trong hệ thống máy tính. Phương pháp OOAD có thể chia ra làm 2
lĩnh vực chính:



11

-

Phân tích hướng đối tượng: Điều này liên quan tới phát triển mô hình hướng đối tượng của
ứng dụng. Điều này xác định đối tượng biểu diễn các thực thể và quan hệ giữa các đối
tượng và phương pháp cần thiết để giải quyết vấn đề.

-

Thiết kế hướng đối tượng: Điều này liên quan tới phát triển mô hình hướng đối tượng của hệ
thống cần thiết để thực hiện các yêu cầu. Các nhà phân tích và lập trình phải nghĩ thuật ngữ
đối tượng nhiều hơn là chức năng.

Mô hình đối tượng dựa trên các yêu tố cơ bản bao gồm: abstraction, encapsulation, modularity,
hierarchy…Mục tiêu tập trung ủa mô hình đối tượng là phân tích đối tượng. Một hệ thống hướng
đối tượng sẽ có một số đối tượng, mỗi đối tượng này sẽ kết hợp với các đối tượng khác để hoàn
thành một nhiệm vụ.

Bài tập
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ủa mô hình đối tượng?
3) Các thành phần của mô hình đối tượng?


12

CHƢƠNG II: LỚP VÀ ĐỐI TƢỢNG

2.1. Cơ bản về đối tượng
Trong khóa học này, nhưng chúng ta đã đề cập từ chương trước, đối với sử dụng OOAD thì
người phân tích và lập trình sử dụng thuật ngữ đối tượng rất rất nhiều. Vậy ta tự hỏi, đối tượng là
gì?
Đối tượng là một trườ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ột sinh viên trường Đại học Hàng hải. An là một trường hợp trong tất cả các sinh
viên của trường Đại học Hàng hải.
Chúng ta cũng có thể nói đối tượng là cái gì đó mà chúng ta muố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ại trường Đại học Hàng hải. Theo đó tôi phải tạo các
đối tượng mà có thể lưu trữ thông tin về các khóa học này, để chúng ta có thể theo dõi hay lấy thông
tin về các khóa học khác nhau.
Như vậy, một đối tượng có thể là tồn tại ở dạng vật chất, như 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ạng trìu tượng như là cảm xúc…

Trong UML chúng ta xây dựng đối tượ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ủa đối tượng và tên của lớp mà đối tượng thuộc vào lớp đó. Cú pháp chuẩn là:
tên đối tượng: tên lớp. Phần dưới liệt kê các thuộc tính của đối tượng đó.

2.2. Mối quan hệ giữa các đối tượng
Toàn bộ hệ thống được xây dựng từ rất nhiều lớp và đối tượng. Hoạt động của hệ thống thu được
thông qua sự phối hợp của các đối tượng trong hệ thống. Các mối quan hệ cung cấp các đường dẫn
để các đối tượng tương tác với nhau. Có hai loại quan hệ giữa các đối tượ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 đối tượng. Một đối tượng phối hợp với

các đối tượng khác thông qua các liên kết của nó với các đối tượ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) xác định, trong đó một đối tượng(client) sử dụng
những dịch vụ của đối tượng khác (supplier).
Thông thường, thông điệp được truyền giữa hai đối tượng là một chiều, đôi khi có thể là cả hai
chiều. Các thông điệp được khởi tạo ở phía client, sau đó được đưa tớ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ột đối tượng có thể có một trong ba vai trò:
 Actor: Một đối tượng có thể hoạt động trên các đối tượng khác chứ không bị thao tác bởi
các đối tượng khác.
 Server: Một đối tượng không bao giờ hoạt động trên các đối tượng khác; nó chỉ có thể bị
thao tác bởi các đối tượng khác.
 Agent: Là đối tượng vừa có thể hoạt động trên các đối tượng khác, lại vừa có thể bị các đối
tượ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ạng đặc biệt của mối quan hệ liên hợp trong đó một đối tượng là sự
tổng hợp của các đối tượ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ột động cơ ...

2.3. Cơ bản về lớp
Lớp là một sự trìu tượng trong mô hình hướng đối tượng và trong ngôn ngữ hướng đối tương.
Một lớp bao gồm cấu trúc và hành vi. Các lớp có thể định nghĩa thông qua các lớ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ập đối tượng có thuộc tính và hoạt động giống nhau. Nó phục vụ như
là một mẫu khi mà tạo một đối tượng mới. Mục đích của nó là định nghĩa một tập các thuộc tính và
thao tác mà mô tả đầy đủ cấu trúc và hành vi của các đối tượng. Trong cách nói khác thì đối tượng
là một trườ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ớp được biểu diễn như là một hình chữ nhật với 3 phần riêng biệt đượ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ữa định nghĩa tất cả các thuộc tính

của lớp, phần cuối cùng chứa các định nghĩa thao tác.


14

Lớp là một loại đối tượng đặc biệt. Nó là một tập hợp các đối tượng đã được tạo. Nó được dùng
để tạo và huỷ các đối tượng thuộc về nó. Nó cũng có thể được dùng để lưu dữ 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.

2.2.1. Các phƣơng pháp đƣợc sử dụng để xác định lớp
Trong thực tế có rất nhiều phương pháp có thể xác định được lớp trong một hệ thống. Tuy nhiên
ở đây tôi đề cập tới 2 phương pháp hay được dùng nhất:
-

Xác định các danh từ.

-

Xác định lớp dựa trên khái niệm về danh sách lớp.


15

2.4. Mối quan hệ giữa các lớp
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ớp, cũng có nghĩa là sự nối kết giữa các đối tượng của các

lớp này. Trong UML, 1 liên hệ được định nghĩa là một mối quan hệ mô tả một tập hợp các nối kết
trong khi nối kết được định nghĩa là một sự liên quan về ngữ nghĩa giữa một nhóm các đối tượng.
Khái quát hoá là mối quan hệ giữa một yếu tố mang tính khái quát cao hơn và một yếu tố chuyên
biệt hơn. Có thể chứa chỉ các thông tin bổ sung một thực thể (một đối tượng là một thực thể của một
lớp) của yếu tố mang tính chuyên biệt hơn có thể được sử dụng ở bất cứ nơi nào mà đối tượng mang
tính khái quát hoá hơn đượ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ố mang tính độc lập và một yếu tố mang
tính phụ thuộc một sự thay đổi trong yếu tố độc lập sẽ ảnh hưởng đế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ật, nhưng ở những mức độ
trừu tượng hoá khác nhau.

2.5. Sự tương tác lẫn nhau của lớp và đối tượng
Lớp vàđối tượng, mặc dù có mối liên hệ tươngứng lẫn nhau, nhưng bản chất lại khác nhau:
 Lớp là sự trừu tượng hoá của các đối tượng. Trong khi đó, đối tượng là một thể hiện của lớp.
 Đối tượng là một thực thể cụ thể, có thực, tồn tại trong hệ thống. Trong khi đó, lớp là một
khái niệm trừu tượng, chỉ tồn tại ở dạng khái niệmđể mô tả cácđặc tính chung của một số
đối tượng.
 Tất cả các đối tượng thuộc về cùng một lớp có cùng các thuộc tính và các phương thức.
 Một lớp là một nguyên mẫu của một đối tượ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 đối tượ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ừu tượng. Trong
khi đó, đối tượng là một thực thể cụ thể tồn tại khi hệ thống đang hoạt động.

Bài tập
1) Đối tượng là gì? Mối quan hệ giữa các đối tượ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ớp và Đối tượng?


16


CHƢƠNG III: SỰ PHÂN LOẠI
Sự phân loại đượ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ế hướng đối
tượng, việc phân loại các đối tượng cùng với các tương tác của nó trong hệ thống là vô cùng quan
trọng. Nếu như chúng ta phân loại không đúng thì hệ thống chúng ta sẽ cồng kềnh, hoạt động không
hiệu quả, khó khăn trong việ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ại các đối tượ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ển khai cũng dễ hơn, nhanh hơn, tránh được việc trùng lặp công việc.
Không có một quy định chung nào để tìm ra đượ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.

3.1. Tầm quan trọng của việc phân loại hợp lý
Việc xác định các lớp và các đối tượng là một trong những phần đầy thử thách của phân tích và
thiết kế hướng đối tượng. Kinh nghiệm cho thấy rằng xác đị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ận ra được những lớp trìu tượng và kĩ thuật mà tạo nên vấn
đề. Thông qua sáng tạo, chúng ta đưa ra những khái quát trìu tượng cũng như các kĩ thuật mới xác
định các đối tượng cộng tác như thế nào.
Cuối cùng, phát hiện và sáng tạo là các vấn đề trong phân loại và việc phân loại là đi tìm những
vấn đề tương tự nhau. Khi chúng ta phân loại, chúng ta tìm đế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ại giúp chúng ta cách xác đị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ận ra các tương tác chung giữa các đối tượng, chúng ta đưa ra các kĩ thuật được
coi là quyết định trong việc thực hiện. Việc phân loại cũng hướng dẫn chúng ta trong việc đưa ra
những quyết định về module hóa. Chúng ta có thể chọn và đặt toàn bộ các lớp và đối tượ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ớp và đối tượng đó. Phân loại cũng đóng vai trò trong việ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ệc đóng gói, chức năng hoặc là độ tin cậy.

3.2. Xác định các lớp và đối tượng

Vấn đề phân loại đã đượ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ọc đặc biệt quan tâm. Chúng ta có thể tham khảo những kinh nghiệm của họ ở trong lĩnh vực
phân loại này vào việc thiết kế hướng đối tượng nhờ sự phân loại.
Phƣơng pháp tiếp cận cổ điển và hiện đại
Có 3 hướng tiếp cận phổ biến thường được dùng để phân loại:


17

-

Loại cổ điển.

-

Nhóm khái niệm.

-

Lý thuyết nguyên mẫu

Loại cổ điển
Trong hướng tiếp cận cổ điển để phân loại, ”Tấ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ại. Như là các thuộc tính cần thiết và đủ để định nghĩa
một loại”.
Nhóm khái niệm.
Với hướng tiếp cận này thì các lớp đượ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à sau đó phân loại các thực thể theo các mô tả.
Lý thuyết mẫu
Một lớp của các đối tượng được miêu tả bởi một đối tượng nguyên mẫu, và một đối tượng được

coi như là một thành viên của lớp đó nếu và chỉ nếu nó nó tương tự với các mẫu này.

Bài tập
1) Sự phân loại là gì? Tầm quan trọng của sự phân loại?
2) Trình bày phương pháp xác định lớp và đối tượng?


18

CHƢƠNG IV: PHÂN TÍCH VÀ THIẾT KẾ HƢỚNG ĐỐI TƢỢNG
SỬ DỤNG UML
4.1. Ngôn ngữ mô hình thống nhất UML
UML là ngôn ngữ chuẩn cho việc quy đị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
trình hướng đối tượng như C++, java…
UML đượ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ập trình, nhưng các công cụ có thể được dùng để 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
hướng đối tượng. Vì vậy trong bài giảng này tôi sử dụng UML như là một công cụ chính trong việc
thiết kế và giảng dạy.
4.1.1 Các khối cơ bản trong UML
UML đóng vai trò quan trọ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ắc để 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ể được định nghĩa là:
-

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: Structural things định nghĩa phầ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ập các đối tuwngj có cùng trách nhiệm, nhiệm vụ.


Phần trên cùng biễu diễn tên lớp.




Phần thứ 2 biểu diễn các thuộc tính của lớp.



Phần thứ 3 được dùng để mô tả các thao tác có thể được thực hiện.



Phần thứ 4 là phần lựa chọn dùng để hiển thị thêm các thành phần phụ thêm


19

-

Interface: định nghĩa một tập các thao tác mà đặc tả rõ trách nhiệm của hệ thống. Được
biểu diễn bằng một hình tròn, bên dưới ghi tên của giao diện. Được dùng để mô tả các
chức năng, mô tả cái chung nhất. Trong giao diện chưa có viết mã lệnh để thực thi.

-

Collaboration: định nghĩa sự tương tác lẫn nhau giữa các phần tử. Collaboration được
biểu diễn bằng hình eclips nét đứt. Tên của nó được ghi ở bên trong hình.

-

Use case: biểu diễn một tập các hoạt động được thực hiện bởi một hệ thống cho một mục

đích xác định. Use case được biểu diễn bằng hình eclip liền nét với tên được ghi bên
trong hình.


20

-

Actor có thể được định nghĩa như là các thực thể bên trong hoặc bên ngoài tương tác với
hệ thống.

-

Kí hiệu bắt đầu: được dùng để khởi tạo, bắt đầu một quy trình xử lý.

-

Kí hiệu kết thúc: Được dùng để 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ới class nhưng đường viền bên ngoài đậm hơn. Được
dùng để miêu tả hành độ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ủa nó đượ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ạy chương trình. Node được biểu
diễn bởi hình vuông với tên được ghi ở trong hình.

Behavioral things: Behavioral thing gồm có các phần động của mô hình UML. Theo đó có một
số loại behavioral things sau:
-

Interaction: được định nghĩa như là một hoạt động bao gồm một nhóm các thông
điệp đượ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.

-

State machine: State machine định nghĩa một chuỗi các trạng thái mà một đối tượng
phải trải qua trong việc đáp ứ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ệm thay đổi.

Grouping things: có thể được định nghĩa như là một kĩ thuật để 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ể được định nghĩa như là một kĩ thuật để đánh dấ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ử cũng là một khối quan trọng của UML. Nó cho thấy các phần tử được
liên kết với nhau như thế nào và sự kết hợp này mô tả chức năng của chương trình.
Có 4 loại quan hệ được đề cập sau đây:
-


Dependency: là loại quan hệ giữa 2 sự việc mà khi có một phần tử thay đổi thì cũng
ảnh hưởng tới một phần tử khác.


22

-

Association là liên kết cơ bản được dùng để kết nối giữa các phần tử trong mô hình
UML. Nó cũng mô tả các đối tượng liên kết với nhau như thế nào.

-

Generalization: có thể được định nghĩa như là mộ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ủa các đối tượng.

-

Realization: có thể được định nghĩa như là một quan hệ trong đó 2 phần tử được liên
kết với nhau. Một phần tử mô tả một số trách nhiệm mà chưa đượ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ại trong trườ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ểu đồ UML hoàn chỉnh và lược đồ
này biểu diễn một hệ thống.
Biểu đồ UML là 1 phần quan trong trong toàn bộ quy trình. UML bao gồm 9 lược đồ 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ống nào cũng được sử dụng bởi những người dùng khác nhau. Người dùng có thể là
lập trình viên, phát triển, kiểm thử, nhà đầu tư, nhà phân tích…Vì vậy trước khi thiết kế một hệ
thống được hình thành với các phối cảnh khác nhau trong suy nghĩ của từng người dùng.
UML đóng vai trò quan 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ận sau đây:


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ểu đồ lớp, biểu đồ đối tướng để hỗ trợ cách thiết kế này.

-

Implementation định nghĩa các thành phần được sắp xếp lại với nhau để tạo nên
một hệ thống vật lý hoàn chỉnh. Biểu đồ thành phần UML được dùng để hỗ trợ thực
thi theo cách này.

-

Process định nghĩa luồng của hệ thống. Sử dụng các phần tử giống như ở 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ứng. Lược đồ
triển khai được sử dụng để hỗ trợ khía cạnh này.

4.2. Các biểu đồ
4.2.1. Class diagram
Giới thiệu
Biểu đồ lớp là một dạng biểu đồ tĩnh. Nó biểu diễn cái nhìn tĩnh của một ứng dụng. Biểu đồ 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 ảnh hưở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ểu đồ lớp miêu tả các thuộc tính và các thao tác của một lớp và cũng giàng buộc với hệ
thống. Biểu đồ lớp được sử dụng rộng rãi trong việc thiết kế mô hình hướng đối tượng bởi vì chỉ có
biểu đồ UML mới có thể ánh xạ trực tiếp sang ngôn ngữ hướng đối tuợng.
Biểu đồ 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
được xem như là biểu đồ cấu trúc.
Mục đích
Mục đích của biểu lớp là xây dựng lên cách nhìn tĩnh của ứng dụng. Biểu đồ lớp là biểu đồ mà
có thể ánh xạ trực tiếp sang ngôn ngữ lập trình hướng đối tượng. Mục đích của biểu đồ lớp có thể
tóm tắt như sau:
-

Phân tích và thiết kế cách nhìn tĩnh của ứng dụng.

-

Mô tả các trách nhiệm, chức năng của hệ thống.

-

Làm nền tảng cho biểu đồ thành phần và biểu đồ triển khai.


Vẽ biểu đồ lớp nhƣ thế nào?
Biểu đồ lớp có nhiều thuộc tính cần phải chú ý trong khi vẽ nhưng ở đây, trong tài liệu này chỉ
đề cập tới những thuộc tính cơ bản nhất và hay dùng nhất.
Một số điểm cần chú ý khi vẽ biểu đồ lớp:
-

Tên của biểu đồ lớp nên đặ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ả năng củ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ộc tính đặ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 note khi được yêu cầu mô tả diện mạo của biểu đồ. Bởi vì mục đích cuối
cùng là làm cho người dùng và lập trình viên có thể hiểu được hệ thống được mô tả
như thế nào.


Ví dụ: Vẽ biểu đồ lớp của một hệ thống đơn đặt hàng trong một ứng dụng bán hàng. Hệ
thống này được mô tả như sau:
-

Đầu tiêu tất cả các Order (đơn đặt hàng) và Customer (Khách hàng) được xác định
như là 2 phần tử của hệ thống và chúng có quan hệ 1-n bởi vì khách hàng có thể có
nhiều Order (Đơn đặt hàng).

-

Chúng ta hãy tưởng tượng lớp Order là một lớp trìu tượng và nó có 2 lớp thực tế tồn
tại (Kế thừa từ lớp Order) đó là SpecialOrder và NormalOrder.

-

Hai lớp kế thừa có tất cả các thuộc tính của lớp Order. Thêm vào đó chúng có thêm
các chức năng như là dispatch() và receive().

4.2.2. Sơ đồ Object
Sơ đồ Object thu được từ sơ đồ lớp vì vậy sơ đồ đối tượng có được là dựa trên sơ đồ lớp.
Các sơ đồ đối tượng biểu diễn một trường hợp của một sơ đồ lớp. Về cơ bản sơ đồ lớp và sơ đồ
đối tượng là tương tự nhau. Sơ đồ đối tượng cũng biểu diễn cách nhìn tĩnh của một hệ thống nhưng
hướng nhìn tĩnh này là snapshot của hệ thống tại các thời điểm khác nhau.
Sơ đồ đối tượng được dùng để đưa ra một tập các đối tượng và quan hệ giữa chúng.


25

Mục đích

Mục đích của việc sử dụng sơ đồ là làm cho chúng ta có thể hiểu được rõ ràng để triển khai hệ
thống một cách hiệu quả. Mục đích của sơ đồ đối tượng cũng giống như mục đích của sơ đồ lớp.
Sự khác nhau giữa 2 sơ đồ đó là sơ đồ lớp biểu diễn một mô hình trìu tượng bao gồm các lớp và
quan hệ giữa chúng. Nhưng sơ đồ đối tượng biểu diễn một trường hợp tại một thời điểm cụ thể. Có
nghĩa là sơ đồ đối tượng miêu tả sát với hệ thống thực hơn. Mục đích là lấy được hướng nhìn tĩnh
của hệ thống tại một thời điểm riêng biệt.
-

Chuyển tới và nhận lại từ các kĩ sư phần mềm

-

Biểu diễn quan hệ giữa các đối tượng của một hệ thống.

-

Hướng nhìn tĩnh một tương tác.

-

Hiểu các hoạt động của đối tượng và quan hệ giữa chúng.

Vẽ sơ đồ đối tƣợng nhƣ thế nào?
Như chúng ta đã đề cập ở phần trước, một sơ đồ lớp là một trường hợp của sơ đồ lớp. Điều đó
ngụ ý nói rằng, một sơ đồ đối tượng bao gồm các trường hợp của sự việc được sử dụng trong sơ đồ
lớp.
Cả hai sơ đồ đề được tạo từ các thành phần cơ bản nhưng cách thành lập khác nhau. Trong sơ
đồ lớp các phần tử là ở dạng trìu tượng miêu tả bản kế hoạch hoặc sơ đồ và trong sơ đồ đối tượng
các phần tử là tồn tại hiện hữu biểu diễn đối tượng trong thế giới thực.
Để lấy được các hệ thống riêng biệt, số sơ đồ lớp được giới hạn. Nhưng nế chung ta theo dõi sơ

đồ đối tượng thì chúng ta có thể không giới hạn các trường hợp của sơ đồ này.
Từ những gì đưa ra ở trên thì một sơ đồ đối tượng đơn không thể lấy được tất cả các trường hợp
hay không thể mô tả được hết tất cả các đối tượng của hệ thống. Vì thế giải pháp để giải quyết vấn
đề này là:
-

Đầu tiên, phân tích hệ thống và quyết định trường hợp nào có dữ liệu và mối liên kết
quan trọng.

-

Tiếp theo, theo dõi các trường hợp này cùng với tất cả các chức năng có thể.

-

Lựa chọn một số trường hợp tốt nhất.

Trước khi vẽ sơ đồ đối tượng chúng ta nên nhớ một số điều sau đây:
-

Sơ đồ đối tượng chứa các đối tượng.

-

Liên kết trong sơ đồ đối tượng được dùng để kết nối các đối tượng.

-

Các đối tượng và các liên kết là 2 phần tử dùng để xây dựng lên một sơ đồ đối
tượng.


Ví dụ: Chúng ta sử dụng ví dụ ở phần Sơ đồ lớp “Order management System” (Hệ
thống quản lý đơn đặt hàng). Khi có khách hàng tới đặt mua hàng, tại thời điểm đó sẽ có
những đối tượng sau:
-

Customer (Khách hàng).


×