BÀI 3: LÀM VIỆC VỚI HƯỚNG ĐỐI TƯỢNG Nội dung chính trong bài học: + Trực quan hóa một lớp class + Các thuộc tính attribute + Các hành vi operation + Các đáp ứng responsibility và ràng b
Trang 1BÀI 3:
LÀM VIỆC VỚI HƯỚNG ĐỐI TƯỢNG
Nội dung chính trong bài học:
+ Trực quan hóa một lớp (class)
+ Các thuộc tính (attribute)
+ Các hành vi (operation)
+ Các đáp ứng (responsibility) và ràng buộc (constraint)
Trực quan hóa một lớp (class):
Chúng ta đã biết rằng 1 hình chữ nhật là biểu tượng dùng để biểu diễn 1 class trong UML Tên của class, theo qui ước, là một từ với ký tự đầu viết hoa, xuất hiện phía trên của hình chữ nhật Nếu tên class có 2 từ trở lên thì kết các từ sát với nhau với chữ hoa đầu từ (ví dụ WashingMachine trong hình 3.1)
Hình 3.1
Biểu tượng class trong UML
Một cấu trúc UML khác, gọi là gói (package), có thể đóng vai trò trong tên của một class Như đã giới thiệu trong các bài trước, một package, được biểu diễn như một tabbed folder,
là cách của UML nhằm tổ chức các thành phần của diagram Xem biểu tượng package trong hình 3.2
Hình 3.2
Ví dụ package UML
Thuật ngữ: Nếu lớp WashingMachine là thành phần của một package có tên là Household
appliances, ta có thể đặt tên cho class là Household appliances::WashingMachine 2 dấu hai chấm tách rời tên package bên trái với tên class bên phải Loại tên class này gọi là một tên
đường dẫn (pathname) Xem hình 3.3
Hình 3.3
Một class với một pathname
Trang 2Các thuộc tính (attribute):
Thuật ngữ: Một thuộc tính (attribute) là một đặc tính của một class Nó mô tả vùng giá trị
mà tính chất trong các object (instance) của class có thể nắm giữ Một class có thể không có hoặc có nhiều thuộc tính.Theo qui ước, tên thuộc tính viết liền với chữ thường Nếu tên thuộc tính gồm nhiều từ thì các từ kết liền với nhau và mỗi từ bắt đầu bằng chữ hoa Danh sách các tên thuộc tính bên dưới tên class, xem hình 3.4
Hình 3.4
Một class với các thuộc tính
Mỗi object của class có một giá trị cụ thể cho từng thuộc tính Hình 3.5 biểu diễn một ví dụ Chú ý rằng tên object bắt đầu bằng chữ thường, kế tiếp là 1 dấu hai chấm, kế tiếp là tên class và toàn bộ tên được gạch dưới
Chú ý: Tên myWasher:WashingMachine là một thể hiện có thên (named instance)
Ngoài ra còn có thể hiện vô danh (anonymous instance) như :WashingMachine
Hình 3.5
Một object có một giá
trị cụ thể cho mỗi thuộc
tính của class chứa nó
UML cho phép đưa vào các thông tin bổ sung cho các thuộc tính Trong biểu tượng class, ta
có thể đặc tả một kiểu dữ liệu cho từng giá trị của thuộc tính Những kiểu dữ liệu có thể là string, floating-point number, integer và boolean Để mô tả kiểu, dùng một dấu : ngăn cách giữa tên thuộc tính với tên kiểu Ngoài ra, có thể chỉ ra giá trị mặc định (default value) cho một thuộc tính Hình 3.6 chỉ ra các cách đặc tả thuộc tính
Hình 3.6
Một thuộc tính có thể
cho biết kiểu của nó
cũng như giá trị mặc
định
Trang 3Các hành vi (operation):
Thuật ngữ: Một hành vi (operation) là cái mà một class có thể tự làm được hoặc chúng ta
(hoặc class khác) có thể làm cho class đó Giống như tên thuộc tính, một tên hành vi cũng chỉ toàn chữ thường khi nó có 1 từ Nếu tên hành vi gồm 2 từ trở lên thì mỗi từ bắt đầu bằng chữ hoa rồi kết liền với nhau Danh sách các operation nằm bên dưới danh sách các attribute
Hình 3.7
Danh sách các hành vi
của class xuất hiện bên
dưới đường ngăn cách
với các thuộc tính của
class
Thuật ngữ: Ta cũng có thể chỉ ra thông tin bổ sung cho các hành vi Trong các dấu ngoặc
theo sau tên hành vi, ta có thể biểu diễn các tham số được xử lý bởi hành vi và cùng với đó
là kiểu dữ liệu của chúng Một loại hành vi là hàm (function), trả về một giá trị sau khi hành
vi kết thúc thực hiện Đối với một function, ta có thể cho biết giá trị trả về và kiểu của giá trị
đó
Thuật ngữ: Các thông tin về một operation được gọi là dấu hiệu (signature) của hành vi
Hình 3.8 cho thấy cách biểu diễn signature
Hình 3.8
Dấu hiệu (signature)
cho một operation
Các thuộc tính, hành vi và sự trực quan hóa:
Chúng ta làm việc với các class trong sự tách rời và biểu diễn tất cả các thuộc tính, hành vi của một class Trong thực tế, chúng ta sẽ biểu diễn nhiều class cùng lúc Khi đó, không phải lúc nào cũng thuận tiện trong việc hiển thị tất cả các thuộc tính và hành vi vì như thế có thể làm diagram thêm rối Thay vào đó, ta có thể chỉ hiển thị tên class mà bỏ trống vùng attribute hoặc operation, như hình 3.9
Trang 4Hình 3.9
Trong thực tế, ta không
phải luôn luôn biểu
diễn tất cả các thuộc
tính và hành vi của một
class
Thuật ngữ: Đôi lúc cần biểu diễn một vài (không phải tất cả) attribute và operation Để làm
điều này, ta hiển thị những gì cần thiết rồi theo sau danh sách là dấu ba chấm Điều này
được gọi là sự tĩnh lược (ellipsis) và việc bỏ qua một vài attribute hoặc operation được gọi
là tĩnh lược một class Hình 3.10 cho thấy cách sử dụng một tĩnh lược
Hình 3.10
Một tĩnh lược cho thấy
các operation không
phải là tập đầy đủ
Nếu danh sách các attribute và operation quá dài, ta có thể dùng một stereotype để tổ chức cho danh sách cô đọng hơn Một stereotype là cách của UML cho phép ta mở rộng nó: cho phép ta tạo các thành phần mới riêng biệt cho vấn đề cụ thể đang cần giải quyết Như đã đề cập trong các bài trước, ta biểu diễn stereotype như một tên gọi trong cặp ngoặc nhọn gọi là
guillemet Đối với một danh sách thuộc tính, ta có thể dùng một stereotype như tiêu đề cho
một tập thuộc tính con
Hình 3.11
Sử dụng một stereotype
để tổ chức một danh
sách các attribute và
operation
Chú ý: Stereotype là một cấu trúc mềm dẻo Ta co 1thể dùng nó theo nhiều cách khác nhau
Ví dụ, có thể dùng nó phía trên tên của một class trong biểu tượng class để chỉ ra vai trò mà class đó đang nắm giữ
Trang 5Các đáp ứng (responsibility) và ràng buộc (constraint):
Thuật ngữ: Biểu tượng class còn cho phép đặc tả một loại thông tin khác về một class Bên
dưới danh sách operation, ta có thể trình bày các đáp ứng (responsibility) của class Responsibility là một mô tả cho cái mà class phải làm – có nghĩa là các attribute và operation nào của class sẽ thực hiện Ví dụ, một washing machine có responsibility là lấy áo quần dơ vào và xuất ra áo quần sạch
Trong biểu tượng class, ta trình bày các responsibility bên dưới danh sách các operation (xem hình 3.12)
Hình 3.12
Trong một biểu tượng
class, viết các
responsibility của class
trong một vùng dưới
danh sách các
operation
Thuật ngữ: Để thêm một ràng buộc (constraint), dùng dấu ngoặc móc bao lấy nội dung
ràng buộc Nội dung ràng buộc trong ngoặc đặc tả các luật mà class phải tuân thủ Ví dụ, trong lớp WashingMachine, ta muốn đặc tả rằng sức chứa của một máy giặt chỉ có thể là 16,
18 hoặc 24 pound (có nghĩa ràng buộc trên thuộc tính capacity của lớp WashingMachine), ta viết {capacity=16 or 18 or 24 lb) gần với biểu tượng lớp WashingMachine
Hình 3.13
Luật trong ngoặc móc
ràng buộc thuộc tính
capacity với 1 trong 3
giá trị có thể
Ghi chú (note):
Ngoài attribute, operation, responsibility và constraint, ta còn có thể thêm thông tin vào một class dưới dạng ghi chú (note) đính kèm class
Trang 6Hình 3.14
Ghi chú đính kèm cung
cấp thêm thông tin về
class
Tóm lược
Hình chữ nhật là biểu tương UML để mô tả một class Name, attribute, operation và responsibility của class được chia vào các vùng trong hình chữ nhật.Ta có thể dùng stereotype để tổ chức danh sách các attribute và operation Ta có thể tĩnh lược một class bằng cách biểu diễn tập con của các attribute và operation Điều này làm cho 1 class diagram ít phức tạp
Ta có thể biểu diễn kiểu dữ liệu và giá trị khởi động cho attribute Ngoài ra còn có thể biểu diễn những giá trị được xử lý bởi một operation cũng như kiểu dữ liệu của chúng Đối với một operation, những thông tin bổ sung này được gọi là dấu hiệu (signature)
Nhằm giảm sự nhập nhằng trong một định nghĩa class, ta có thể thêm các ràng buộc UML cho phép mô tả thêm về một class bằng cách đính kèm các chú thích (note) vào hình chữ nhật biểu diễn cho class
Câu hỏi:
1 Cách trình bày một class bằng UML?
2 Các thông tin có thể biểu trên một biểu tượng class?
3 Ràng buộc là gì?
4 Tại sao cần đính kèm ghi chú vào một biểu tượng class?
5 Khi nào chúng ta cần biểu diễn một signature cho một opeartion?
Bài tập:
1 Mô tả ngắn cho môn hockey: