Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

Bài 5: Mối quan hệ liên kết (association)

5.1 Mở đầu
Bài giảng đề cập đến mối quan hệ rất quan trọng giữa các lớp – quan hệ liên kết. Quan hệ liên kết là phương tiện hữu
ích trong công nghệ phần mềm từ nhiều năm nay. Phương pháp hướng đối tượng phát triển đã đưa vào nhiều khái niệm
mới như vai trò (role), tổng hợp (composition), lớp liên kết, quan hệ liên kết phân loại. Chúng ta sẽ thấy quan hệ
liên kết và các khái niệm liên quan cho phép định nghĩa và mô tả một cách ngắn gọn nhiều tính chất của miền vấn đề.

5.2 Kết nối và quan hệ liên kết


Một trong các tính chất cơ bản đề cập trong trong phần bài giảng về đối tượng và lớp đó là khái niệm cấp (arny), đó là
số đối tượng được kết nối với nhau trong quan hệ nhiều chiều. Mối liên hệ kết nối n đối tượng (không nhất thiết là
thành viên của một lớp) gọi là mối kết nối cấp n; trường hợp đặc biệt khi n=2 gọi là kết nối đôi (binary).

Mối kết nối có tên tương ứng với mối quan hệ giữa các thực thể. Đối với kết nối đôi (binary), tên được đặt trên đường
thẳng nối hai đối tượng và nó nằm cách đều hai đối tượng đó. Nhìn từ khía cạnh lập trình, mối kết nối được thực hiện
bằng que chỉ (pointer) bắt đầu từ một đối tượng chỉ sang một đối tượng khác.

Nhóm các mối kết nối với cấu trúc chung và có chung ý nghĩa được mô hình ở bằng quan hệ liên kết (association), gọi
tắt là mối liên kết , cũng giống như nhóm đối tượng với cấu trúc chung và cùng ý nghĩa được mô hình bằng lớp; tên
của quan hệ liên kết được đặt tương ứng với mối kết nối. Bằng cách đó mối kết nối đó là sự xuất hiện của quan hệ liên
kết . Hình 1 cho thấy mối kết nối làm việc trong sơ đồ đối tượng (sơ đồ (a)) và tương ứng với nó là quan hệ liên kết
trong sơ đồ lớp (sơ đồ (b)).
: Person : Person : Person
name = ”Kasia” name = ”Ewa” name = ”Jasio”
(a)
works for works for works for

: Firm : Firm

kind = ”marketing” kind = ”services”

Objects and links on an


object diagram

Person
name

works for
(b)

Firm
kind

Classes and association on


a class diagram

Hình 1. Kết nối và quan hệ liên kết .

Trong ngôn ngữ UML ký hiệu hình tam giác đen được sử dụng để dánh dấu chiều khi đọc tên mối kết nối đôi. Ký hiệu
đó không bắt buộc – nếu nó không được sử dụng, chúng ta sẽ đọc theo quy ước „từ trái sang phải” i từ trên xuống
dưới. Trên Hình 2 tam giác được sử dụng gây nên sự thay đổi hướng khi đọc tên mối liên kết : nhân viên làm việc cho
hãng chứ không phải là ngược lại hãng làm việc cho nhân viên. Nguyên tắc đó cũng được sử dụng trong trường hợp
mối kết nối.

works for
Company Person

Hình 2. Xác định chiều khi đọc kết nối nhờ ký hiệu tam giác.
Tên của mối liên kết không bắt buộc trong trường hợp, khi giữa hai lớp chỉ có một mối liên kết và mối quan hệ này
được suy ra từ tên của các lớp nằm trong mối quan hệ .Ví dụ trên Hình 3 cho thấy tên của lớp gợi ý rằng nhân viên
được tuyển vào hãng. So sánh sơ đồ trên Hình 2 và 3 ta thấy rằng tên của mối liên kết được suy ra từ ý nghĩa thực. Vì
vậy chúng ta nên đặt tên cho các mối liên kết sao cho có thể hiểu ý nghĩa của nó một cách duy nhất.

1 1..*
Company Employee

Hình 3. Mối liên kết không tên nối hai lớp hãng và nhân viên.
Trong trường hợp giữa hai lớp có nhiều hơn một liên kết , đặt tên cho mối liên kết là bắt buộc (Hình 4).

* is a member *
Person Committee
1 is a chairman *

Hình 4. Hai mối liên kết nối lớp người và hội đồng.
Độ lớn của quan hệ liên kết
Ngoài tên gọi, thông tin cơ bản về mối liên kết đó là độ lớn của nó. Đối với liên kết đôi nó xác định số đối tượng của
một lớp có thể kết nối với một đối tượng khác trong lớp đó hoặc trong lớp khác. Thông tin đó thường được ghi bằng
hai dãy ký tự đánh dấu sổ lượng nhiều nhất và ít nhất các đối tượng kiểu đó. Độ lớn được ghi sau mỗi mối liên kết .
Trên Hình 5 đối với mối quan hệ nối lớp A và B, độ lớn xác định”
• Số lượng lớn nhất và nhỏ nhất các đối tượng của lớp B có thể kết nối với một đối tượng của lớp A, ở đây được
ký hiệu bởi A –> B: min, max; hai giá trị này được ghi cạnh lớp B;
• Số lượng lớn nhất và nhỏ nhất các đối tượng của lớp A có thể kết nối với một đối tượng của lớp B, ở đây được
ký hiệu bởi B –> A: min, max; hai giá trị này được ghi cạnh lớp A;

(a)

A A A A A A
1,2

B B B
0..1

A B: min = 0, max = 1 B
B A: min = 1, max = 2

(b)

A A A A A A
2,3

B B B
1..3

A B: min = 1, max = 3 B
B A: min = 2, max = 3

Hình 5. Xác định độ lớn của mối liên kết


Ví dụ, trên hình (a) một đối tượng lớp A có thể kết nối với 0 hoặc 1 đối tượng lớp B (đượcghi cạnh lớp B), còn một đối
tượng của lớp B nối với 1 hoặc 2 đối tượng lớp A (được ghi cạnh lớp A).
Ví dụ độ lớn mối liên kết đượđánh dấu trong UML được ghi trên Bảng 1

Độ lớn ví dụ Ý nghĩa
trong UML

