You are on page 1of 82

Machine Translated by Google

Mô hình hóa cấu trúc tĩnh


Sơ đồ lớp Sơ đồ

đối tượng
Chế độ xem tĩnh Phối cảnh kiến trúc
Sơ đồ lớp Sơ đồ gói
Sơ đồ đối tượng Sơ đồ thành phần

Chế độ xem người dùng

Sơ đồ ca sử dụng

Chế độ xem động Chế độ xem triển khai


Sơ đồ tương tác Sơ đồ triển khai
Sơ đồ trạng thái
Sơ đồ hoạt động

OOAD
134
Machine Translated by Google

Các hoạt động phát triển phần mềm chính

Yêu cầu
Phân tích Thiết kế
Thu thập
Xác định mô hình khái Thiết kế giải pháp/kế
Xác định đặc tả yêu niệm hoạch phần mềm
cầu

Hội nhập và
Thực hiện Bài kiểm tra Triển khai

Viết mã hệ thống dựa Cài đặt và


Chứng minh rằng hệ thống
trên thiết kế đáp ứng đào tạo

yêu cầu

BẢO TRÌ

Đánh giá sau khi cài đặt

Tài liệu hỗ trợ


Hỗ trợ tích cực

OOAD
135
Machine Translated by Google

Quá trình thiết kế

Yêu cầu hệ thống

huyền thoại

Trường hợp sử dụng Lớp học


Người mẫu Biểu đồ Cấu trúc

hành vi

Hoạt động/Trình tự Tình trạng

Biểu đồ Đồ thị

Thành phần Triển khai


Biểu đồ Biểu đồ

OOAD
Machine Translated by Google

Sơ đồ lớp

Sơ đồ lớp ■ bao
gồm một tập hợp các lớp, giao diện và mối quan hệ của chúng
■ thể hiện chế độ xem tĩnh của hệ thống
■ có thể sản xuất/xây dựng bộ xương của hệ thống
Mô hình hóa sơ đồ lớp là bước thiết yếu trong thiết kế hướng đối
tượng

OOAD
137
Machine Translated by Google

Sơ đồ lớp phân tích và sơ đồ lớp thiết kế

Hai loại sơ đồ lớp chính


■ Sơ đồ lớp khái niệm/phân tích (mô hình miền)
được phát triển trong giai đoạn phân tích
mô tả hệ thống từ “quan điểm của người dùng”
■ Sơ đồ lớp thiết kế
được phát triển dựa trên cơ sở giai đoạn thiết
kế mô tả hệ thống từ “quan điểm của nhà phát triển phần mềm
tầm nhìn”

OOAD
138
Machine Translated by Google

Sơ đồ lớp phân tích

Sơ đồ lớp khái niệm/phân tích (mô hình miền) ■ được xây


dựng trong giai đoạn phân tích ■ nắm bắt các
khái niệm được người dùng/khách hàng/các bên
liên quan thừa nhận

■ không chứa thông tin về cách triển khai hệ thống phần mềm

Địa chỉ
Học sinh

Đường phố
Tên
sống ở Thành phố
Số điện thoại 1 1

Tình trạng
Đi a chi email
Mã bưu điện
Mã số sinh viên
Quốc gia
Điểm trung bình

Xác thực
Có đủ điều kiện để đăng ký
Xuất dưới dạng nhãn
Cung cấp các hội thảo đã thực hiện

Sơ đồ lớp phân tích

OOAD
139
Machine Translated by Google

Sơ đồ lớp thiết kế

Sơ đồ lớp thiết kế ■ được


xây dựng trong giai đoạn thiết kế ■
phiên bản chi tiết của sơ đồ lớp phân tích
một lớp phân tích có thể tương ứng với một số thiết kế
các lớp học

■ chứa thông tin về cách triển khai hệ thống phần mềm khả năng hiển
thị của các thuộc
tính và phương thức tên thuộc tính và
phương thức phù hợp với ngôn ngữ lập trình đích

Học sinh Địa chỉ

- Tên: Chuỗi - Số - đường phố: Chuỗi


sống ở
điện thoại: int - emailĐịa - thành phố:
1 1

chỉ: Chuỗi - số sinh viên: int Địa chỉ Chuỗi - tiểu


- AverageMark: float bang: Chuỗi - Mã bưu
điện: Chuỗi - quốc gia: Chuỗi

+ bool isEligibleToEnroll() + xác thực bool()


+ Liệt kê getTakenSeminars() + Đầu ra
chuỗiAsLabel()

OOAD Sơ đồ lớp thiết kế (để triển khai Java)


140
Machine Translated by Google

Sơ đồ lớp phân tích và sơ đồ lớp thiết kế

Địa chỉ
Học sinh

Đường phố
Tên
1
sống ở 1

Số điện thoại Thành phố

Tình trạng
Đi a chi email
Mã số sinh viên Mã bưu điện

Điểm trung bình Quốc gia

Xác thực
Có đủ điều kiện để đăng ký
Cung cấp các hội thảo đã thực hiện Xuất dưới dạng nhãn

Sơ đồ lớp phân tích

Học sinh Địa chỉ

- Tên: Chuỗi - Số - đường phố: Chuỗi


điện thoại: int - emailĐịa 1 sống ở 1
- thành phố:
chỉ: Chuỗi - số sinh viên: int Địa chỉ Chuỗi - tiểu bang:
- AverageMark: float + bool Chuỗi - Mã bưu chính:
isEligibleToEnroll() Chuỗi - quốc gia: Chuỗi

+ xác thực bool()


+ Liệt kê getTakenSeminars() + Đầu ra chuỗiAsLabel()

Sơ đồ lớp thiết kế (để triển khai Java)


OOAD
141
Machine Translated by Google

Cách tiếp cận hướng đối tượng

Đối tượng là sự trừu tượng của các thực thể trong thế giới thực hoặc hệ thống

Miền thực tế Miền mẫu

xe buýt

mô hình

phương tiện giao thông

