Tải bản đầy đủ
2 Ngôn ngữ mô hình hóa thống nhất UML

2 Ngôn ngữ mô hình hóa thống nhất UML

Tải bản đầy đủ

-8-

4. Biểu đồ cộng tác (Collaboration diagrams)
5. Biểu đồ trạng thái (Statechart diagram)
- Biểu đồ quản lý mô hình (Model Management Diagrams)
UML cung cấp ba biểu đồ quản lý mô hình sau đây miêu tả làm thế nào để tổ
chức và quản lý các mô-đun ứng dụng khác nhau.
1. Gói (Packages)
2. Hệ thống con (Subsystems)
3. Mô hình (Models)
1.2.2 Biểu đồ lớp (Class Diagrams)

Biểu đồ lớp là biểu đồ quan trọng nhất trong hầu hết các phương pháp hướng
đối tượng. Biểu đồ lớp cho ta cái nhìn tổng quan về hệ thống bằng cách biểu diễn
các lớp và các mối quan hệ giữa chúng. Nó thể hiện mặt tĩnh của hệ thống.
- Lớp (Class)
Một lớp biểu diễn cho sự mô tả trừu tượng một tập các đối tượng có cùng
tính chất, thao tác và ngữ nghĩa. Lớp có thể được xem là một kiểu dữ liệu. Trong
UML, lớp được biểu diễn bằng một hình chữ nhật và gồm ba phần: tên lớp, các
thuộc tính và các thao tác. Trong đó, phần dành cho các thuộc tính và các thao tác
có thể không được hiển thị.
TÊN LỚP
- Các thuộc tính
+ Các thao tác

Ký hiệu lớp
- Lớp nội (Inner Class)
Lớp nội là lớp được định nghĩa bên trong lớp khác. Các khái niệm về lớp nội
được tồn tại trong các ngôn ngữ hướng đối tượng như Java, C++ (thông qua struct
và enum) và C# (với các lớp thực sự bên trong) nhưng không phải là một khái niệm
hướng đối tượng chuẩn.

-9-

UML không cung cấp cách biểu diễn lớp nội. Các ký hiệu sau đây được sử
dụng để thể hiện lớp nội, vị trí của lớp nội được đặt trong phần khai báo phương
thức của lớp mà nó được định nghĩa bên trong.
A_Class

An_Inner_Class

Biểu diễn lớp nội
- Các từ khóa định mức truy xuất (Access Specifiers)
Trong Java, để có thể thấy được các thành phần khác nhau của đối tượng và
khả năng truy cập vào chúng bằng các đối tượng khác nhau được điều khiển bằng
cách sử dụng từ khóa định mức truy xuất. Quyền truy cập các phương thức và thuộc
tính có thể được xác định bằng cách sử dụng ký hiệu trong bảng.
Bảng liệt kê quyền truy cập và phạm vi của chúng
Specifier
Public
Protected
Friendly
Private

Các lớp trong

Các lớp trong các

Các lớp con trong

Các lớp con trong

cùng một gói
Có thể truy cập
Có thể truy cập
Có thể truy cập
Không thể truy cập

gói khác
Có thể truy cập
Không thể truy cập
Không thể truy cập
Không thể truy cập

cùng một gói
Có thể truy cập
Có thể truy cập
Có thể truy cập
Không thể truy cập

các gói khác
Có thể truy cập
Có thể truy cập
Không thể truy cập
Không thể truy cập

Static
Đường gạch dưới một biến hoặc một phương thức của lớp chỉ ra nó là tĩnh.
Trong ví dụ, phương thức getInstance là phương thức tĩnh của lớp
FileLogger. Các đối tượng khách có thể gọi phương thức getInstance trong

lớp FileLogger mà không cần tạo ra thể hiện của nó.
Bảng ký hiệu truy cập
Symbol
+
#
-

Scope
Public
Protected
Private

FileLogger
+getInstance():FileLogger

- 10 -

Biểu diễn phương thức tĩnh
- Lớp trừu tượng / Phương thức trừu tượng (Abstract Class / Method)
Một phương thức mà không có khai báo bên trong gọi là phương thức trừu
tượng. Một lớp với ít nhất một phương thức trừu tượng được coi là lớp trừu tượng.
Các đối tượng khác không thể tạo ra thể hiện của lớp trừu tượng. Một lớp con của
lớp trừu tượng phải thực hiện cài đặt tất cả các phương thức trừu tượng của lớp trừu
tượng hay được khai báo chính nó là một lớp trừu tượng.
Lớp hay phương thức thể hiện bằng tên được in nghiêng là lớp hay phương
thức trừu tượng. Lớp Creator trong hình là một lớp trừu tượng với một phương
thức trừu tượng là factoryMethod.
Creator
factoryMethod():ParentClass