1 1
1..* 1, 2, 3, ...
2..* 2, 3, 4, ...
3..5 3, 4, 5
2, 4, 18 2, 4, 18
không có Số lượng không được xác định
0..1 hoặc nó bằng 1
0..* 0, 1
* 0, 1, 2, ...
0, 1, 2, ...
Bảng 1. Ký hiệu độ lớn mối liên kết trong ngôn ngữ UML
Chúng ta để ý rằng khi độ lớn không xác định, điều đó có nghĩa là giá trị của nó bằng 1 hoặc nó còn chưa được định
nghĩa, điều này được cho pháp trong giai đoạn đầu khi lạpp mô hình. Tuy vậy nói chung chúng ta nên sử dụng độ lớn
bằng 1 khi mà nó đã được xác định.
Bốn sơ đồ ví dụ mô tả độ lớn của mối liên kết được biểu diễn trên Hình 6:
• Sơ đồ (a) – mỗi nước chỉ có một thủ đô duy nhất; mỗi thủ đô chỉ là thủ đô của một nước;
• Sơ đồ (b) – hãng tuyển một số lượng tùy ý nhân viên; hoặc có thể không tuyển ai cả; nhân viên làm việc chỉ ở
một hãng;
• Sơ đồ (c) – người có thể nhưng không bắt buộc có địa chỉ; có thể có nhiều người có chung một địa chỉ;
• Sơ đồ (d) – trong hãng có ít nhất một nhân viên; mỗi nhân viên chỉ làm việc cho một hãng.
1 1
(a) Country Capital

1 *
(b) Company Employee

0..* 0..1
(c) Person Address

works for
(d) Company Person
1 1..*

Hình 6. Ví dụ sơ đồ chứa độ lớn mối liên kết

Vai trò của mối liên kết


Thông tin dùng để xác định mối liên kết đó là tên của các vai trò (roles). Vai trò xác định hàm, mà lớp đảm đương
trong mối liên kết , nó xác định đường nối để đi đến đích. Ví dụ, trên Hình 7 vai trò hãng nhận việc xác định hướng tìm
kiếm bắt đầu từ lớp Người đến các đối tượng nối với nó trong lớp Hãng. Chúng ta nhận được kết quả: người.hãng nhận
việc xác định tập các hãng tuyển nhận nhân viên đang xét.

* subordinate
* works for 1..*
Company Person
employer employee
0..1 boss

Hình 7. Ví dụ vai trò của mối quan hệ liên kết


Định nghĩa vai trò của mối liên kết là không bắt buộc. Tuy vậy trong trường hợp đối tượng trong cùng một lớp nối với
nhau (kết nối recussion) và tương ứng với nó liên kết recussion, vai trò cần phải cần phải định nghĩa, dùng ký hiệu tam
giác đen. Ví dụ trên Hình 7 mối liên kết nối lớp Người với bản thân nó có hai vai trò: Giám đốc và Nhân viên.
Vai trò (một hoặc nhiều) có thể được sử dụng như tên của mối liên kết , dùng để định nghĩa mối liên kết . Nhiệm vụ là
phải xây dựng sơ đồ thật đơn giản, vì vậy trong sơ đồ không nên sử dụng đồng thời cả tên và vai trò của mối liên kết .
Sơ đồ trên Hình 7 mối liên kết giữa lớp Hãng và Người được mô tả chỉ bằng tên gọi hoặc một trong các vai trò của nó
(ví dụ Người giao việc). Ngoài ra trong thực tế, nhiều khi xác định vai trò (một hoặc hai) dễ hơn là tìm một định nghĩa
ngắn gọn mô tả đặc tính của mối liên hệ giữa các lớp hoặc tìm tên mối liên kết .

Các thuộc tính của mối liên kết


Đối với mối liên kết , cũng giống như lớp, có thể định nghĩa các thuộc tính mô tả nó, gọi là thuộc tính của mối liên kết .
Trong ngôn ngữ UML thuộc tính mối liên kết được đặt trong một lớp đặc biệt tên là lớp liên kết , được nối với với
quan hệ liên kết bằng đường rời. Ngoài thuộc tính, lớp liên kết cũng như các lớp khác, có thể chứa các mối liên kết ,
phương pháp,...
Ví dụ lớp liên kết trên Hình 8 đó là lớp Tuyển nhân viên – lớp này cất giữ thông tin về vị trí công tác của người chịu
trách nhiệm tuyển nhân viên, về mức lương mà người đó được nhận ở vị trí đó.
Person employs Company
surname 1..* 0..1 name
boss personal id addres
0..1
address
* Employment
salary
position

Performance rating
rating

Hình 8. Sơ đồ chứ lớp liên kết


Nếu lớp liên kết không chứa phương pháp hoặc quan hệ liên kết , tên của nó có thể bỏ qua với mục đích nhấn mạnh
rằng, đó không phải là lớp với đầy đủ ý nghĩa của nó (Hình 9).

File
*

accessible to access

*
{ access means:
User reading or
reading-writing }

Hình 9. Sơ đồ lớp không tên


Chúng ta chỉ nên định nghĩa cho lớp các thuộc tính cố định. Để có thể quyết định đặt thuộc tính ở đâu - ở lớp liên kết
hay ở một lớp „bình thường” khác chúng ta nên đặt câu hỏi: chuyện gì sẽ xảy ra nếu số thành viên của mối liên kết
tăng? Trong trường hợp đó thuộc tính trở thành thuộc tính của mối liên kết chứ không phải là thuộc tính của lớp. So đồ
trên Hình 10 cho thấy cách đặt thuộc tính không hợp lí, bởi vì sau khi đổi độ lớn của mối liên kết tử nhiều đói tượng
sang nhiều đối tượng bắt buộc phải thay đổi thuộc tính Mức lương và Chức vụ, nhược điểm này không có trong sơ đồ
trên Hình 11.

Person works for Company


surname 1..* 0..1 name
personal id address
address
salary
position

Hình 10. Phân chia thuộc tính một cách không năng động.

Person works for Company


surname 1..* 0..1 name
personal id address
address

Employment
salary
position

Hình 11. Phân chia thuộc tính một cách khác năng động hơn.

Liên kết có hướng


Trên sơ đồ UML nhờ mũi tên có thể đánh dấu hướng tìm kiếm mối liên kết đã cho.Mối liên kết kiểu đó gọi là mối liên
kết có hướng. Trong trường hợp này, ở khía cạnh thực hiện, liên kết được định nghĩa theo một chiều. Ví dụ trên Hình
12 có thể đi từ các đối tượng lớp Đặt hàng đến các đối tượng lớp khách hàng, trong khi đó đi theochiều ngược lại là
không cho phép. Nói cách khác có thể xây dựng được biểu thức đặt hàng.khách hàng nhưng không thể xây dựng biểu
thức khách hàng. đặt hàng. Nhìn từ khía cạnh thực hiện, điều đó có nghĩa là các đối tượng của lớp Đặt hàng sẽ có
thuộc tính để nhớ tên đối tượng của lớp Khách hàng, trong khi tìm kiếm theo hướng ngược lại nói chung không thực
hiện được.

Order
order date Client
* 1 surname
is it paid
total amount address
send () reliability ()
close ()
1

Orders’ element
* 1
quantity Product
price
is it sent

Hình 12. Sơ đồ với mối liên kết có hướng


Cần nhấn mạng rằng, xác định hướng của mối liên kết thưừong được thực hiện trong pha thiết kế, chứ không phải
trong lúc phân tích, nó phụ thuộc vào các câu hỏi đặt ra cho hệ thống thông tin.