xe hơi

mô hình

tách

mô hình

OOAD
Machine Translated by Google

Các lớp học

Một lớp là một khuôn mẫu cho các cá thể thực tế, trong bộ nhớ

sản phẩm

số seri
tên

giá
Tên lớp

mua()
hiển thị()
Thuộc tính

Hoạt động

OOAD
Giới thiệu | Lớp học | Quan hệ | Khái quát hóa | Hướng dẫn
Machine Translated by Google

Lớp học

Lớp UML

■ đại diện cho khái niệm lớp hoặc giao diện của ngôn ngữ lập trình
hướng đối tượng
■ bao gồm một tập hợp các thuộc tính và thao tác ■
có thể được biểu diễn bằng đồ họa dưới nhiều dạng
Tên lớp Tên lớp Tên lớp Tên lớp
thuộc tính1 hoạt động1 thuộc tính1
thuộc tính2 hoạt động2 thuộc tính2
… … …

hoạt động1
hoạt động2

lớp Tên lớp {



};
Tên lớp C++
lớp công khai ClassName {

};
OOAD Java
144
Machine Translated by Google

Thuộc tính

Thuộc tính thể hiện dữ liệu cần thiết của các thể hiện của lớp Thuộc tính có thể

■ một loại

loại đơn giản ■ số :

số nguyên ■ độ dài : gấp đôi


Người
■ văn bản : chuỗi loại
tên : chuỗi
phức tạp
firstName : chuỗi
dateOfBirth : Ngày

■ trung tâm : điểm ■ nbChildren : số nguyên = 0 đã


kết hôn : Boolean = false
ngày : Dữ liệu
professional : string = « không xác định »
■ Một giá trị mặc định số :

số nguyên = 10

■ Danh sách các giá trị có thể có

màu sắc : Màu = đỏ {đỏ, xanh, tím, vàng}

OOAD
145
Machine Translated by Google

Thuộc tính

Xác định thuộc tính


■ Thuộc tính là số hoặc chuỗi
Vì các thuộc tính thể hiện các đặc điểm của
các đối tượng

■ Phân biệt giữa thuộc tính và lớp


Nếu một đặc điểm của một lớp không có khả năng thực hiện
điều gì đó thì đây có thể là một thuộc tính
Nếu chúng ta nghi ngờ rằng một thuộc tính là một lớp thì đó là
được coi là một lớp

■ Mức lương đó có phải là thuộc tính của lớp Người không ?


■ Nếu nghi ngờ thì chúng tôi coi mức lương là một đẳng cấp.

OOAD
147
Machine Translated by Google

Hoạt động/Phương pháp

Các hoạt động thể hiện các hành vi của thể hiện của lớp Hành vi của một lớp bao gồm

■ Các getters và setters thao tác dữ liệu của lớp

trường hợp

■ Một số nhiệm vụ nhất định gắn liền với trách nhiệm của lớp

Hoạt động có thể có Vòng tròn


■ một cái tên
tâm : Bán kính bán kính
trung tâm
diện tích, tính toán, … ■ điểm : gấp đôi

kiểu trả về khu vực() : di

chuyển thực sự (p : Điểm)


vùng() : double ■ đối

số có kiểu move(p : Point)

OOAD
148
Machine Translated by Google

Thuộc tính dẫn xuất

Các thuộc tính có thể được khấu trừ khỏi các thuộc tính khác

■ tuổi của một người có thể được tính từ ngày sinh

{tuổi = ngày hiện tại - dateOfBirth}

Tên người : Người

string firstName : tên : chuỗi


string dataOfBirth : firstName : chuỗi
Ngày / tuổi nbChildren : dateOfBirth : Ngày

số nbChildren : số nguyên = 0 đã kết


nguyên = 0 đã kết hôn : Boolean = hôn : Boolean = false
false
tuổi()

Thiết kế cấp cao Thiết kế chi tiết

OOAD
149
Machine Translated by Google

Hiển thị

Thuộc tính và thao tác có khả năng hiển thị


■ Công khai
hiển thị bên ngoài lớp học
“ ”
ký hiệu +
■ Được bảo vệ

chỉ hiển thị với các đối tượng cùng lớp và


đối tượng của lớp con Hình dạng
“ “
ký hiệu ■ #
– nguồn gốc: Điểm
Riêng tư
+ setOrigin(p : Điểm)
chỉ hiển thị với các đối tượng của lớp + getOrigin() : Điểm)
+ di chuyển(p : Điểm)

“ - “
+ thay đổi kích thước (các: thực)

ký hiệu + hiển thị()


# pointInShape(p : Điểm): Boolean

OOAD
150
Machine Translated by Google

OOAD
Machine Translated by Google

Các kiểu quan hệ Mối quan

hệ giữa các lớp ■ Liên kết

Mối quan hệ ngữ nghĩa giữa các lớp ■ Tập hợp Một

liên kết thể hiện một

lớp là một phần của một lớp khác


lớp ■

Thành phần

Một hình thức tổng hợp mạnh mẽ

■ Khái quát hóa (Kế thừa) Một lớp có thể

kế thừa một hoặc nhiều lớp

■ Hiện thực hóa

Lớp thực hiện các thao tác và thuộc tính được xác định bởi giao diện. ■ Sự

phụ thuộc thể hiện sự phụ thuộc

giữa các lớp

OOAD
152
Machine Translated by Google

Sơ đồ lớp - Mối quan hệ

Mối quan hệ cấp độ cá thể


HOẶC
■ Hiệp hội

HOẶC
■ Tổng hợp
HOẶC
■ Thành phần

Mối quan hệ cấp lớp

■ Khái quát hóa

■ Hiện thực hóa

Mối quan hệ chung

■ Sự phụ thuộc

OOAD
Machine Translated by Google

Sơ đồ lớp - Mối quan hệ

thành phần

OOAD
Machine Translated by Google

Những thứ kết cấu

Lớp học

■ Đại diện cho đối tượng, có thuộc tính và trách nhiệm