Biểu diễn lớp / phương thức trừu tượng
- Ngoại lệ (Exception)
Một mũi tên vẽ bằng nét đứt với một nhãn đặc trưng “throws” được sử dụng
để cho biết cụ thể phương pháp ném một ngoại lệ. Các mũi tên chỉ từ phương thức
tới lớp ngoại lệ. Cả hai phương pháp isValid và save trong hình biểu thị (có thể)
ném ra một ngoại lệ kiểu java.rmi.RemoteException.
RemoteAddress
isValid():boolean
save():boolean

<>

java.rmi.RemoteException
<>

Biểu diễn phương thức ném ra một ngoại lệ
- Ghi chú (Note)
Ghi chú đi kèm theo lược đồ UML cung cấp thông tin bổ sung cho một biểu
tượng chẳng hạn như lời dẫn giải, các ràng buộc hoặc mã trình. Nói chung, ghi chú

- 11 -

có thể gán với bất kỳ thành phần nào của lược đồ trong bất kỳ lược đồ UML nào.
Chi chú biểu diễn bằng hình chữ nhật gấp góc và được gắn vào bất kỳ thành
phần nào của lược đồ UML bằng một đường nét đứt. Ví dụ sau đây cho thấy ghi
chú được gắn với thuộc tính của một lớp.
Customer

Unique system
generated ID

customerID : Integer

Ghi chú cung cấp bổ sung thêm thông tin
- Khái quát hóa (Generalization)
Khái quát hóa được sử dụng để miêu tả khái niệm thừa kế trong hướng đối
tượng khi có một lớp cơ sở với hành vi thông thường và mỗi lớp có nguồn gốc của
nó có chứa hành vi / chi tiết cụ thể.
Trong hình, mũi tên rỗng đầu chỉ từ lớp con Shark/Whale đến lớp cha
Fish thể hiện quan hệ khái quát hóa.
Fish

Shark

Whale

- Giao diện (Interface)
Giao diện là tập hợp các thao tác được sử dụng để chỉ ra các dịch vụ của một
lớp hay một thành phần. Mỗi giao diện thường mô tả một phần hành vi của lớp mà
thấy được từ bên ngoài. Giao diện chỉ định nghĩa đặc tả cấu trúc bên trong mà
không có cài đặt chúng. Giao diện thường không đứng một mình mà được gắn vào
lớp hay thành phần thực hiện giao diện.
Giao diện có thể được biểu diễn bằng hình chữ nhật giống như thiết lập lớp
với dòng “interface” trên tên của giao diện. Hình sau thể hiện giao diện với tên là
VisitorInterface
<>
VisitorInterface
visit()
getOrderTotal():double

- 12 -

- Hiện thực hóa (Realization)
Hiện thực hóa là quan hệ giữa hai sự mô tả của cùng một phần tử mô hình –
giữa đặc tả và cài đặt của nó, nhưng tại những mức trừu tượng khác nhau. Hiện thực
hóa được sử dụng để biểu diễn cho sự cài đặt của một giao diện.
Trong cả hai hình sau, lớp OrderVisitor thực hiện cài đặt giao diện đã
được khai báo bởi VisitorInterface (Java) interface.
<>
VisitorInterface

OrderVisitor

visit()
getOrderTotal():double

visit()
getOrderTotal():double

OrderVisitor

visit()
getOrderTotal():double

- Phụ thuộc (Dependency)
Quan hệ phụ thuộc biểu diễn mối quan hệ ngữ nghĩa giữa hai hoặc nhiều
phần tử mô hình, trong đó việc thay đổi của thành phần đích có thể đòi hỏi sự thay
đổi của thành phần nguồn.
Lớp Order trong hình thực hiện phương thức execute của lớp DBUtil để
thực hiện truy vấn SQL và do đó phụ thuộc vào nó.
DBUtil
Order
execute()

- 13 -

- Lớp kết hợp (Class Association)
Lớp kết hợp quy định các mối liên hệ cấu trúc giữa các lớp. Khái niệm về
tính nhiều trình bày sau đây có quan hệ rất chặt chẽ với lớp kết hợp.
 Tính nhiều (Multiplicity)
