BÀI5:
TÌM HIỂUSÂUVỀ SỰ TẬPHỢP(AGGREGATION),SỰCẤU
THÀNH (COMPOSITE),GIAODIỆN(INTERFACE)VÀSỰHIỆN
THỰC (REALIZATION)
Trong bài này, chúng ta tiếp tục với các mối quan hệ giữa các class vàtìmhiểu thêm các
khái niệm mới về các class và các sơ đồ lớp (class diagram). Nội dung chính trong bài học:
+ Sựtậphợp (aggregation)
+ Sựcấuthành (composite)
+ Ngữ cảnh (context)
+ Giaodiện(interface)
+ Sựhiệnthực(realization)
+ Tính rõ ràng (visibility)
Sự tậphợp (aggregation):
Thuật ngữ: Đôi khi một class bao gồm một số class thành phần (component class). Đây là
loại đặc biệt của mối quan hệ được gọi là sựtậphợp (aggregation). Quan hệ giữa các thành
phần với class mà chúng tậphợp nên là một quan hệ bộ phận-tổng thể (part-whole). Trong
bài 2, chúng ta đã thấy rằng hệ thống máy tính cá nhân gia đình là một tậphợp gồm CPU
box, keyboard, mouse, monitor, CD-ROM drive, hard disk, floppy disk drive, modem,
printer và speaker.
Ta biểu diễn một sựtậphợp như một phân cấp với class “whole” ở đỉnh và các thành phần
phía dưới. Một đường liên kết tổng thể (whole) với các thành phần (component) với một
hình thoi gần đầu “whole”. Hình 5.1 cho thấy hệ thống máy tính như một sựtập hợp.
Hình 5.1
Một aggregation (part-
whole) được biểu diễn
bởi một đường liên kết
giữa tổng thể với các bộ
phận.
Trang 1 – Bài 5
Mặc dù ví dụ này cho thấy mỗi component chỉ thuộc một whole, nhưng trong một
aggregation không bắt buộc như thế. Ví dụ, trong một hệ thống giải trí tại gia, một điều
khiển từ xa (remote control) có thể là 1 component của 1 TV và đồng thời là 1 component
của một VCR.
Ràng buộc trên các mối kết hợp:
Một tậphợp các thành phần trong một aggregation có thể “rơi” vào mối quan hệ OR. Ví dụ,
trong một số nhà hàng, một bữa ăn (meal) bao gồm soup hoặc salad, main course và dessert.
Để mô hình hoá điều này, ta dùng một ràng buộc OR như hình 5.2.
Hình 5.2
Ta có thể đặt một ràng
buộc trên một
aggregation để cho thấy
rằng một thành phần
này hoặc thành phần
khác là bộ phận của
tổng thể.
Các cấuthành (composite):
Một cấuthành (composite) là một loại aggregation chặt chẽ hơn. Mỗi thành phần trong một
composite chỉ có thể thuộc một tổng thể mà thôi. Các thành phần của một bàn cà phê (coffee
table) - mặt bàn và các chân bàn - tạo nên một composite. Biểu tượng cho composite tương
tự như cho aggregation, ngoại trừ hình thoi màu đen.
Hình 5.3
Trong một composite,
mỗi thành phần thuộc
về duy nhất một tổng thể
(whole).
Ngữ cảnh (context)
Khi ta mô hình hóa một hệ thống, nhóm các class sẽ trộn với nhau thường dưới dạng
aggregation hoặc composite. Chúng ta sẽ chỉ tập trung vào một nhóm này hay nhóm kia, và
sơ đồ ngữ cảnh (context diagram) cung cấp tính năng mô hình hóa điều đó. Một context
diagram giống như một bản đồ chi tiết của một vùng từ một bản đồ lớn hơn.
Trang 2 – Bài 5
Hình 5.4
Một sơ đồ ngữ cảnh
composite biểu diễn các
thành phần của một
class như một diagram
lồng bên trong một hình
chữ nhật class lớn.
Context diagram của composite tập trung vào áo sơ-mi và các thành phần bên trong của nó.
Để thấy áo sơ-mi trong ngữ cảnh của tủ áo quần, ta phải mở rộng tầm vực. Một context
diagram cho hệ thống cho phép điều này. Ta có thể thấy class Shirt kết nối như thế nào với
các class Wardrobe và Outfit.
Hình 5.5
Một context diagram
của hệ thống cho thấy
các thành phần của một
class và quan hệ của nó
với các class khác trong
hệ thống.
Giao diệnvàhiệnthực (Interface and Realization)
Sau khi tạo ra một số class, ta có thể thấy rằng chúng không cùng liên quan đến một class
cha cụ thể, nhưng các hành vi của chúng có thể chứa một số operation giống nhau với dấu
hiệu giống nhau. Khi đó, ta có thể mã hóa các operation cho một trong số các class đó rồi
dùng lại chúng trong các class còn lại. Một khả năng khác là ta xây dựng một tập các
operation cho các class trong một hệ thống, vàtáisử dụng chúng cho các class trong hệ
thống khác.
Thuật ngữ: Với cả hai cách trên, ta sẽ cần có cách nào đó để nắm bắt tập các operation có
thể táisử dụng đó. Giaodiện(interface) là một cấu trúc của UML cho phép làm điều này.
Một interface là một tập các operation mà đặc tả một số khía cạnh trong hành vi của một
class, đó cũng chính là tập các operation mà một class muốn thể hiện cho các class khác.
Trang 3 – Bài 5
Thuật ngữ: Mối quan hệ giữa một class và một interface được gọi là hiệnthực hóa
(realization). Mối quan hệ náy được mô hình hóa như một đường đứt nét với một hình tam
giác lớn kề và chỉ vào interface.
Hình 5.6
Một interface là một tập
hợp các operation mà
một class thực hiện. Một
class liên hệ với một
interface thông qua
realization, được biểu
diễn bởi đường đứt nét
có hình tam giác nằm kề
và chỉ vào interface.
Một cách khác để biểu diễn một class và một interface là một hình tròn nhỏ kết nối với class
bởi một đường thẳng.
Hình 5.7
Cách ngắn gọn để biểu
diễn một việc một class
hiện thực hóa một
interface.
Tính rõ ràng (visibility):
Thuật ngữ: Liên quan chặt chẽ đến interface và realization là khái niệm tính rõ ràng
(visibility). Visibility ápdụng cho các attribute và operation (hoặc operation của một
interface). Có 3 cấp độ cho visibility. Ở cấp public, khả năng sử dụng được mở rộng cho các
class khác. Ở cấp protected, khả năng sử dụng chỉ được mở rộng cho các class thừa kế từ
class nguồn. Ở cấp private, chỉ class nguồn mới có thể dùng các attribute và operation của
nó.Ví dụ, trong một TV, changeVolume() và changeChannel() là các public operation,
paintImageOnScreen() là một private operation. Trong một xe gắn máy, accelerate() và
brake() là các public operation, trong khi updateMileageCount() là protected operation.
Trang 4 – Bài 5
Hình 5.8
Các public operation,
private operation trong
một TV và các public
operation, protected
operation trong một xe
gắn máy.
Tầm vực (Scope)
Thuật ngữ: Tầm vực (scope) là một khái niệm khác liên quan đến attribute và operation. Có
2 loại tầm vực. Trong tầm vực instance, mỗi instance có giá trị riêng của nó cho attribute và
operation. Trong tầm vực classifier, chỉ một giá trị của attribute và operation cho tất cả các
instance của class. Một thuộc tính hay operation có tầm vực loại classifier xuất hiện với tên
được gạch dưới. Loại tầm vực này thường được dùng khi một nhóm cụ thể các instance phải
chia sẻ các giá trị đúng của một thuộc tính private. Loại tầm vực instance được dùng nhiều
hơn.
Tóm lược
Để hiểu đầy đủ về các class cũng như quan hệ giữa chúng, cần phải biết một số mối quan hệ
bổ sung. Sựtậphợp (aggregation) mô tả một mối kết hợp bộ phận - tổng thể (part – whole):
một “whole class” được tạo nên từ các “component class”. Một component trong một
aggregation có thể là bộ phận cho nhiều “whole class” khác nhau. Một cấuthành
(composite) là một dạng tậphợp có tính chặt chẽ hơn, trong đó một component chỉ có thể là
bộ phận của duy nhật 1 “whole class”. Biểu diễn UML cho aggregation tương tự như cho
composite. Đường kết hợp liên kết các bộ phận với một tổng thể có một hình thoi kề với đầu
“whole”. Trong aggregation, hình thoi rỗng, còn trong composite thì hình thoi đặc.
Một context diagram tập trung sự chú ý vào một class cụ thể trong một hệ thống. Một
context diagram cho một composite giống như một bàn đồ chi tiết của một bản đồ lớn hơn.
Nó cho trình diễn một class diagram được lồng bên trong một biểu tượng hình chữ nhật lớn.
Một context diagram cho hệ thống cho biết cách thức mà một context diagram cho
composite quan hệ với các object khác trong hệ thống.
Một sựhiệnthực hóa (realization) là một mối kết hợp giữa một class và một interface, là
một tậphợp các operation mà một số class có thể sử dụng. Một interface có thể được biểu
diễn như một class không có attribute. Để phân biệt nó với một class có các thuộc tính
nhưng đã được lược bỏ, dùng stereotype <<interface>> xuất hiện trên tên của interface với
một tam giác kề và chỉ về phía interface. Cách khác để biểu diễn một realization là với một
đường nối một class với một hình tròn nhỏ, với hình tròn tượng trưng cho interface.
Trong thuật ngữ tính rõ ràng (visibility), tất cả các operation trong một interface là public,
sao cho bất cứ class nào cũng có thể sử dụng chúng. Hai cấp độ khác cho tính rõ ràng là
protected (khả năng sử dụng được mở rộng đến các class con của class sở hữu các attribute
Trang 5 – Bài 5
và operation) và private (các attribute và operation chỉ được dùng bởi class sở hữu chúng).
Một dấu “+” ký hiệu cho public, “#” ký hiệu cho protected và “-“ ký hiệu cho private.
Tầm vực (scope) là một khía cạnh khác của attribute và operation. Trong tầm vực instance
(instance-scoping), một giá trị tồn tại cho một attribute hoặc operation cụ thể đối với tất cả
các object trong một class.
Câu hỏi
1. Sự khác nhau giữa một aggregation và một composite?
2. Realization là gì?
3. Tên của ba cấp độ của visibility và mô tả ý nghĩa của chúng.
Trang 6 – Bài 5
. BÀI 5:
TÌM HIỂU SÂU VỀ SỰ TẬP HỢP (AGGREGATION), SỰ CẤU
THÀNH (COMPOSITE), GIAO DIỆN (INTERFACE) VÀ SỰ HIỆN
THỰC (REALIZATION)
Trong bài này,. class và tìm hiểu thêm các
khái niệm mới về các class và các sơ đồ lớp (class diagram). Nội dung chính trong bài học:
+ Sự tập hợp (aggregation)
+ Sự cấu