Giao diện

■ Dùng để mô tả các chức năng mà không cần triển khai

■ Giống như một mẫu

■ Lớp triển khai một mẫu à Triển khai các chức năng

OOAD
Machine Translated by Google

Những thứ kết cấu

Tên
Hiển thị
Công cộng
Thuộc tính
Được bảo vệ
Riêng tư

hoạt động

Tên

OOAD
Machine Translated by Google

Sự kết hợp

Một hiệp hội

■ được dùng để chỉ ra cách hai lớp được liên kết với nhau

■ thể hiện một kết nối ngữ nghĩa hai chiều giữa
các lớp học

■ là sự trừu tượng hóa các liên kết giữa các thể hiện của các lớp

■ Ký hiệu

1 *
tên của hiệp hội
Hạng A Lớp B
vai trò 1 vai trò 2

■ Mỗi đầu của một liên kết được gọi là một vai trò

Vai trò thể hiện mục đích của hiệp hội

Một vai trò có thể có

■ một cái tên

■ một biểu hiện của bội số

■ Ví dụ: “Một nhân viên làm việc trong một phòng ban của

Công ty"

Người lao động Phòng Công ty

OOAD
157
Machine Translated by Google

Sự kết hợp

Tính đa dạng
■ định nghĩa có bao nhiêu thể hiện của lớp A được liên kết với một thể hiện của lớp B

1 chứa *
Mục lục Sản phẩm

■ Những biểu hiện khác nhau của tính bội số


1 : một và chỉ một
0..1 : không hoặc chỉ một
m..n : từ m đến n (số nguyên, n >= m >= 0)
n : chính xác là n (số nguyên, n >= 0)
* : không hoặc nhiều
1..* : từ một đến nhiều
OOAD
159
Machine Translated by Google

Sự kết hợp

Nhiều liên kết


■ Hai lớp có thể có nhiều mối liên hệ giữa chúng

* chuyến bay tới


1

Chuyến bay * Chuyến bay từ


1
Sân bay

OOAD
160
Machine Translated by Google

Sự kết hợp

Liên kết định hướng và thuộc tính

■ Theo mặc định, các liên kết là hai chiều ■ Tuy nhiên, các liên

kết có thể mang tính định hướng Ví dụ

1
Thu ngân Doanh thu
hiện tạiBán

■ Khả năng điều hướng trỏ từ Thu ngân đến Bán hàng cho thấy một thuộc tính
có loại Bán hàng ■ Thuộc tính này được
gọi là currentSale

Một dạng biểu diễn khác: sử dụng các thuộc tính

Thu ngân Doanh thu

bán hiện tại : Giảm giá …


OOAD
161
Machine Translated by Google

Sự kết hợp

Liên kết định hướng và thuộc tính

■ Khi nào chúng ta sử dụng liên kết hoặc thuộc tính định hướng?

Chúng tôi sử dụng thuộc tính này cho các kiểu dữ liệu “nguyên thủy”, chẳng hạn như
Boolean, Thời gian, Số thực, Số nguyên, …
Chúng tôi sử dụng liên kết định hướng cho các lớp khác

■ Để thấy rõ hơn sự kết nối giữa các lớp

Chỉ để thể hiện tốt hơn thôi, 2 cách này tương đương nhau về mặt ngữ

nghĩa

Ví dụ

1
Thu ngân Doanh thu
hiện tạiBán
số ID thời gian: Thời gian

OOAD
162
Machine Translated by Google

Sự kết hợp

Liên kết định hướng và thuộc tính

■ Một ví dụ khác

Danh mục sản Sản phẩm

phẩm: Sản số ID
phẩm[1..*]

1..*
Mục lục các sản phẩm
Sản phẩm

số ID

lớp công khai Danh mục


{ Danh sách riêng<Sản phẩm> sản phẩm
= new ArrayList<Product>();
// …
}

OOAD
163
Machine Translated by Google

Sự kết hợp

Các lớp hiệp hội

■ Một lớp liên kết cho phép một liên kết được xem xét
như một lớp học

Khi một thuộc tính không thể được gắn vào bất kỳ lớp nào trong hai lớp của một
liên kết

■ Ví dụ

* *
Công ty Người

Thuê người làm


lương
chức vụ

* *
Công ty Thuê người làm Người
lương
chức vụ

OOAD
164
Machine Translated by Google

Hiệp hội lớp học

Được biểu thị là một lớp gắn liền với liên kết và chỉ định

thuộc tính của hiệp hội

sản phẩm Đặt hàng

số seri * * ID đơn hàng

tên ngày

giá
Thủ tục thanh toán()

mua() addProduct(Sản phẩm p)


trưng bày() Làm sạch tất cả()

Một lớp kết hợp là một lớp Dòng thứ tự


Theo yêu cầu, mỗi sản phẩm có thể
“bình thường” và có thể bao
numberOfProducts : int xuất hiện một số đơn hàng và
gồm các quan hệ, sự kế thừa
giftWrap : boolean mỗi đơn hàng có thể bao gồm một
vân vân.

số sản phẩm
addAnother()
loại bỏOne()

OOADGiới thiệu | Lớp học | Quan hệ | Khái quát hóa | Hướng dẫn
Machine Translated by Google

Sự kết hợp

Một lớp có thể được liên kết với chính nó

■ ví dụ nhà tuyển dụng

Người

người lao động

Người lao động Nhà tuyển dụng

OOAD
166
Machine Translated by Google

Di sản

Một lớp có thể có nhiều lớp con

Đa giác

di sản
Hình bình hành Tam giác

Hình chữ nhật Viên ngậm

Quảng trường

OOAD
167
Machine Translated by Google

Di sản

Nguyên tắc thay thế


■ Tất cả các đối tượng của lớp con có thể đóng vai trò là một đối tượng
của lớp cha của nó

■ Một đối tượng của lớp con có thể ghi đè lên một đối tượng của
lớp cha của nó
Không chính thức