Khái niệm tính nhiều được sử dụng để chỉ ra số lượng thể hiện của một lớp
có quan hệ với thể hiện của lớp khác. Bảng sau liệt kê các giá trị khác nhau có thể
được sử dụng để cho biết tính nhiều.
Tính nhiều
1
0..1
*
0..*
1..*

Ý nghĩa
Không nhiều hơn một
Không hoặc một
Nhiều
Không hoặc nhiều
Một hoặc nhiều

 Điều khiển được (Navigability)
Khi lớp A chứa thông tin cần thiết thuộc phạm vi của lớp B, khi đó điều
khiển là từ lớp A tới lớp B. Nói cách khác, lớp A biết lớp B nhưng không phải
ngược lại.
Trong hình, một thể hiện của lớp LogAbstraction chứa đối tượng
LoggerBridge và có thể đạt được quyền điều khiển nó trực tiếp. Do đó đối tượng
LoggerBridge chịu điều khiển từ thể hiện LogAbstraction.
LogAbstraction
bridge:LoggerBridge

LoggerBridge

logList()

 Hợp thành (Composition)
Lớp A chứa lớp B. Phát biểu này thể hiện quyền sở hữu mạnh của lớp A lớp toàn thể và lớp B - lớp bộ phận. Nói cách khác, lớp bộ phận không có ý nghĩa
tồn tại nếu không có lớp toàn thể.
Trong hình:
- Một chi tiết đơn hàng là một phần của một đơn đặt hàng.
- Một chi tiết đơn hàng không thể tồn tại mà không có một đơn đặt hàng.

- 14 -

LineItem

Order
Consists of
1

Part of

1..*

 Kết tập (Aggregation)
Quan hệ này thấp hơn quan hệ hợp thành. Lớp toàn thể có vai trò quan trọng
hơn lớp bộ phận nhưng không giống như trường hợp của quan hệ hợp thành, lớp bộ
phận có thể tồn tại mà không cần có lớp toàn thể.
Trong hình:
- Cầu thủ là bộ phận của đội bóng
- Cầu thủ có thể tham gia vào nhiều đội khác và vì thế, khi một đội
bị giải thể, cầu thủ vẫn còn.

Player

Team
Consists of

*

Part of

1..*

1.2.3 Lược đồ trình tự (Sequence Diagrams)
Là một dạng biểu đồ tương tác (interaction), biểu diễn sự tương tác giữa các
đối tượng theo thứ tự thời gian. Nó mô tả các đối tượng liên quan trong một tình
huống cụ thể và các bước tuần tự trong việc trao đổi các thông báo (message) giữa
các đối tượng đó để thực hiện một chức năng nào đó của hệ thống.
- Đối tượng (Object)
Đối tượng trong biểu đồ được biểu diễn bằng hình chữ nhật, trong hình chữ
nhật là tên của nó. Hình sau biểu diễn đối tượng Controller.
:Controller

- 15 -

- Thông điệp (Message)
Thông điệp được vẽ bằng mũi tên đóng đi từ chu kỳ sống của đối tượng này
đến chu kỳ sống của đối tượng khác. Trên mũi tên là tên thông điệp. Mỗi thông điệp
là biểu diễn một đối tượng gọi hàm của đối tượng khác. Khi định nghĩa thao tác cho
lớp sau này thì mỗi thông điệp sẽ trở thành thao tác. Hình sau biểu diễn thông điệp
save:

save()

- Thông điệp phản thân (Self Call)

Một đối tượng còn có thể gửi thông điệp đến chính nó. Các thông điệp
này gọi là phản thân, nó chỉ ra rằng đối tượng gọi chính thao tác của mình.
Hình sau biểu diễn thông điệp phản thân createSQL:
createSQL()

Ví dụ tạo ra một lược đồ mẫu với các chức năng sau đây, bằng cách sử dụng
các biểu tượng khác nhau của lược đồ trình tự đã được trình bày ở trên.
 Một người sử dụng Internet nhập dữ liệu vào một mẫu đăng ký trực
tuyến và gửi đi.


Tất cả các thông tin của người dùng đầu tiên được đối tượng
Controller tiếp nhận.



Đối tượng Controller tạo ra một đối tượng Account với các dữ
liệu được gửi bởi người sử dụng.



Đối tượng Account được tạo ra và sử dụng một đối tượng
DBManager lưu dữ liệu vào cơ sở dữ liệu.

- 16 -

: Controller

: Account

: DBManager

An object
1: Account()
Online user enters the
data in the account
registration form and
submits
Message to a
different object

2: Save()

3: createSQL()
Self method
call
4: DBManager()