Sơ đồ ví dụ các lớp
Hình 13 biểu diễn một sơ đồ ví dụ các lớp phù hợp với các yêu cầu sau đây của khách hàng:
• Hệ có nhiệm vụ lưu trữ thông tin về nhân viên (trong đó có giáo sư), sinh viên và các môn học.
• Môn học có thể nằm trước các môn học khác và bản thân nó có thể nằm sau các môn học khác.
• Mỗi môn học phải chứa ít nhất một bài giảng.
• Mõi bài giảng chỉ có thể là thành phần của một môn học.
• Cần phải lưu trữ thông tin, mỗi sinh viên tham gia vào các môn học nào. Một sinh viên có thể ghi tên học
nhiều môn (ít nhất một môn). Trên một môn học có thể có nhiều sinh viên ghi tên (ít nhất là một sinh viên)
• Mỗi môn học có một giáo sư hướng dẫn. Một giáo sư có thể dạy nhiều môn; cũng có thể không dạy môn nào
cả

Person

enlisted in
Student Employee
previous 1..*
0..1
* Course
next 1 Professor
includes prowadzacy 1
1..*
1..*

Lecture
*

Hình 13. Ví dụ sơ đồ lớp

Thừa kế mối liên kết


Liên kết , cũng giống như các tính chất khác của lớp (thuộc tính, phương pháp), có thể thừa kế cho các lớp con. Để có
thể biểu diễn vấn đề này chúng ta hãy nghiên cứu sơ đồ trên Hình 14(a), ở đây hai mối liên kết asoc1 i asoc2 nối lớp K
với lớp K2 và K3, là các lớp con của lớp K1. Để có thể sử dụng cơ chế thừa kế, hai mối liên kết này có thể thay thế
bằng một mối liên kết đi từ K đến K1 (Hình 14(b)), các mối liên kết trên sơ đồ (a) phải thỏa mãn ít nhất hai điều kiện
đầu tiên trong số ba điều kiện sau đây:
1. Phải có cùng ý nghĩa
2. Phải có chung một cấu trúc, có nghĩa là phải có cùng số lượng thuộc tính hoặc cùng lớp liên kết : K
3. Phải nối lớp K với tất cả các lớp con của K1, trong trường hợp độ lớn của các mối liên kết khác nhau cần phải
định nghĩa các giới hạn tương ứng.

K1

association
K1
K2 K3

association_1
association_2 K2 K3 K
K

(a) (b)

Hình 14. Sơ đồ thừa kế mối liên kết


Ví dụ trên Hình 15, 16 và 17 biểu diễn vấn đề được đề cập ở điều kiện cuối (trong các điều kiện nêu trên): hai mối liên
kết được thuyết trình bởi với độ lớn khác nhau trên Hình 15, nối lớp Buổi hội thảo với lớp Khách mời và lớp Khách
thường kỳ được thay thế trên Hình 16 bởi một mối liên kết được thuyết trình bởi nối Buổi thảo luận với Bài thuyết
trình. Phù hợp với giả thiết rằng trên một buổi hội thảo có ít nhất một bản thuyết trình, vì vậy độ lớn của mối liên kết
từ lớp Bài thuyết trình là 1..*; tương tự đối với đầu thứ hai của mối liên kết . Chúng ta chú ý rằng độ lớn của mối liên
kết , nói chung được suy ra từ tình huống trong sơ đồ, tuy vậy từ sơ đồ trên Hình 16 chúng ta không thể suy ra số bài
thuyết trình được trình bày trên mỗi hội thảo. Thông tin này được cho vào sơ đồ bằng cách khác, ví dụ bằng cách định
nghĩa các giứoi hạn (Hình 17).

Paper
{abstract}

title
authors [1..*]

Session
name
0..1
Invited Regular presented at date
paper paper 1..* 0..1
1
mark

Paper/Session
hour

presented at

Paper/Session
hour

Hình 15. Mối liên kết được thuyết trình bởi nối lớp buổi thuyết trình với các lớp dưới
Paper/Session
hour
Paper
{abstract}
1..*
title
authors [1..*] presented at

0..1

Session
name
Invited Regular date
paper paper
mark

Hình 16. Mối liên kết thuyết trình nối lớp Buổi thuyết trình với lớp trên.

{during each session, at least


one regular paper and
maximally one invited paper
could be presented}
Paper/Session
hour
Paper
{abstract}
1..*
title
authors [1..*] presented at {regular paper may not be
presented during any session}
0..1

Session
name
Invited Regular date
paper paper
mark

Hình 17. Các giới hạn còn thiếu trong Hình 16 được định nghĩa thêm
Tình huống sẽ khác đi nếu như các mối liên kết không những chỉ có ý nghĩa và cấu trúc giống hệt nhau, mà còn có
cùng độ lớn. Ví dụ sơ đồ chứa các mối quan hệ này được biểu diễn trên Hình 18(a); sơ đồ tương đương được biểu diễn
trên hình 18(b). Dễ dàng có thể đế ý rằng, trong trường hợp này không cần phải định nghĩa giới hạn liên quan đến độ
lớn của mối quan hệ.

Vehicle Company
1

owns

Car Truck
Samochód
* *
purchase date
is owned by is owned by
*

Vehicle

purchase date purchase date

1 1

Company
Firma Car Truck

(a) (b)

Hình 18. Ví dụ thừa kế mối liên kết trong trường hợp độ lớn của mối quan hệ bằng nhau
Mối liên kết dẫn xuất (derivative asociation)
Liên kết dẫn xuất đó là mối liên kết , mà sự tồn tại của nó được suy ra từ các mối liên kết khác. Chúng ta để ý rằng
phù hợp với định nghĩa này, lien kết dẫn xuất không đem lại một thông tin mới nào cả. Vì vậy để làm đơn giản hóa sơ
đồ chúng ta không nên đánh dấu các mối liên kết loại này, trừ khi sự đánh dấu nó trên sơ đồ có ích lợi gì đó, ví dụ rút
ngắn đường tìm kiếm. trong trường hợp đó yêu cầu mối liên kết phải được đánh dấu rõ ràng là liên kết dẫn xuất, sử
dụng dấu gạch chéo trước tên mối liên kết .
Vấn đề nêu trên được biểu diễn trên Hình 19: nếu một người được mô hình hóa bởi lớp Người, sống ở thành phố mà
người đó làm việc, thì một trong hai mối liên kết : sống ở (sơ đồ (a)) hoặc làm việc ở (sơ đồ (b)) là liên kết dẫn xuất.
Tình huống này sẽ thay đổi, khi người đó không làm việc, có nghĩa là độ lớn của vai trò người giao việc của lớp Hãng
sẽ là 0..1, không phải đúng là 1.

1..* /lives in 1
Person City
1..* 1

(a) works for

1 employer
is in
Company
1..*

1..* lives in 1
Person City
1..* 1

works for
(b)

1 employer
/is in
Company
1..*

Hình 19. Ví dụ mối quan hệ dẫn xuất