■ Lớp con là một loại siêu lớp


Ví dụ
Đa giác
■ Tam giác là đa giác

tộ
àml
Tam giác

OOAD
168
Machine Translated by Google

Di sản

Các lớp con còn được gọi là lớp chuyên biệt


Lớp cha mẹ còn được gọi là lớp chung
Quyền thừa kế còn được gọi là chuyên môn hóa hoặc
sự khái quát

Lớp tổng hợp Đa giác

chuyên môn hóa


iáu
t

Tam giác
ựq
h

Lớp chuyên
s
k

biệt

OOAD
169
Machine Translated by Google

Di sản

Dấu phân biệt (tùy chọn) là nhãn mô tả tiêu chí


rằng chuyên môn dựa trên

Động vật
người phân biệt đối xử
môi trường sống

loại thực phẩm

Động vật thủy sản Trên cạnĐộng vật

Ăn ThịtĐộng Vật Động Vật Ăn Cỏ

OOAD
170
Machine Translated by Google

Tổng hợp

Tập hợp là một hình thức liên kết thể hiện một
sự ghép nối mạnh mẽ hơn (so với liên kết thông thường) giữa lớp
Sự kết hợp được sử dụng giữa hai lớp
■ chủ và nô lệ: “thuộc về”
■ toàn bộ và một phần: “là một phần của”
Ký hiệu

■ Ký hiệu biểu thị vị trí tập hợp của mặt tập hợp

sự tổng hợp
*
Trọn Phần

Ví dụ
2..* 1..*
Xe hơi
Cửa Căn nhà

Trọn Phần Trọn

* 1..* *
1..*
Nhà tuyển dụng Người lao động Trường đại học Học sinh

OOAD
171
Machine Translated by Google

Tổng hợp (tiếp theo)

Kiểm tra tổng hợp:

■ Cụm từ “part of” có được dùng để mô tả mối quan hệ không?

Cửa là “bộ phận” của ô tô

■ Một số thao tác nói chung có được tự động áp dụng cho

các bộ phận của nó?

Dời xe, dời cửa.

■ Có phải một số giá trị thuộc tính được truyền từ tổng thể tới tất cả

hoặc một số bộ phận của nó?

Xe màu xanh nên cửa cũng màu xanh.

■ Có sự bất đối xứng nội tại nào trong mối quan hệ mà

một lớp phụ thuộc vào lớp kia?

Cửa là một bộ phận của ô tô. Một chiếc ô tô không phải là một phần của cánh cửa.

OOAD
172
Machine Translated by Google

Thành phần

Thành phần là một dạng tổng hợp mạnh mẽ


Sự kết hợp cũng là mối quan hệ “toàn bộ” nhưng sự tổng hợp mạnh mẽ
hơn
■ Nếu toàn bộ bị phá hủy thì các bộ phận cũng sẽ bị phá hủy

*
Trọn Phần

thành phần

3 1
Điểm

Ví dụ

Tam giác Vòng tròn

1
1 Phong cách
bán kính

màu sắc

nó đã đầy

OOAD
173
Machine Translated by Google

Thành phần

Một hình thức tổng hợp mạnh mẽ

■ Toàn bộ là chủ sở hữu duy nhất về phần của nó.

Đối tượng bộ phận có thể chỉ thuộc về một tổng thể

■ Số bội trên cả vế phải bằng 0 hoặc một.

■ Tuổi thọ của bộ phận phụ thuộc vào

trọn.

Composite phải quản lý việc tạo ra và phá hủy các

các bộ phận của nó.

Vòng tròn
Vòng tròn Điểm

3..* Điểm
Đa giác

OOAD
174
Machine Translated by Google

Thành phần so với tổng hợp

Tổng hợp Thành phần

Một phần có thể được chia sẻ Một phần luôn là một phần của một
bởi nhiều tổng thể tổng thể duy nhất
0..4 * *
loại tài liệu Cửa sổ Khung

Các bộ phận có thể Các bộ phận chỉ tồn tại như một

hoạt động độc lập (tức là toàn bộ phần của tổng thể. Khi bức tường bị

số lượng phần tử có thể là 0..*) phá hủy, chúng cũng bị

phá hủy

Toàn bộ không chỉ chịu Toàn bộ chịu trách nhiệm và nên

trách nhiệm về đối tượng tạo/hủy các đối tượng

OOAD
Machine Translated by Google

Tổng hợp và Thành phần - Ví dụ

OOAD
176
Machine Translated by Google

phụ thuộc

Một lớp có thể phụ thuộc vào một lớp khác


Sự phụ thuộc giữa các lớp có thể được thực hiện theo nhiều cách
khác nhau
■ Có thuộc tính thuộc loại của lớp khác
■ Gửi tin nhắn sử dụng một thuộc tính, một biến cục bộ, một biến
toàn cục của lớp khác hoặc các phương thức tĩnh
■ Nhận tham số thuộc loại khác
sự phụ thuộc

Ví dụ Doanh thu Mô tả sản phẩm

cập nhậtGiá(Sản phẩmDesc)

OOAD
177
Machine Translated by Google

Lớp trừu tượng

Lớp trừu tượng là lớp không có phiên bản nào

■ kế thừa: diện tích(), chu vi()


■ đa hình: diện tích()
Hình bình hành = b * h Tam giác = (h * b) / 2

Ký hiệu

Lớp trừu tượng

Đa giác
Đa giác {trừu tượng}

khu vực() khu vực()


chu vi() chu vi()

Hình bình hành Tam giác Hình bình hành Tam giác
khu vực() khu vực() khu vực() khu vực()

OOAD
178
Machine Translated by Google

Giao diện

Giao diện

■ mô tả một phần hành vi nhìn thấy được của một tập hợp
các đối tượng

■ rất giống với một lớp trừu tượng chỉ chứa các thao tác trừu
tượng
■ chỉ xác định các thao tác mà không thực hiện
Hai ký hiệu

giao diện

