Tài liệu mô hình hóa cấu trúc
Trang 1Chương 7
Mô hình hóa cấu trúc
Trang 2Nội dung
bản CRC, các sơ đồ lớp và các sơ đồ đối
tượng.
lớp và các sơ đồ đối tượng.
các mô hình use-case.
Trang 3Giới thiệu
tả cấu trúc của dữ liệu được dùng trong các quá trình nghiệp vụ của công ty.
thống sẽ được biểu diễn thông qua các
bản CRC, các sơ đồ lớp và các sơ đồ đối
tượng.
Trang 4Mục đích của mô hình cấu trúc
(semantic gap) giữa thế giới thực và phần
mềm.
và người sử dụng.
niệm quan trọng trong lãnh vực ứng dụng.
Trang 5Đối tượng
Đối tượng (object) có thể biểu diễn một
người, vị trí, sự kiện hoặc giao dịch.
f Đối tượng cụ thể (concrete)
f Đối tượng trừu tượng (abstract)
Trang 6Đối tượng
f Từ đầu tiên: viết chữ thường.
f Các từ kế tiếp: viết chữ hoa cho ký tự đầu tiên.
Trang 7Đối tượng
myWasher: WashingMachine brandName = “Laundatorium”
modelName = “Washmeister”
serialNumber = “GL57774”
capacity = 16
Object Name Attributes
Operations
An object has a specific value for every one of its class’s attributes
Trang 8có cùng các thuộc tính, các tác vụ, các mối liên kết và ngữ nghĩa.
thể hiện của lớp này.
các thể hiện hoặc các đối tượng.
f Lớp cụ thể (concrete)
f Lớp trừu tượng (abstract)
f Têngói:: Tênlớp
f Viết chữ hoa cho ký tự đầu tiên của mỗi từ.
Trang 9A Class with its attributes and operations
Trang 101 // An actor with “name” and “stage name” attributes
2 public class Actor {
3 // Fields
4 private String name, stageName;
5 // Create a new actor with the given stage name
6 public Actor(String sn) {
7 name = “<None>”;
8 stageName = sn;
9 }
10 // Get the name
11 public String getName() {
12 return name;
13 }
14 // Set the name
15 public void setName(String n) {
16 name = n
17 }
18 // Get the stage name
19 public void setStageName() {
20 return stageName
21 }
22 // Set the stage name
23 public void setStageName(String sn) {
24 stageName = sn
25 }
26 // Reply a summary of this actor’s attributes, as a string
27 public String toString() {
28 return “I am known as “ + getStageName() + “, but my real name is “ + getName()
29 }
Trang 11Class name Referring to the class
elsewhere in our code.
Actor, line 2
Fields Describing the information
stored by this kind of object.
name and stageName, line 4
Constructors Controlling initialization of
the objects.
Actor(), line 6
Messages Providing other objects with
a way to use the objects.
behave.
lines 12, 16, 20, 24, 28
Comments Telling programmers how to
use or maintain the class (ignored by the compiler).
lines starting //, e.g lines 1, 3
Trang 13Lớp và đối tượng
Trang 14Thuộc tính
Thuộc tính (attribute) là một đặc tính được
đặt tên của một lớp, dùng để mô tả một miền trị có thể gán cho các thể hiện của thuộc tính này.
thuộc tính.
cho công việc.
f Từ đầu tiên: viết chữ thường.
f Các từ kế tiếp: viết chữ hoa cho ký tự đầu tiên.
Trang 15Thuộc tính
WashingMachine brandName: String = ‘Laundatorium”
modelName: String serialNumber: String capacity: Integer
An attribute can show its types as well as a default value
Trang 16f Thuộc tính đa trị (multivalued attribute): chứa
nhiều giá trị thuộc cùng một miền trị.
f Thuộc tính phức hợp (composite attribute):
một nhóm gồm các thuộc tính liên quan với nhau.
f Thuộc tính dẫn xuất (derived attribute) là
thuộc tính được suy từ các thuốc tính khác,
ký hiệu / đứng trước tên thuộc tính.
Trang 17Thuộc tính
Kiểu mở rộng (stereotype) là một thành phần (construct) cho phép mở rộng từ vựng của UML.
f Kiểu mở rộng khóa chính: <<PK>>.
f Kiểu mở rộng đa trị: <<Multivalued>>.
Trang 18Thuộc tính
Primary key is a unique identifier; no two Student instances will have the same studentId value.
The Identifier shown by the Stereotype <<PK>>
Trang 20Thuộc tính
Composite attributes have multiple sections (subattributes).
They are treated as separate classes in conceptual data models.
Attribute Address shown as a type Address
Composite attribute Address shown as a Class
Composite attribute Address shown as a Class
Trang 21Phương thức và thông điệp
của nó, bao gồm tên, các tham số và kiểu trả về.
f Tương tự với một hàm hoặc một thủ tục.
Trang 22Phương thức và thông điệp
WashingMachine brandName
modelName serialNumber capacity
addClothes(C: String) removeClothes(C: String) addDetergent(D: Integer) turnOn(): Boolean
The signature for an operation
Trang 23Phương thức và thông điệp
Thông điệp (message) được gửi đến các
phương thức của đối tượng.
f Gọi thủ tục (procedure call) từ một đối tượng
này đến đối tượng khác.
Tính sử dụng lại (reusability) là một đặc
tính sử dụng một đối tượng bằng cách gọi các phương thức.
Trang 24Phương thức và thông điệp
Signature identifies and invokes the behavior
Method implements the behavior
An Operation with Signature and Method Written in PL/SQL
Trang 25Phương thức và thông điệp
Trang 26Tính khả kiến
Tính khả kiến (Visibility) được áp dụng cho
các thuộc tính và các phương thức của một lớp và cho phép các lớp khác có thể
sử dụng các thuộc tính và các phương thức của lớp này (phương thức giao tiếp).
f Public: ký hiệu + , các lớp khác có thể sử dụng được.
f Protected: ký hiệu # , chỉ các lớp có thừa kế
từ lớp này sử dụng được.
f Private: ký hiệu - , chỉ có lớp này sử dụng được.
Trang 27Tính khả kiến
Television + brandName
+ modelName + accelerate() + brake()
# updateMileageCount ()
…
Trang 28Tính tổng quát hóa
Lớp cha (superclass, general class, parent
class) là lớp ở phía trên của cây phân cấp
lớp.
Lớp con (subclass, specific class, child
class) là lớp ở phía dưới của cây phân cấp
lớp.
Tính tổng quát hóa (generalization) là mối
liên kết giữa một lớp cha với một lớp con.
các phương thức riêng.
Trang 29Tính tổng quát hóa
Class Hierarchy
Trang 30Tính tổng quát hóa
Generalization represented by arrows from subclass to
superclass
Subclasses inherit all attributes and
operations of superclasses
An Example of Generalization
Trang 31Tính tổng quát hóa
Multiple inheritance is complicated and not supported by all
object-oriented programming languages.
Generalization based on two characteristics
Trang 32Tính thừa kế
Tính thừa kế (inheritance) là một cơ chế
mà lớp con trong mối liên kết tổng quát hóa có được các thuộc tính và các tác vụ của lớp cha.
các phương thức của các lớp cao hơn trong cây phân cấp lớp.
Trang 33Tính thừa kế
Trang 34Tính đa hình và kết nối động
Tính đa hình (polymorphism) là khả năng
của các đối tượng khác nhau đáp ứng các thông điệp giống nhau theo các cách khác nhau.
f Một thông điệp có thể được hiểu khác nhau tùy theo các lớp đối tượng khác nhau.
f Các hành vi khác nhau đối với cùng một thông điệp.
Polymorphism = “having many forms”.
Trang 35 Kết nối tĩnh (static binding) là một kết nối
mà kiểu của đối tượng được xác định ở thời gian biên dịch.
Trang 36Tính đa hình và tính bao đóng
Here, each type of
vehicle has its own
version of calcPrice()
An Example of Polymorphism
Trang 37Tính đa hình và tính bao đóng
Trang 38Mối liên kết
Mối liên kết (relationship / association) là
mối quan hệ ngữ nghĩa giữa các đối tượng của một hoặc nhiều lớp.
bằng một đường nối giữa hai hoặc nhiều lớp (hoặc nối cùng một lớp).
Trang 39Mối liên kết
Roles identify the purpose of each class in the relationship.
Relationship between Classes
Trang 40Mối liên kết
Các loại mối liên kết
f Mối liên kết đơn giản (simple relationship): không có mối quan hệ chủ (ownership),
không có đối tượng phụ thuộc vào đối tượng khác.
f Mối liên kết bao gộp (aggregation
relationship): mối quan hệ bộ phận-toàn thể
(part-whole relationship) mà một bộ phận có
thể tồn tại độc lập với toàn thể.
f Mối liên kết hợp thành (composition
relationship): mối liên kết bộ phận-toàn thể
mà một bộ phận và toàn thể hoàn toàn phụ thuộc lẫn nhau.
Trang 41Mối liên kết
Transaction and Line Items as Composition
Loosely Bound Aggregation
Trang 42Mối liên kết
Bậc của mối liên kết (relationship degree)
là số lượng các lớp tham gia đồng thời vào mối liên kết.
f Mối liên kết một ngôi (unary relationship) là
mối liên kết giữa các đối tượng của cùng một lớp.
f Mối liên kết hai ngôi (binary relationship) là
mối liên kết giữa các đối tượng của hai lớp lớp khác nhau.
f Mối liên kết ba ngôi (ternary relationship) là
mối liên kết giữa các đối tượng của ba lớp khác nhau.
Trang 43Mối liên kết
Unary Relationship
Binary Relationship
Trang 44Mối liên kết
Ternary Relationship
Trang 45Mối liên kết
Lượng số của mối liên kết (relationship
cardinality / multiplicity) là số lượng đối
tượng của lớp A có thể hoặc phải liên kết với mỗi đối tượng của lớp B.
f Lượng số nhỏ nhất (minimum cardinality) là
số lượng nhỏ nhất các đối tượng của lớp A liên kết với mỗi đối tượng của lớp B.
f Lượng số lớn nhất (maximum cardinality) là
số lượng lớn nhất các đối tượng của lớp A liên kết với mỗi đối tượng của lớp B.
Các loại lượng số
f One – to – one
f One – to – many
f Many – to – many
Trang 46Mối liên kết
Husband 1 is married to ► 1 Wife one–to–one
Teacher 1 teaches ► * Student one–to–many
takes ►
one–to–12 through 18
Tricycle 1 has ► 3 Wheel one–to–three
Egg Box 1 holds ► 12,24 Egg one–to–12 or 24
Trang 47Mối liên kết
Roles make it clearer to see which should be on the one side and which should be on the many side of the
relationship.
Use of Roles to illustrate Cardinality in a 1:M Unary Relationship
Trang 48Mối liên kết
Cardinality in a Ternary Relationship
Trang 49Lớp kết hợp
Lớp kết hợp (associative class) là một lớp
và chứa các thuộc tính của mối liên kết.
nối với một mối liên kết bằng một đường thẳng nét đứt.
lớp khác.
Trang 52Các sơ đồ cấu trúc
Các sơ đồ cấu trúc
f Sơ đồ lớp (class diagram)
f Sơ đồ đối tượng (object diagram)
f Sơ đồ gói (package diagram)
f Sơ đồ triển khai (deployment diagram)
f Sơ đồ thành phần (component diagram)
f Các sơ đồ cấu trúc phức hợp (composite
structure diagram)
Trang 54Các sơ đồ cấu trúc
Class Diagram
Trang 56Các sơ đồ cấu trúc
Object Diagram
Trang 57Các sơ đồ cấu trúc
Sơ đồ gói
f package diagram
f Gom nhóm các phần tử của UML với nhau để
tạo ra các cấu trúc ở mức cao hơn.
Trang 58Các sơ đồ cấu trúc
Package Diagram of Dependency Relationships Among Layers
Trang 59Các sơ đồ cấu trúc
Package Diagram of Appointment System
Trang 60f composite structure diagram
f Cho thấy cấy trúc bên trong của một lớp.
Trang 61Các sơ đồ cấu trúc
Three Versions of Appointment System Deployment Diagram.
Trang 62Các sơ đồ cấu trúc
Simple Internet Architecture
Trang 63Trách nhiệm và sự cộng tác
Trách nhiệm
f responsibility
f Trách nhiệm là sự mô tả về những gì mà một lớp phải thực hiện.
f Trách nhiệm được thể hiện bằng các tác vụ của lớp.
f Ví dụ: trách nhiệm của máy giặt là nạp vào đồ
dơ và cho ra đồ sạch .
Trang 64Trách nhiệm và sự cộng tác
WashingMachine
<<id info>>
brandName modelName serialNumber
<<machine info>>
capacity
<<clothes-related>>
addClothes() removeClothes() addDetergent()
<<machine-related>>
turnOn()
Trang 66Thẻ CRC
CRC – Class-Responsibility-Collaboration
Trang 67Thẻ CRC
CRC – Class-Responsibility-Collaboration
Trang 69Đơn giản hóa sơ đồ lớp
thấy tập con thông tin.
(hoặc các phần tử trong UML).
Trang 70Xác định đối tượng
f Các danh từ gợi ý các lớp .
f Các động từ gợi ý các tác vụ .
Trang 71Các kiểu mẫu (pattern)
Trang 721. Tạo các thẻ CRC bằng cách thực hiện việc phân tích văn bản của các use-case.
2 Bổ sung các lớp, các thuộc tính, các tác vụ và các mối liên kết bằng cách sử dụng cách tiếp cận liệt kê đối tượng chung.
3. Thực hiện mỗi use-case bằng cách sử dụng các thẻ CRC.
4. Tạo sơ đồ lớp dựa vào các thẻ CRC.
5 Xem lại mô hình cấu trúc để phát hiện các lớp, các thuộc tính, các tác vụ và các mối liên kết bị thiếu và / hoặc không cần thiết.
6 Kết hợp các kiểu mẫu có ích.
7 Xem lại mô hình cấu trúc.
Các bước để xác định đối tượng và mô hình hóa cấu trúc