Sự phát hiện ra các mối liên kết dẫn xuất có nhiệm vụ chính là để tăng tốc độ hoạt động của hệ thống thông tin, hành
động này được thực hiện ở pha thiết kế chứ không phải ở pha phân tích.

Cách thay thế lớp liên kết


Nếu môi trường thực hiện không cho phép định nghĩa lớp liên kết , trong pha thiết kế mỗi lớp liên kết và các mối quan
hệ liên quan đến nó phải chuyển thành các phần sơ đồ tương ứng, không chứa các lớp đó. Tiếc rằng cách giải quyết này
dẫn đến mất một phần thông tin, bởi vì mỗi mối quan hệ đôi (cùng các tính chất của lớp liên kết ) sẽ chuyển thành hai
mối liên kết không có quan hệ lẫn nhau. Hành động trên đây được thể hiện trên Hình 20, ở đây lớp liên kết K và mối
liên kết của nó (sơ đồ (a)) được thay đổi thành lớp thông thường và hai mối liên kết (sơ đồ (b)). Chúng ta hãy để ý
rằng, nếu x và y ký hiệu độ lớn của mối liên kết , bằng cách chuyền đổi này mối liên kết nhiều- đến-nhiều được thay
thể bằng hai mối liên kết một-đến-nhiều.
K1 x y
K2 K
a1
K1 1 y x 1 K2
a2
K
a1
a2

(a) (b)

Hình 20. Cách bỏ qua lớp liên kết (thay thế bằng lớp thông thường)
Phương pháp trình bày ở trên được biểu diễn trong HìnhHình 21. Chúng ta để ý rằng, do độ lớn của mối liên kết giữa
lớp Người và Hãng bằng 1 nên tồn tại một mối liên kết gián tiếp, vai trò dẫn xuất của người giao việc và mối liên kết
nối hai lớp này.

Person Company
1..* *

Employment
position
salary

1..* Employment * /employer

1
Person position Company
1 * 1..*
salary

Hình 21. Ví dụ cách bỏ qua lớp liên kết

Vai trò nhiều giá trị


Vai trò nhiều giá trị đó là vai trò, mà giới hạn trên của độ lớn mối liên kết (độ lớn của phần đuôi mối liên kết ) lớn hơn
1. Trên Hình 22 sự nhiều giá trị của vai trò r2 có nghĩa rằng mỗi đối tượng lớp K1 có liên kết với tập các đối tượng
lớp K2, độ lớn của r2 thông báo rằng độ lớn của tập đối tượng nói trên không bị giứoi hạn.

1 *
K1 r1 r2
K2

Hình 22. Vai trò nhiều giá trị


Nói chung đối với vai trò chúng ta công nhận một số nguyên tắc sau đây:
• Mỗi đối tượng chỉ xuất hiện một lần trong tập đối tượng mô tả vai trò; Hình 23(a).
• Tập đối tượng mô tả vai trò là tập không có thứ tự. Muốn sắp xếp các phần tử theo thứ tự chúng ta có thể
dùng lệnh {ordered} (Hình 23(a))
a

a
:K2
incorrect :K1
diagram

(a) :K2
a
correct
diagram :K1 a
:K2

* a 1..2
(b) K1 K2
{ordered}

Hình 23. Minh họa vai trò nhiều giá trị.


Tất nhiên giữa hai đối tượng có thể có nhiều hơn một mối kết nối (link), các mối kết nối đó phải có nọi dung khác
nhau, có thể nói cách khác mối kết nối là trường hợp cụ thể của mối liên kết (Hình 24).

works for

* 0..1

(a) Person Company


1 0..1
is a company manager

works for

(b) Nowak : Person IBM : Company

is a company manager

Hình 24. Ví dụ hai mối liên kết / kết nối nối các lớp/đối tượng giống nhau
Từ khía cạnh thực hiện vai trò nhiều giá trị tương ứng với tập hợp nối với một đối tượng của lớp nằm ở cuối mối liên
kết .

Giới hạn {bag}


Giống như những điều đã nói ở trên, chúng ta giả định rằng, mỗi đối tượng chỉ xuất hiện một lần trong tập đối tượng
mô tả vai trò. Nếu các đối tượng đó có thể xuất hiện nhiều lần, cần phảo sử dụng giới hạn {bag}; giới hạn này mặc dù
liên quan đến cả hai vai trò, nó được đánh dấu chỉ một trong hai đầu của mối liên kết . Trong ví dụ trên Hình 25, phần
(a) biểu diễn sơ đồ lớp chứa mối liên kết với giứoi hạn {bag}, còn phần (b) biều diễn sơ đồ các đối tượng tương ứng.
{bag}
Person Company
1..* *

(a) Employment
employment date
dissmisal date
position
salary

: Employment
01.01.1990
15.12.1995
X : Person ”programmer”
Y : Company
2000
(b)

: Employment
01.01.1998
NULL
”analyst”
5000

Hình 25. Ví dụ sử dụng giới hạn {bag}

Khuôn mẫu «history»


Khuôn mẫu «history» – giống như giới hạn{bag} – nó cho phép tạo nên nhiều mối kết nối giữa hai đối tượng. Khuôn
mẫu này được sử dụng trước hết để ghi lại các thay đổi theo thời gian. Ví dụ trong Hình 26 cho thấy ứng dụng
<<history>> để ghi chép quá khứ tuyển nhân viên trong hãng.
1..* *
Person Company
«history»
employer

(a) Employment
employment date
dissmisal date
position
salary

: Employment
01.01.1990
15.12.1995
(b) ”programmer” : Company
: Person
2000

: Employment
01.01.1998
NULL
”analyst”
5000

Hình 26. Ứng dụng khuôn mẫu «history»


Chúng ta có thể nhận được kết quả giống như kết quả sử dụng khuôn mẫu <<history>> hay{bag} bằng cách đưa vào
lớp trung gian, như trên Hình 27. Chúng ta để ý rằng, lớp trung gian Tuyển nhân viên cho phép tạo nên nhiều mối liên
kết giữa hai đối tượng của hai lớp Người và Hãng, tuy nhiên tác dụng này không nhìn thấy một cách rõ ràng.

Employment
1 * employment date 1..* 1
(a) Osoba dissmisal date Firma
position
salary

: Employment
01.01.1990
15.12.1995
”programmer”
2000

(b) : Osoba : Firma

: Employment
01.01.1998
NULL
”analyst”
5000