« giao diện »
Thu ngân
Thu ngân

ATM ATM

OOAD
179
Machine Translated by Google

Giao diện

« giao diện »
Ví dụ
Thu ngân
Người rút Máy móc
tiền gửi

Người lao động ATM

OOAD
180
Machine Translated by Google

Quy tắc ràng buộc và ghi chú

Các ràng buộc và ghi chú chú thích cùng những thứ khác

liên kết, thuộc tính, thao tác và lớp.

Ràng buộc là các hạn chế về mặt ngữ nghĩa được ghi chú là Boolean

biểu thức.

Khách hàng *
1
có thể
Đặt hàng bị hủy
{ tổng số <$50 }

id: dài {giá trị > 0 }

Hạn chế Ghi chú

OOAD
181
Machine Translated by Google

Ví dụ về TVRS

Báo cáo lưu lượng truy cập


người phạm tội
1 vấn đề*
Cảnh sát giao thông
id : mô 1..* 1 tên: Id chuỗi:

tả dài : Chuỗi xảy dài


raAt : Ngày

báo cáo của

1..*

cảnh sát

id : tên Sự vi phạm

dài : Thứ hạng


id : mô
chuỗi : int
tả dài : Chuỗi

<<trừu tượng>>

OOAD
182
Machine Translated by Google

Lớp chung

Một lớp chung (hoặc được tham số hóa) cho phép xem xét các kiểu
dữ liệu dưới dạng tham số
Các lớp generic thường được sử dụng cho các kiểu tập hợp
các lớp: vector, bảng, ngăn xếp, …
Ký hiệu Tham số

Lớp chung

Ví dụ T

Danh sách

“mẫu” trong C++


Kiểu chung trong Java

■ Danh sách<Integer> intList = new ArrayList<Integer>();

intList = 5 3 9 11

OOAD
183
Machine Translated by Google

Lớp mô tả

Lớp mô tả chứa thông tin mô tả các đối tượng


■ tăng tính gắn kết, khả năng sử dụng
lại Ví dụ
■ Mô tả sản phẩm với thông tin nhất định
Sản phẩm

idSản phẩm

tên

dãy
giáSố màu

Giải pháp 1: không có lớp mô tả

Sản phẩm Mô tả sản phẩm


* được mô tả bởi 1
loạtSố màu idSản phẩm

tên

giá

Giải pháp 2: sử dụng lớp mô tả

OOAD
184
Machine Translated by Google

Lớp mô tả

Khi nào chúng ta sử dụng lớp mô tả? ■ Giảm thông

tin dư thừa ■ Tránh lặp lại thông tin ■ Mô tả

một số đối tượng độc lập với các đối tượng

trong thế giới thực ■ Giữ thông tin trong đối tượng ngay cả khi các đối tượng

trong thế giới thực bị loại bỏ

Ví dụ ■ Mô tả

thông tin (số, giờ, ngày,…) của chuyến bay

Chuyến bay Chuyến bay Chuyến bayDesc

được mô tả bởi1 *
số thời ngày con số
gian giờ …
ngày

Lớp mô tả? Lớp mô tả? Lớp mô tả?

OOAD
185
Machine Translated by Google

Xây dựng sơ đồ lớp

Sơ đồ lớp được xây dựng ở các giai đoạn khác nhau và ở các thời điểm khác nhau
cấp độ

■ Mô hình miền

Mô hình hóa một tập hợp các lớp khái niệm (khái niệm) và mối quan hệ giữa chúng

■ Mô hình hệ thống

Lập mô hình tất cả các lớp và mối quan hệ của chúng, bao gồm các lớp kiến
trúc và các lớp giao diện người dùng

OOAD
186
Machine Translated by Google

Xây dựng sơ đồ lớp

Gợi ý các bước xây dựng sơ đồ lớp

■ Xây dựng mô hình miền

Xác định các lớp khái niệm Xác định

các mối quan hệ Định danh các thuộc


tính Xác định sự kế thừa và các

giao diện Xác định trách nhiệm chính của từng lớp khái niệm

■ Xây dựng mô hình hệ thống


Giới thiệu lớp học mới

Chi tiết hóa các thuộc tính

Chi tiết hóa các mối quan hệ

Quyết định hoạt động của từng lớp

■ Trong quá trình phát triển, tinh chỉnh dần dần các sơ đồ lớp cho đến khi hài
lòng Thêm hoặc xóa các lớp,

thuộc tính, thao tác, mối quan hệ

OOAD
187
Machine Translated by Google

Xây dựng sơ đồ lớp

Xây dựng mô hình miền


■ Mô hình miền là mô hình quan trọng trong hướng đối tượng
Phân tích
■ Mô hình này còn được gọi là sơ đồ lớp phân tích

OOAD
188
Machine Translated by Google

Xây dựng sơ đồ lớp

Sơ đồ lớp được xây dựng dần dần ở các giai đoạn khác nhau của
quá trình phát triển phần mềm

Địa chỉ
Học sinh

Đường phố
Tên
1 sống ở 1

Số điện thoại Thành phố

Tình trạng
Đi a chi email
Mã bưu điện
Mã số sinh viên
Quốc gia
Điểm trung bình
Xác thực
Có đủ điều kiện để đăng ký
Cung cấp các hội thảo đã thực hiện Xuất dưới dạng nhãn

Sơ đồ lớp phân tích

Học sinh Địa chỉ

- Tên: Chuỗi - Số - đường phố: Chuỗi -


1 sống ở 1

điện thoại: int - emailĐịa thành phố: Chuỗi

chỉ: Chuỗi - số sinh viên: chuỗi - - tiểu bang: Địa chỉ


int - AverageMark: float Mã bưu điện: Chuỗi - quốc gia:

Chuỗi

+ bool isEligibleToEnroll() + xác thực bool()


+ Liệt kê getTakenSeminars() + Đầu ra chuỗiAsLabel()

Sơ đồ lớp thiết kế (để triển khai Java)