5: executeSQL(strSQL:String)

Chương II. CÁC MẪU THIẾT KẾ KIẾN TRÚC PHẦN MỀM TRONG JAVA
2.1 Mẫu khởi tạo
2.1.1 Factory Method
- Vấn đề đặt ra
Các framework thường sử dụng các lớp trừu tượng để định nghĩa và duy trì
mối quan hệ giữa các đối tượng. Một framework thường đảm nhiệm việc tạo ra các

- 17 -

đối tượng hoàn chỉnh. Việc xây dựng một framework cho ứng dụng mà có thể đại
diện cho nhiều đối tượng tài liệu cho người dùng. Có hai loại lớp trừu tượng chủ
chốt trong framework này là lớp ứng dụng và tài liệu. Cả hai lớp đều là lớp trừu
tượng, và trình khách phải xây dựng các dẫn xuất, các lớp con để hiện thực hoá, tạo
ra đối tượng phù hợp với yêu cầu của ứng dụng. Chẳng hạn để tạo ra một ứng dụng
Drawing, chúng ta định nghĩa một lớp DrawingApplication và một lớp
DrawingDocument. Lớp ứng dụng chịu trách nhiệm quản lý tài liệu và chúng ta sẽ
tạo ra chúng khi có nhu cầu.
- Định nghĩa Factory Method
Factory Method là một giao diện cho việc tạo ra một đối tượng, nhưng để
cho lớp dẫn xuất quyết định lớp nào sẽ được tạo.Factory method để cho một lớp trì
hoãn sự thể nghiệm một lớp con.
- Sơ đồ UML
Creator
Product

FactoryMethod()
AnOperation()

ConcreteProduct

ConcreteCreator

product = FactoryMethod()

return new ConcreteProduct

FactoryMethod()

Product (Page)
- Định nghĩa giao diện của các đối tượng mà Factory Method tạo ra.
ConcreteProduct (SkillsPage, EducationPage, ExperiencePage)
- Cài đặt giao diện Product.
Creator (Document)
- Khai báo Factory Method mà trả về một đối tượng của kiểu Product. Sự
kiến tạo này cũng có thể định nghĩa một cài đặt mặc định của Factory Method trả về
một đối tượng ConcreteProduct mặc định.
- Có thể gọi Factory Method để tạo ra một đối tượng Product.
ConcreteCreator (Report, Resume)
- Chồng lên Factory Method để trả về một thể nghiệm của một

- 18 -

ConcreteProduct.
2.1.2 Singleton
- Vấn đề đặt ra
Ta hãy xem xét về một đối tượng quản lý tài nguyên trong các ứng dụng.
Mỗi ứng dụng có một bộ quản lý tài nguyên, nó cung cấp các điểm truy cập cho các
đối tượng khác trong ứng dụng. Các đối tượng (ta gọi là đối tượng khách) có thể
thực hiện lấy ra từ bộ quản lý tài nguyên những gì chúng cần và thay đổi giá trị nằm
bên trong bộ quản lý tài nguyên đó. Để truy cập vào bộ quản lý tài nguyên đối
tượng khách cần phải có một thể nghiệm của bộ quản lý tài nguyên, như vậy trong
một ứng dụng sẽ có rất nhiều thể nghiệm của bộ quản lý tài nguyên được tạo ra.
- Định nghĩa
Singleton là mẫu thiết kế nhằm đảm bảo chỉ có duy nhất một thể nghiệm và
cung cấp điểm truy cập của nó một cách thống nhất toàn cục.
- Sơ đồ UML
Singleton
instance : Singleton
Singleton()
Instance() : Singleton

Singleton (LoadBalancer)
- Định nghĩa một thao tác tạo thể nghiệm cho phép đối tượng khách truy
nhập đến thể nghiệm đồng nhất của nó như một thao tác của lớp.
- Chịu trách nhiệm cho việc tạo ra và duy trì thể nghiệm đồng nhất của chính
nó.
2.1.3 Abstract Factory
- Vấn đề đặt ra
Chúng ta có thể để ý thấy trong các hệ điều hành giao diện đồ hoạ, một bộ
công cụ muốn cung cấp một giao diện người dùng dựa trên chuẩn look-and-feel,
chẳng hạn như chương trình trình diễn tài liệu Microsoft Office PowerPoint. Có rất
nhiều kiểu giao diện look-and-feel và cả những hành vi giao diện người dùng khác
nhau được thể hiện ở đây như thanh cuộn tài liệu (scroll bar), cửa sổ (window), nút