Hinh 27. Ứng lớp trung gian thay thế {bag} và «history»
Kết tập (Aggregation)
Kết tập là một loại liên kết đặc biệt, được sử dụng để mô hình hóa mối quan hệ một phần-tổng thể. Ví dụ của Kết tập là
mối quan hệ giữa động cơ và ô tô, mà động cơ đó là thành phần. Tiếc rằng chưa có một định nghĩa nhất quán cho mối
liên kết này; trường hợp cụ thể, P. Coad đưa ra ví dụ mối liên hệ gộp giữa lớp Hãng và lớp nhân viên, trong khi đó J.
Rumbaugh cho rằng Hãng không phải là gộp các nhân viên. Trong nhiều trường hợp quan hệ kết tập là tất nhiên,
nhưng trong nhiều trường hợp khác mối quan hệ đó không có thể định nghĩa rõ ràng, ngay cả trong trường hợp động cơ
và ô tô, bởi vì động cơ có thể bán như một thứ hàng hóa không liên quan đến bất kỳ ô tô nào. Ngoài ra câu hỏi có thể
đặt ra: chúng ta nghiên cứu một chiếc ô tô và một động cơ cụ thể hay một loại ô tô và một loại động cơ? Các nghi vấn
xung quanh khái niệm Kết tập còn có nguyên nhân là nó được sử dụng để giải thích một số giới hạn trongmô hình dữ
liệu. Ví dụ, sự giải thích phổ biến hiện tượng thừa kế nhiều lần đó là có thể sủ dụng Kết tập để thay thế, điều này là vô
nghĩa nếu nhìn từ khía cạnh mô hình khái niệm, tương tự khẳng định „mối quan hệ liên kết là không cần thiết vì chúng
ta có thể thay thế nó bằng thuộc tính”.
Ví dụ kết tập được biểu diễn trên Hình 28 (hình thoi rỗng đánh dấu Kết tập được đặt ở phía đối tượng-tổng thể, được
gọi kết tập ): Thành phần của lớp có thể bao gồm từ một đến 15 sinh viên, sinh viên có thể là thành viên của một số
lượng các nhóm tuỳ ý; đối với mỗi sinh viên thông tin trong thời gian nào sinh viên thuộc nhóm nào được lưu trữ.

* 1..15
Group Student

Student/Group
assigned since
assigned to

Hình 28. Ví dụ quan hệ kết tập


Kết tập dùng để mô hình mối quan hệ một phần – tổng thể, vai trò của mỗi thành viên trong quan hệ đó được xác định
một cách rõ ràng:
• Về đối tượng tổng thể chúng ta nói rằng nó „bao gồm”, „chứa”, v.v...;
• Về đối tượng thành phần chúng ta nói rằng nó là „thành viên của”, „nó thuộc”, v.v...
Để cho sơ đồ đơn giản tên cũng như vai trò của Kết tập bị bỏ qua. Trường hợp ngoại lệ, khi mà không có tên nào kể
trên hợp với nội dung của mối quan hệ giữa các thực thể trong miền vấn đề, mà chúng ta muốn nhấn mạnh sự tồn tại
một dạng liên kết mạnh, ví dụ như phép gộp, với mục đích propagation các phép toán (hãy xem ở mục tiếp theo).
Quan hệ kết tập có những tính chất quan trọng sau đây:
• Đó là mối quan hệ không đối xứng, có nghĩa là đối tượng không thể xuất hiện đồng thời như là tổng thể cũng
như là thành phần đối với đối tượng khác.
• Đó là mối quan hệ bắc cầu, có nghĩa là đối tượng lớp C là thành phần của đối tượng lớp B, đối tượng lớp B là
thành phần của đối tượng lớp A thì gián tiếp đối tượng lớp C cũng là thành phần đối tượng lớp A.
Trong các tài liệu nghiên cứu người ta định nghĩa các tiêu chuẩn giúp nhà phân tích có thể quyết định sử dụng
quan hệ kết tập hay sử dụng mối liên kết thông thường:
• Tiêu chuẩn tồn tại: thực thể - thành phần không thể tồn tại nếu không có thực thể - toàn phần;
• Tiêu chuẩn tồn tại: thực thể - thành phần không thể tồn tại nếu không có thực thể - toàn phần;
• Tiêu chuẩn xóa bỏ: Xóa bỏ thực thể - toàn phần dẫn đến xóa mội mối kết nối giữa nó và các thực thể -
thành phần;
• Tiêu chuẩn thành phần thật sự: thực thể - thành phần và thực thể - toàn phần có liên quan mật thiết ;
tiêu chuẩn này chúng ta sẽ nghiên cứu ở chương sau.
Quan hệ kết tập dùng để mô hình hóa các quan hệ giữa các thực thể trong miền vấn đề, trong nhiều trường
hợp cần phải sử dụng quan hệ kết tập ngay cả khi các tiêu chuẩn nêu trên không được thỏa mãn. Chúng ta sử
dụng quan hệ kết tập trong trường hợp tổng hợp phép toán (operation propagation), có nghĩa là nếu phép
toán được gọi trên tổng thể nó sẽ được tự động thực hiện trên tất cả các thưch thể thành phần. Ví dụ được
trình bày trên Hình 29, ở đây mũi tên với tên phép toán hãy đổi lịch chỉ rằng phép toán sẽ được tự động thực
hiện trên tất cả các phần của tổng thể, có nghĩa là cho tất cả các sinh viên trong nhóm.
Student
Group change plan
* 1..15
plan
plan

change plan change plan


Student/Group
assigned since
assigned to

Hình 29. Ví dụ tổng hợp phép toán

Quan hệ đệ qui (recursive)


Quan hệ đệ qui là trường hợp đặc biệt của quan hệ kết tập, khi đối tượng đối tượng toàn phần và đối tượng con là
thành viên của cùng một lớp. Ví dụ quan hệ đệ qui trên Hình 30(a): đối tượng lớp K có thể là thành phần của đối tượng
khác của lớp K, hoặc nó có thể chứa một đối tượng khác của lớp này. Hình 30(b) biểu diễn sơ đồ đối tượng nói đến
trong Hình 30(a).
Vì quan hệ kết tập biểu diễn mối quan hệ thành phần – tổng thể, cần phải chú ý đến độ lớn của nó, đặc biệt là với mỗi
độ lớn cần cho phép các mối kết nối không bắt buộc. Trên sơ đồ ở Hình 30 (a) mỗi đối tượng của lớp K có thể nhưng
không bắt buộc phải là tổng thể hoặc thành phần của một đối tượng khác của lớp này. Nếu có độ lớn nào đó được
chuyển từ không bắt buộc sang 1, sơ đồ sẽ sai. Để minh họa vấn đề này, chúng ta hãy nghiên cứu sự thay đổi trên cả hai
đầu của quan hệ gộp. Sơ đồ tượng ứng của lớp và các đối tượng liên quan được biểu diễn trên Hình 31 (a). Để chứng
minh sơ đồ không đúng, chúng ta hãy nghiên cứu hai đối tượng o1 và o3. Mối kết nối trực tiếp giữa hai đối tượng này
chứng tỏ rằng o1 là thành phần của o3. Nhưng từ tính chất bắc cầu, o1 xuất hiện như một tổng thể đối với o3 (o1 chứa
o2, o2 chứa o3, từ đó suy ra o1 chứa o3). Tương tự nhận xét này đúng cho mọi cặp đối tượng trong lớp K- từ đó suy ra
rằng mội đối tượng trong lớp K đồng thời là tổng thể và cũng là thành phần, điều đó trái với tính không đối xứng của
mối quan hệ gộp. Sơ đồ vì vậy không đúng; nói cách khác, với mỗi độ lớn phải cho phép số lượng kết nối tùy ý.