OOAD
189
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng lớp ■ Câu


hỏi “Làm thế nào để tìm được lớp?” ■ Các
khái niệm trong miền nghiên cứu cũng có thể là các lớp Các khái
niệm này được gọi là các lớp khái niệm Vì vậy, trước
tiên chúng ta xác định các lớp khái niệm và sau đó các lớp khác
được thêm vào trong quá trình phát triển

Nguyên tắc tìm lớp khái niệm


■ Sử dụng danh sách các danh mục ■
Nhận dạng danh từ

OOAD
190
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng lớp


■ Sử dụng danh sách các danh mục
Danh mục các lớp khái niệm sản phẩm hoặc Ví dụ

dịch vụ giao dịch (của Đặt chỗ, thanh toán

doanh nghiệp) liên quan đến giao dịch Sản phẩm, Chuyến bay
giao dịch được ghi lại ở đâu? Bàn thu ngân, Tiền mặt

các tác nhân của ca sử dụng Thu ngân, khách hàng


vị trí (dịch vụ, giao dịch) sự kiện quan Trạm, Cửa hàng
trọng đối tượng vật mua

lý mô tả sự vật Xe hơi

danh mục chứa sự vật hệ Mô tả sản phẩm

thống Danh mục sản phẩm

cộng tác khác chính Cửa hàng

sách, nguyên tắc tổ chức Ngân hàng, cơ sở dữ liệu

Trường đại học

Thuế

OOAD
191
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng lớp


■ Nhận dạng danh từ

Xem xét các tài liệu bằng văn bản như đặc tả hoặc mô
tả các trường hợp sử dụng
Trích xuất các tên và coi chúng như các ứng viên của lớp khái niệm

Loại bỏ những danh từ


■ dư thừa

■ mơ hồ hoặc quá chung chung


■ không phải là các lớp khái niệm dựa trên kinh nghiệm và kiến thức
trong bối cảnh của ứng dụng

OOAD
192
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng lớp


■ Nhận dạng danh từ từ thông số ca sử dụng
Ví dụ
Hành động của diễn viên Hành động của hệ thống

• Khách hàng đến quầy thu ngân mang theo sản phẩm cần

mua

• Nhân viên thu ngân mã hóa mã định danh của từng • Quầy thu ngân hiển thị mô tả và giá của
sản phẩm sản phẩm

Nếu một sản phẩm có nhiều hơn một mặt hàng thì Số này được hiển thị

nhân viên thu ngân nhập số lượng mặt hàng

•Sau khi mã hóa xong toàn bộ sản phẩm, nhân viên thu • Bàn thu ngân tính toán và hiển thị
ngân ra hiệu kết thúc việc mua hàng tổng số tiền mà khách hàng phải trả

• Nhân viên thu ngân thông báo tổng số tiền cho khách

hàng

• Khách hàng thanh toán • Bàn thu ngân hiển thị số dư

• Nhân viên thu ngân nhập số tiền khách hàng thanh


toán

OOAD
193
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng lớp


■ Nhận dạng danh từ

Ví dụ (tiếp theo)

Hành động của diễn viên Hành động của hệ thống

•Nhân viên thu ngân nhận tiền thanh toán • Quầy thu ngân in biên lai

• Nhân viên thu ngân đưa tiền thối • Quầy thu ngân lưu lại việc mua hàng
lại cho khách hàng và biên lai

• Khách hàng rời khỏi quầy thu ngân

với sản phẩm đã mua

OOAD
194
Machine Translated by Google

Xây dựng sơ đồ lớp

Các lớp ứng viên từ các danh từ được xác định từ mô tả ca sử dụng

■ khách hàng, quầy thu ngân, sản phẩm, mặt hàng, nhân viên thu ngân, mua hàng,
thay đổi

OOAD
195
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định các mối quan hệ và thuộc tính


■ Bắt đầu với các lớp trung tâm của hệ thống
■ Xác định thuộc tính của từng lớp và mối liên kết
với các lớp khác

■ Tránh thêm quá nhiều thuộc tính hoặc liên kết vào một
lớp học

Để quản lý lớp học tốt hơn

OOAD
196
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định các mối quan hệ


■ Cần tồn tại mối liên kết giữa lớp A và lớp B, nếu
A là dịch vụ hoặc sản phẩm của B A là

một phần của B A là mô

tả cho B A là thành viên của B

A được kết nối với B

A sở hữu B A
kiểm soát B

■ Xác định bội số ở mỗi đầu của liên kết ■ Nhãn liên kết

OOAD
197
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định thuộc tính


■ Đối với mỗi lớp, xác định thông tin cần lưu trữ theo đặc tả yêu cầu
hoặc trường hợp sử dụng
Ví dụ: Nhân viên thu ngân cần mã định danh, tên, …

■ Nguyên tắc xác định thuộc tính


Một thuộc tính chỉ đại diện cho dữ liệu liên quan đến lớp
sở hữu thuộc tính

Nếu một tập hợp con của các thuộc tính tạo thành một nhóm mạch
lạc thì có thể một lớp mới sẽ được đưa vào

■ Chỉ xác định tên của các thuộc tính ở giai đoạn này (tức là giai
đoạn phân tích)

OOAD
198
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định các thuộc tính


■ Ví dụ Một
thuộc tính chỉ biểu thị dữ liệu liên quan đến lớp
sở hữu thuộc tính

Thu ngân Thu ngân


1 công trình 1
Tủ tiền

tên bànSố
tên
tiền mặtBànSố

■ Nếu một tập hợp con của các thuộc tính tạo thành một nhóm mạch
lạc thì có thể một lớp mới sẽ được đưa vào
Người
Địa chỉ *
Người Địa chỉ

tên
số1 đường1 tên số đường

thành thành

phố1 phố

số2 đường2
thành

phố2

OOAD
199
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định di sản


■ Hai cách tiếp cận
Từ dưới lên
■ Khái quát hóa: nhóm các lớp tương tự nhau để tạo ra siêu
các lớp học