o1 : K

1
(a) K o2 : K
1

o3 : K

0..1
(b) K
1

1
(c) K
0..1

Hình 30. Quan hệ kết tập với ít nhất một độ lớn bằng 1
Từ chứng minh trên suy ra sơ đồ trên Hình 31(b) và 31(c) cũng không đúng.
Sơ đồ lớp và đi cùng nó sơ đồ đối tượng trong trường hợp, khi mà độ lớn của vai trò ở phía thành phần là đa đối tượng,
được biểu diễn trên Hình 32(a) và 32(b). Cũng như trên, cả hai vai trò đều phải có số lượng kết nối không bắt buộc.
:K

0..1
K :K :K :K
*

:K :K :K

(a) (b)

Hình 31. Quan hệ kết tập với độ lớn 0..1 và đa đối tượng
Hai sơ đồ ví dụ cho vấn đề nói đến trong Hình 32(a) được biểu diễn trên Hình 33: sơ đồ (a) cho biết rằng một phần có
thể tạo nên từ những thành phần khác, còn sơ đồ (b) biểu diễn trường hợp, khi mà thành phần của mỗi phòng trong
hãng lại là các phòng khác của hãng đó.

Część
nazwa 0..1
1 0..1
*
materiał Firma Oddział
wymiary
*
*

(a) (b)

Hình 32. Sơ đồ lớp của vấn đề nói đến trong HìnhHình 31 (a)
Hình 33 (a) minh họa trường hợp khi độ lớn của quan hệ kết tập là đa đối tượng. Trong trường hợp này mỗi đối tượng
của lớp K được tạo nên từ một số lượng tùy ý các đối tượng khác của lớp K và bản thân nó cũng có thể là thành phần
của một số lượng tùy ý các đối tượng khác của lớp K (Hình 34(b)).

:K

*
K
:K :K :K
*

:K :K :K

(a) (b)

Hình 33. Quan hệ kết tập rekursive với hai độ lớn đa đối tượng
Hình 34 biểu diễn ví dụ phức tạp hơn, sử dụng mối quan hệ kết tập rekursive. Sơ đồ (a) là mô hình chương trình máy
tính, nó bao gồm các khối chương trình, đó là các lệnh đơn giản hoặc các lệnh phức là tổng hợp các khối chương trình.
Sơ đồ (b) biểu diễn sơ đồ các biểu thức đại số, đó là: hằng số, biến đơn hoặc nó là liên kết của hằng số và biến nối với
nhau bởi phép toán. Chúng ta để ý rằng, trong ví dụ này độ lớn của quan hệ kết tập ở phía thành phần không cho phép
số lượng tùy ý – đó không phải là lỗi, bởi vì lớp biểu diễn thành phần có ít nhất một lớp con, mà nó không tham gia vào
quan hệ gộp.
Program
1

*
1..*
Blok
(a)

Instrukcja Instrukcja
złożona prosta
0..1

2-gi operand
1
1-szy operand 1
Człon

(b) *
Wyrażenie Zmienna Stała
operator binarny nazwa wartość
*

Hình 34. Ví dụ quan hệ đệ qui


Quan hệ kết tập và

Quan hệ kết tập và phép hợp thành (composition)


Nhiệm vụ cơ bản của Kết tập là mô hình hóa mối quan hệ thành phần – tổng thể xuất hiện giữa các thực thể của thế giới
thực. trong nhiều trường hợp Kết tập còn dùng để mô tả các mối quan hệ khác, ví dụ quan hệ “không thể tách rời” , với
nội dung tùy ý, không ngaọi trừ khả năng thành phần – tổng thể. Mối quan hệ không thể tách rời có nghĩa là sự tồn tại
của thực thể con sẽ không có ý nghĩa nếu thực thể bố không tồn tại – thực thể con được xét đến khi nó nằm trong mối
quan hệ với một thực thể bố nào đó, ví dụ người và bảo hiểm của người đó. Trong UML để mô hình hóa các trường
hợp đó, người ta đưa vào một dạng quan hệ kết tập mới gọi là quan hệ hợp thành.
Để có thể sử dụng phép hợp thành trong quá trình mô hình hóa, hai điều kiện sau đây phải được thỏa mãn:
• Chu kỳ sống của đối tượng thành phần phải chứa trong chu kỳ sống của đối tượng tổng thể; tiêu chuẩn: (a)
thực thể con không tồn tại nếu thực thể bố không tồn tại; (b) thực thể con sẽ bị xóa bỏ nếu thưch thể bố bị xóa
bỏ.
• Thực thể con bị xóa bỏ cùng thực thể bố, vì vậy thực thể con không thể nối với nhiều hơn một thực thể bố.
Quan hệ hợp thành được ký hiệu bằng hình thoi đen đặt ở phía lớp biểu diễn tổng thể. Cũng giống như quan hệ kết tập
thông thường, quan hệ hợp thành nói chung không có tên, vai trò,…Tuy vậy có các ngoại lệ. Ví dụ trong trường hợp ở
Hình 36, tên “có liên quan” nghe tự nhiên hơn là tên gọi dành cho quan hệ hợp thành (“là thành phần”, “chứa”,”bao
gồm”,v.v…).

0..1
Pracownik Ubezpieczenie
dotyczy

Hình 35. Ví dụ tên gọi của quan hệ hợp thành


Độ lớn giả định luôn bằng 1, vì vậy nó không được đánh dấu trên sơ đồ. Độ lớn được đánh dấu khi nó có giá trị 0..1,
trong trường hợp đối tượng của một lớp có thể là thành phần của nhiều lớp khác nhau (tất nhiên là không đồng thời).
Sơ đồ trên Hình 37 biểu diễn ví dụ gây nhiều tranh cãi khi sử dụng quan hệ hợp thành để định nghĩa đa giác như một
dãy điểm. Cách giải quyết này có ưu điểm lẫn khuyết điểm. Nhược điểm chính là một điểm có thể là đỉnh của nhiều đa
giác khác nhau. Vì vậy trong trường hợp quan hệ kết tập mỗi lần xóa đa giác phải kiểm tra đỉnh của nó có phải là đỉnh
của đa giác khác không.

3..*
Punkt
{ordered}

Wielobok
* Styl
1
kolor
czy wypełniony

Hình 36. Ví dụ sử dụng quan hệ hợp thành và quan hệ gộp


Hãy để ý rằng trong ví dụ này độ lớn của phép hợp ở phía tổng thể phải được đánh dấu 0..1 trong trường hợp, khi mà
các đối tượng của lớp Điểm không những là thành phần của lớp Đa giác mà còn là thành phần của lớp Đường thẳng.
Lúc đó cần phải đặt giới hạn {xor} cho cả hai quan hệ hợp.

Ủy quyền (delegation) – phương thức khác của thừa kế


Ủy quyền đó là ý tưởng thiết kế cấu trúc dữ liệu, cho phép một phép toán thực hiện trên một đối tượng có thể ủy quyền
cho một đối tượng khác. Ủy quyền có thể hiểu như là phương thức khác của cơ chế thừa kế, bởi vì trong trường hợp ủy
quyền chúng ta sẽ phải sử dụng cơ chế thừa kế động.

Chúng ta hãy phân tích ví dụ trên Hình 38, ở đây tập xếp (stack) được thực hiện nhờ định nghĩa danh sách (list). Trên
sơ đồ (a) lớp Stack là lớp con của lớp List, vì vậy nó thừa kế mọi tính chất của lớp List. Tuy thế tình huống này xảy ra
ngoài ý muốn, bởi vì Stack chỉ nên cho phép sử dụng các phép toán liên quan đến cấu trúc này, ví dụ push, pop, top,
v.v...chứ không nên cho phép sử dụng các phép toán của list. Lời giải khác được trình bày trên sơ đồ (b), ở đây lớp
Stack chứa thuộc tính nội dung dạng List – bằng cách đó đối tượng lớp Stack chứa đối tượng con thuộc lớp List, kết quả
là các hành động phục vụ đối tượng Stack một phần được chuyển sang đối tượng của lớp List. Nhìn từ góc độ thực
hiện, cách giải quyết này tương đương với việc sử dụng trong phương pháp push, pop i top các phương pháp của lớp
List. Tuy vậy đối tượng lớp Stack không có quyền sử dụng trực tiếp các phương pháp của lớp List (sơ đồ (a)).

Lista
...

ustaw na pierwszy
ustaw na następny
Stos
ustaw na ostatni zawartość
dodaj
pobierz top
usuń push
pop «instanceOf»

Lista
...
Stos ustaw na pierwszy
ustaw na następny
zawartość
ustaw na ostatni
top dodaj
push pobierz
pop usuń

(a) (b)

Hình 37. Ví dụ của ủy quyền


Mối liên kết phân loại (asocjacja kwalifikowana)

Ở mỗi đầu của mối liên kết có thể định nghĩa yếu tố phân loại, đó là tập các thuộc tính (ít nhất một phần tử), nhiệm vụ
của nó để nhận dạng các đối tượng của lớp đặt ở đầu thứ hai của mối quan hệ này. Mối liên kết , mà có xác định các
yếu tố phân loại, gọi là mối liên kết phân loại. Yếu tố phân loại được đặt trong hình chữ nhật nằm cạnh ký hiệu lớp.
Hình 39 cho thấy ví dụ sử dụng mối liên kết phân loại. Sơ đồ (a) biểu diễn hai lớp Thư mục và Tệp, nối với nhau bằng
quan hệ liên kết . Giả sử rằng, đối với lớp Tệp chúng ta định nghĩa giới hạn cho thuộc tính tên tệp, theo giới hạn này tên
các tệp trong cùng một thư mục phải phác nhau. Sơ đồ tương đương sử dụng mối liên kết phân loại được biểu diễn trên
hình (b), ở đây thông tin: mỗi tên xác định một cách duy nhất một tệp, được biểu diễn bằng:
• Yếu tố phân loại tên tệp ở phía Thư mục;
• Độ lớn 0..1 ở phía Tệp. Giới hạn dưới của độ lớn (0) có nghĩa lá cho phép giá trị của yếu tố phân loại, mà
không xác định một đói tượng nào.

1 * Plik
(a) Katalog
nazwa pliku

1 0..1
(b) Katalog nazwa pliku Plik

Hình 38. Ví dụ mối liên kết phân loại

Hình 39 cho thấy ví dụ yếu tố phân loại, mà thành phần của nó chứa nhiều hơn một thuộc tính. Yếu tố phân loại này là
tập hai thuộc tính {hàng, cột}, nó cho phép xác định một cách duy nhất hình vuông trong bảng được xây dựng từ 100
hình vuông.

1 100 Kwadrat
(a) Tablica
rząd
kolumna

Tablica rząd 1 0..1


(b) kolumna Kwadrat

{ tablica zawiera dokładnie


100 kwadratów }

Hình 39. Ví dụ yếu tố phân loại tạo nên bởi hai thuộc tính
Mối kêt hợp phân loại, cũng như mối liên kết khác, có thể có thuộc tính. Ví dụ, đối với mối liên kết trên Hình 41 và 42
chúng ta định nghĩa lớp Tài khoản lưu trữ thông tin về tài khoản. Để ý rằng, tên tài khoản xác định một cách duy nhất
chủ nhân của nó (Hình 40) hoặc các chủ nhân của nó (theo HìnhHình 41 tài khoản có thể có 3 chủ nhân), vì vậy thuộc
tính số tài khoản có thể coi là yếu tố phân loại. Yếu tố phân loại không bắt buộc ở phía Người có nghĩa là Ngân hàng có
thể có các số tài khoản tự do.
Bank Osoba
* *
(a) imię
nazwa nazwisko
Konto
nr konta
data założ.
{ do konta jest przypisana
dokładnie 1 osoba }

Bank Osoba
* 0..1
(b) nr konta imię
nazwa nazwisko

Konto
data założ.

Hình 40. Mối liên kết phân loại với độ lớn 0..1

Bank Osoba
* *
imię
(a) nazwa nazwisko
Konto
nr konta
data założ.
{ do konta są przypisane
co najwyżej 3 osoby }

Bank Osoba
* 0..3
(b) nr konta imię
nazwa nazwisko

Konto
data założ.

Hình 41. Mối liên kết với độ lớn 0..3


Nguyên nhân khiến chúng ta đưa thêm khái niệm liên kết phân loại vào miền mô hình khái niêm là:
• Từ phối cảnh khái niêm – liên kết phân loại thông báo rằng tồn tại một tập các thuộc tính, nhờ nó có thể xác
định được một nhóm các đối tượng.
• Từ phối cảnh thiết kế - liên kết phân loại cho thấy khả năng định nghĩa phần tử của mô hình bằng cách sử
dụng cấu trúc dữ liệu đặc biệt cho phép sự tìm kiếm có hiệu quả hơn. Ví dụ từ điển hoặc bảng các mối liên kết
, lưu trữ các cặp (yếu tố phân loại, tập đối tượng xác định bởi giá trị của yếu tố phân loại).

Liên kết n- ngôi