Từ trên xuống
■ Chuyên môn hóa: xây dựng các lớp con từ các lớp chung hiện có
các lớp học

Hình bình hành


Hình chữ nhật

Từ dưới lên Từ trên xuống Hình bình hành

Losange
Hình chữ nhật Losange

OOAD
200
Machine Translated by Google

Xây dựng sơ đồ lớp

Nhận dạng giao diện


■ Tạo giao diện chứ không phải siêu lớp, nếu
Cần phải thực hiện các cách triển khai khác nhau của cùng một lớp

Hai lớp tạo ra các hoạt động chia sẻ không


tương tự

Lớp để khái quát hóa đã có siêu lớp riêng


<<giao diện>>
Phương tiện giao thông

chạy()

Máy bay Xe lửa Xe đạp

OOAD
201
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định trách nhiệm của các lớp

■ Trách nhiệm là một hoặc nhiều nhiệm vụ mà hệ thống phải thực hiện

■ Mỗi yêu cầu chức năng phải được quy cho một trong các lớp

Tất cả trách nhiệm của một lớp phải được quy cho một lớp
của các lớp

Nếu một lớp có quá nhiều trách nhiệm thì phải phân chia
thành nhiều lớp

Nếu một lớp không có trách nhiệm thì có lẽ nên


vô ích

Nếu không thể giao trách nhiệm cho bất kỳ lớp nào thì có thể giới thiệu một lớp
mới

■ Trách nhiệm có thể được xác định bằng cách phân tích các hành động/động từ
trong đặc tả ca sử dụng.

OOAD
202
Machine Translated by Google

Xây dựng sơ đồ lớp

Xây dựng sơ đồ lớp thiết kế


■ Dựa trên sơ đồ lớp phân tích (mô hình miền) ■ Sơ đồ chi
tiết lớp phân tích
Giới thiệu các lớp mới, nếu cần thiết ■ Ví
dụ: một liên kết lớp sẽ trở thành một lớp mới
lớp học

Chi tiết hóa các thuộc


tính Thêm và chi tiết các mối quan
hệ Xác định các thao tác

OOAD
203
Machine Translated by Google

Xây dựng sơ đồ lớp

Chi tiết hóa các thuộc tính

■ Xác định các loại thuộc tính

Sử dụng các kiểu nguyên thủy: boolean, int, real, … Xác

định kiểu mới cho một thuộc tính (lớp mới), nếu ■ Nó bao gồm một số phần

■ Nó có các thuộc tính khác ■ Nó được liên kết

với các hoạt động khác

■ Xác định giá trị ban đầu nếu cần thiết ■ Xác định mức độ

hiển thị của các thuộc tính

Chi tiết hóa các mối quan hệ ■

Giới thiệu các mối quan hệ theo các lớp mới được thêm vào ■ Xác định xem một liên kết

là một tập hợp hay một thành phần ■ Đặt tên cho mối quan hệ ■ Đưa ra hướng dẫn

OOAD
204
Machine Translated by Google

Xây dựng sơ đồ lớp

Xác định hoạt động của từng lớp


■ getter và setters
■ Các hoạt động được sử dụng để đạt được các trách nhiệm đã xác định
■ Một trách nhiệm có thể được thực hiện bởi nhiều hoạt động
■ Xác định tính minh bạch của hoạt động
Các hoạt động thiết yếu thực hiện trách nhiệm là
được tuyên bố là “công khai”

Các hoạt động chỉ phục vụ trong lớp được khai báo là "riêng tư"
hoặc "được bảo vệ" nếu lớp đó được kế thừa

OOAD
205
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: hệ thống máy tính tiền siêu thị

OOAD
206
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: Tên miền cấp phép HASP của Sentinel


■ Khi nhà cung cấp phần mềm mua Giấy phép Sentinel HASP
Bộ công cụ phát triển (LDK), nhà cung cấp cũng được cung cấp mã lô duy
nhất và khóa nhà cung cấp tương ứng chứa mã nhà cung cấp duy nhất dành
riêng cho công ty. Mã này được Sentinel LDK sử dụng để liên lạc với các
khóa bảo vệ và để phân biệt khóa của nhà cung cấp với khóa của các nhà cung
cấp phần mềm khác. ■ Mã lô bao gồm năm ký tự đại
diện cho
mã nhà cung cấp duy nhất. Khi khóa bảo vệ Sentinel được đặt hàng từ SafeNet,
mã hàng loạt sẽ được ghi vào khóa trước khi gửi cho nhà cung cấp. Mã lô
cũng được viết ở bên ngoài mỗi phím. ■ Tính năng là một số chức năng có
thể nhận dạng được của một ứng dụng phần mềm.
Các tính năng có thể được sử dụng để xác định toàn bộ tệp thực thi, mô-đun
phần mềm, phương thức .NET hoặc Java hoặc một chức năng cụ thể như in hoặc lưu.
Mỗi tính năng được gán mã định danh duy nhất và được liên kết với một mã lô cụ thể. Cả id
tính năng và tên tính năng đều phải là duy nhất trong lô được liên kết. Độ dài tối đa cho
tên đối tượng là 50 ký tự.

OOAD
207
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: Tên miền cấp phép HASP của Sentinel