Liên kết n-ngôi đó là mối liên kết , mà sự xuất hiện của nó nối n đối tượng nằm nhiều nhất trong n lớp khác nhau:
Liên kết 3 ngôi nối 3 đối tượng, liên kết 4 ngôi nối 4 đối tượng. Liên kết n – ngôi được biểu diễn ở dạng hình thoi, từ
đó có các đường liền nối với các lớp, ngoài ra còn có các đường ngắt quãng nối với các lớp liên kết . Tên của mối liên
kết được đặt ở gần hình thoi. Tương tự như trong trường liên kết đôi, tên có thể bỏ qua, nếu tên có thể suy ra từ ngữ
cảnh, có nghĩa là suy ra từ tên của lớp và từ tính chất của lớpliên kết . Nếu lớp tham gia vào quan hệ liên kết nhiều
hơn một lần, có nghĩa là nó có thể xuất hiện nhiều hơn 1 vị trí trong mối liên kết , ví dụ lớp K1 trên Hình 43, lúc đó đối
với lớp này cần phải định nghĩa vai trò.

rola2
K1 rola1

K3
K2

Hình 42. Ví dụ liên kết 4-ngôi


Liên kết đôi với một số tính chất bổ xung, ví dụ có yếu tố phân loại, là trưuờng hợp đặc biệt của liên kết n – ngôi (n =
2). Liên kết đôi và liên kết 2 – ngôi là tương đương, không có sự khác biệt nào về nội dung, chỉ có khác nhau về cáh
biểu diễn.

Độ lớn của liên kết n-ngôi


Xác định độ lớn của liên kết n- ngôi không phải dễ dàng, như trong trường hợp liên kết đôi, ngoài ra mỗi tác giả đưa
ra một ý kiến khác nhau. Trong UML công nhận nguyên tắc sau đây, độ lớn của vai trò của một lớp (độ lớn ở một đầu
của liên kết ) xác định số lượng đối tượng của lớp này tham gia vào quan hệ với đối tượng của (n-1) lớp khác. Ví dụ,
liên kết 3 – ngôi nối lớp A, B và C, độ lớn của vai trò của lớp i C xác định số các đối tượng lớp C nối với các cặp đối
tượng lớp A và B. Để ý rằng nguyên tắc này là tổng quát hóa nguyên tắc được dùng đẻ xác định độ lớn mối liên kết
đôi. Tiếc rằng ngược lại với liên kết đôi, liên kết n - ngôi khó thực hiện.
Ví dụ minh họa trên Hình 44, liên kết n- ngôi nối hai lớp: Ban và Người, trong đó đối tượng Người xuất hiện trong hai
vai trò: trọng tài và vận động viên. Ngoài ra đối với mối liên kết này lớp liên kết Ghi tên được định nghĩa thêm với
mục đích để lưu trữ thông tin về các thuộc tính của nó.

mecz * sędzia
*
Zespół * Osoba
zawodnik

Zapis
data
stadion
gole gospodarzy
gole gości

Hình 43. Ví dụ liên kết 3 – ngôi cùng độ lớn và lớp liên kết

Cách thay thế liên kết n-ngôi


Sử dung liên kết n-ngôi có ý nghĩa khi để xác định mối kết nối n-ngôi cần phải có tất cả các đói tượng, có nghĩa là độ
lớn của tất cả các vai trò đều ở dạng đa đói tượng. Trong các trường hợp còn lại liên kết n – ngôi nên tahy thế bằng liên
kết đôi và lớp gián tiếp; phương pháp này dơn giản hơn trong khi thực hiện và nó cho phép sử dụng mọi tính chất của
liên kết đôi, ví dụ yếu tố phân loại. Tiếc rằng cách thay thế này dẫn đến mất một phần thông tin về liên kết n- ngôi
xuất hiện trong một nhóm đối tượng. Hình 45 minh họa cách thay thế liên kết n-ngôi thành một lớp đơn và n liên kết
đôi
K2

A K2

K1 K3
K1 A K3
a1
KA a2

a1 m1
a2
m1

Hình 44. Sơ đồ thay thế liên kết nhiều ngôi bằng liên kết đôi

Giao diện, phụ thuộc, thực hiện


Giao diện, đó là tên gọi tập các phép toán, định nghĩa một phần cách cư xử của phần tử của mô hình. Giao diện chứa
duy nhất tên phương pháp, nó không chứa phần thực hiện. Để đánh dấu giao diện, UML sử dụng stereotype
„interface”, mà trên sơ đồ lớp, nó đứng trước tên lớp. Trong ngôn ngữ UML tất cả các phương pháp trong giao diện
đều được dùng chung (public). Khái niệm giao diện được sử dụng trong sơ đồ thực hiện (sẽ được nói đến trong bài
giảng khác).
Sơ đồ trên Hình 46 biểu diễn giao diện với tên I nhân viên và lớp Nhân viên, mà chứa phần thực hiện các phương pháp
định nghĩa trong giao diện. Mối quan hệ giữa giao diện và lớp thưch hiện các phương pháp của giao diện được đánh
dấu bằng ký hiệu thực hiện – đường rời kết thúc bằng hình tam giác trống. Mối quan giữa giao diện và lớp sử dụng các
lớp của giao diện (gọi là khách hàng) được dánh dấu bằng ký hiệu phụ thuộc, đó là đường rời kết thúc bằng mũi tên –
quan hệ giữa giao diện I nhân viên và lớp Hãng.

Osoba
{abstract} «interface»
IPracownik
imię
nazwisko
data urodzenia
+ zmień pensję
policz wiek
Firma

Pracownik

pensja
stanowisko

zmień pensję

Hình 45. Ví dụ giao diện, sự phụ thuộc và thực hiện


Đối với sơ đồ trên Hình 46 có thể sử dụng cách ghi chép tương đương ngắn gọn hơn, xem Hình 47. Lớp trừu tượng và
giao diện được sử dụng bằng cách tương tự nhu định nghĩa giao diện cảu lớp Nhân viên. Sự khác nhau duy nhất là lớp
trừu tượng, khác với giao diện, có thể chứa thuộc tính và phần thực hiện phương pháp.
IPracownik

Firma

Pracownik

Osoba

Hình 46. Cách biểu diễn khác của giao diện

5.3 Tóm lại


Bài giảng đề cập đến quan hệ liên kết và các khái niêm liên quan như vai trò, phép liên kết , lớp liên kết , liên kết phân
loại. Mặc dù bản thân mối liên kết rất đơn giản, tuy nhiên trong phương pháp hướng đối tượng mối quan hệ này phát
triển rất nhiều. Nhờ nó các nhà phân tích có thêm công cụ để mô tả các mối quan hệ khác dễ dàng hơn.

5.4 Câu hỏi và các vấn đề tập giải quyết


1. Hãy cho biết sự khác nhau giữa kết nối và quan hệ liên kết ?
2. Độ lớn trong quan hệ liên là gì?
3. Có những loại liên kết gì? Hãy cho ví dụ.
4. Khi nào cần phải định nghĩa vai trò? Hãy minh họa bằng ví dụ
5. Tại sao Kết tập gọi là liên kết ở dạng mạnh?
6. Hãy cho ví dụ liên kết n – ngôi.
7. Trong sơ đồ lớp của cửa hàng mượn băng DVD (chương 2, mục 2.12 ) hãy điền thêm các mối liên kết .

You might also like