■ Mỗi sản phẩm phần mềm được bảo vệ đều có một số tính năng và được liên kết với một
mã lô. Tên sản phẩm xác định sản phẩm là duy nhất trong lô đã chọn. Độ
dài tối đa cho tên sản phẩm là 50 ký tự. Sản phẩm có một số loại khóa cụ thể
(loại khóa
bảo hộ) được áp dụng cho sản phẩm. ■ Đơn vị cơ
bản để tạo ra tất cả các sản phẩm là sản phẩm cơ sở.
Một sản phẩm cơ sở có thể chứa tất cả các thuộc tính của sản phẩm như tính
năng, dữ liệu cấp phép và bộ nhớ, đồng thời có thể được sử dụng làm sản phẩm
được chào bán. Các sản phẩm tạm thời cũng có thể được định nghĩa là được phân
phối dưới dạng phần mềm dùng thử. Các đặc tính của sản phẩm tạm thời không
hoàn toàn giống với đặc tính của sản phẩm cơ sở. Sau khi một sản phẩm
đã được xác định, nó có thể được đưa vào quyền lợi (đơn đặt
hàng). ■ Quyền được hưởng là yêu cầu cung cấp cho sản phẩm một hoặc nhiều khóa
bảo vệ Sentinel. Đơn hàng hoặc bộ phận bán hàng tiếp nhận và thực hiện các
quyền hạn. Nhân viên xử lý đơn hàng xử lý chi tiết quyền được hưởng bằng
Sentinel EMS. Một quyền có thể chứa một hoặc nhiều sản phẩm. Khi quyền được
xác định trong Sentinel EMS, họ có thể chỉ định khách hàng đã đặt hàng. Khách
hàng có thể là khách hàng cá nhân hoặc công ty.

OOAD
208
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: Tên miền cấp phép HASP của Sentinel

■ Loại khóa được gán cho sản phẩm có thể xác định loại
quyền có thể được sản xuất. Họ không thể thêm một sản phẩm chỉ được xác định bằng loại khóa HL và

một sản phẩm khác chỉ được xác định bằng loại khóa SL (cho dù là Chế độ quản trị hay Chế độ
người dùng) vào cùng một quyền:

Các sản phẩm chỉ được xác định bằng loại khóa HL có thể được đưa vào
quyền đối với khóa HASP HL, khóa sản phẩm hoặc cập nhật khóa bảo vệ.

Các sản phẩm chỉ được xác định bằng SL AdminMode hoặc SL UserMode
loại khóa chỉ có thể được bao gồm trong các quyền đối với khóa sản phẩm hoặc đối với các
cập nhật khóa bảo vệ.

Các sản phẩm được xác định bằng Chế độ quản trị HL hoặc SL hoặc HL hoặc SL

Loại khóa Chế độ quản trị hoặc Chế độ người dùng SL có thể được bao gồm trong các
quyền đối với khóa HASP HL, khóa sản phẩm hoặc để cập nhật khóa bảo vệ.

OOAD
209
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: Tên miền cấp phép HASP của Sentinel

OOAD
210
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ: Mua sắm trực tuyến


Mỗi khách hàng có một id duy nhất và được liên kết với đúng một tài khoản.
Tài khoản sở hữu giỏ hàng và đơn đặt hàng. Khách hàng có thể đăng ký làm người
dùng web để có thể mua hàng trực tuyến. Khách hàng không bắt buộc phải là người
dùng web vì việc mua hàng cũng có thể được thực hiện qua điện thoại hoặc
đặt hàng từ danh mục sản phẩm. Người dùng web có tên đăng nhập cũng đóng vai trò
là id duy nhất. Người dùng web có thể ở một số trạng thái - mới, đang hoạt động,
bị chặn tạm thời hoặc bị cấm và được liên kết với giỏ hàng. Giỏ hàng thuộc về
tài khoản.
Tài khoản sở hữu đơn đặt hàng của khách hàng. Khách hàng có thể không có đơn đặt hàng.
Đơn đặt hàng của khách hàng được sắp xếp và duy nhất. Mỗi đơn hàng có thể đề cập đến một số

khoản thanh toán, có thể không có khoản thanh toán nào. Mỗi khoản thanh toán có id duy nhất và liên
quan đến chính xác một tài khoản. Mỗi

đơn hàng đều có trạng thái đơn hàng hiện tại. Cả đơn đặt hàng và giỏ hàng đều có các chi tiết đơn hàng

được liên kết với một sản phẩm cụ thể. Mỗi chi tiết đơn hàng có liên quan đến chính xác một
sản phẩm. Một sản phẩm có thể được liên kết với nhiều mục hàng hoặc không có mục nào cả.

OOAD
211
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ:
Mua sắm trực tuyến

OOAD
212
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ:

OOAD
213
Machine Translated by Google

Xây dựng sơ đồ lớp

Ví dụ:

OOAD
214
Machine Translated by Google

Sơ đồ đối tượng

Đối tượng ■

Đối tượng là thể hiện của lớp ■ Ký hiệu

Giá trị của thuộc tính có thể được chỉ định

Tên đối tượng được gạch chân

Lớp học
Sự vật

Vòng tròn objTâm vòng

đường tròn = (0, 0) đường

kính trung tâm kính = 5

vòng trònObj

vòng trònObj:Vòng tròn

:Vòng tròn

OOAD
215
Machine Translated by Google

Sơ đồ đối tượng

Đối tượng ■

Ba loại sơ đồ có đối tượng Chế độ xem tĩnh

■ Sơ đồ đối tượng Chế độ

xem động ■ Sơ đồ trình

tự ■ Sơ đồ cộng tác

Chế độ xem tĩnh Phối cảnh kiến trúc


Sơ đồ lớp Sơ đồ gói
Sơ đồ đối tượng Sơ đồ thành phần

Chế độ xem người dùng

Sơ đồ ca sử dụng

Chế độ xem động Chế độ xem triển khai


Sơ đồ tương tác Sơ đồ triển khai
Sơ đồ trạng thái
Sơ đồ hoạt động

OOAD
216
Machine Translated by Google

Sơ đồ đối tượng

Sơ đồ đối tượng

■ đại diện cho một tập hợp các đối tượng và liên kết giữa chúng
■ là các khung nhìn tĩnh của các thể hiện của các phần tử xuất hiện
trong sơ đồ lớp

Sơ đồ đối tượng là một thể hiện của sơ đồ lớp

:Bánh xe

1 4
Động cơ Bánh xe :Động cơ :Bánh xe

:Bánh xe

:Bánh xe

Sơ đồ lớp Sơ đồ đối tượng

OOAD
217

You might also like