You are on page 1of 54

Machine Translated by Google

Phân tích và thiết kế hướng đối tượng

Mô-đun 11: Xác định các yếu tố thiết kế


Machine Translated by Google

Mục tiêu: Xác định thiết kế

Yếu tố

• Xác định mục đích của Xác định thiết kế


Các phần tử và chứng minh nó được thực hiện

ở đâu trong vòng đời

• Phân tích sự tương tác của các lớp phân tích


và xác định các phần tử của Mô hình Thiết kế

– Lớp thiết kế
– Hệ thống con
– Giao diện hệ thống con
Machine Translated by Google

Xác định các yếu tố thiết kế trong bối cảnh

[Sớm
Xây dựng
[Khởi đầu
Lặp lại] Lặp lại (Tùy chọn)]

Xác định một ứng viên Trình diễn


Ngành kiến trúc Kiến trúc
tổng hợp

Phân tích hành vi

Xác định thiết kế


(Không bắt buộc)
Yếu tố Kiến trúc sư Tinh chỉnh
Ngành kiến trúc

Thiết kế Thiết kế
Các thành phần Cơ sở dữ liệu
Machine Translated by Google

Xác định các yếu tố thiết kế Tổng quan

Phần mềm
Dự án cụ thể
Ngành kiến trúc Hướng dẫn
Tài liệu
bổ sung
Thông số kỹ thuật

Nhận dạng
Thiết kế
Yếu tố

Mẫu thiết kế

Mô hình phân tích


Machine Translated by Google

Xác định các bước thiết kế

• Xác định các lớp và hệ thống con

• Xác định các giao diện hệ

thống con • Cập nhật tổ chức của Thiết kế


Người mẫu

• Điểm kiểm tra


Machine Translated by Google

Xác định các bước thiết kế

Xác định các lớp và hệ thống con

Xác định các giao diện hệ thống con

Xác định các cơ hội tái sử dụng

Cập nhật tổ chức thiết kế


Người mẫu

Điểm kiểm tra

Lớp phân tích


Machine Translated by Google

Từ các lớp phân tích đến

Yếu tố thiết kế

Lớp phân tích Yếu tố thiết kế


<< ranh giới>>

<<kiểm soát>>
<< hệ thống con>>
Hệ thống con

<<thực thể>>

<< ranh giới>>

<< hệ thống con>>


Hệ thống con

Ánh xạ nhiều-nhiều
Machine Translated by Google

Xác định các lớp thiết kế

• Lớp phân tích ánh xạ trực tiếp tới


lớp thiết kế nếu: – Đó

là một lớp đơn giản

– Nó đại diện cho một sự trừu tượng logic

duy nhất • Các lớp phân tích phức tạp hơn có

thể – Chia thành nhiều lớp

– Trở thành một gói –

Trở thành một hệ thống con (sẽ thảo luận sau)

– Bất kỳ sự kết hợp nào…


Machine Translated by Google

Đánh giá: Đẳng cấp và Trọn gói

• Lớp học là gì?

– Mô tả một tập các đối tượng có chung trách nhiệm, mối

quan hệ, hoạt động, thuộc tính và ngữ nghĩa Tên lớp

• Trọn gói là gì?

– Một cơ chế có mục đích chung để tổ chức các phần tử

thành các nhóm


Bưu kiện
– Một phần tử mô hình có thể chứa Tên

các yếu tố mô hình khác


Machine Translated by Google

Lớp thiết kế nhóm ở

Gói

• Bạn có thể căn cứ vào tiêu chí đóng gói của mình
dựa trên một số yếu tố khác nhau, bao gồm:
– Đơn vị cấu hình
– Phân bổ nguồn lực cho sự phát triển
đội

– Phản ánh các loại người dùng Gói C

– Đại diện cho các sản phẩm và dịch


Gói B
vụ hiện có mà hệ thống sử dụng Gói A
Machine Translated by Google

Mẹo đóng gói: Ranh giới

Các lớp học

Nếu có khả năng giao diện hệ Nếu không chắc giao diện
thống sẽ có những thay hệ thống sẽ trải qua
đổi đáng kể những thay đổi đáng kể

Các lớp ranh giới được đặt Các lớp ranh giới được đóng
trong các gói riêng biệt gói với các lớp liên quan đến chức năng
Machine Translated by Google

Mẹo đóng gói: Về mặt chức năng

Các lớp liên quan

• Tiêu chí để xác định xem các lớp có hoạt động hay không
có liên quan:

– Những thay đổi trong hành vi và/hoặc cấu trúc của một lớp
đòi hỏi phải có những thay đổi trong lớp khác

– Việc loại bỏ lớp này sẽ ảnh hưởng đến lớp kia


– Hai đối tượng tương tác với một số lượng lớn tin nhắn
hoặc có sự giao tiếp phức tạp
– Một lớp ranh giới có thể liên quan về mặt chức năng với một
lớp thực thể cụ thể nếu chức năng của lớp biên là
trình bày lớp thực thể
– Hai lớp tương tác với nhau hoặc bị ảnh hưởng bởi những thay đổi
trong cùng một diễn viên
Machine Translated by Google

Mẹo đóng gói: Các lớp liên quan đến chức năng (tiếp theo)

• Tiêu chí để xác định xem các lớp có liên quan về mặt chức
năng hay không (tiếp theo):
• Hai lớp có mối quan hệ với nhau
• Một lớp tạo các thể hiện của lớp khác

• Tiêu chí để xác định khi nào hai lớp nên


KHÔNG được đặt trong cùng một gói:
• Không nên đặt hai lớp liên quan đến các tác nhân
khác nhau trong cùng một gói
• Không nên có lớp tùy chọn và lớp bắt buộc
đặt trong cùng một gói
Machine Translated by Google

Phụ thuộc gói: Phần tử gói

Hiển thị

GóiA
MỘT

+ Lớp A1

+ Lớp A2

+ Lớp A3

B
Chỉ các lớp công khai
mới có thể được tham
Gói B chiếu bên ngoài

gói sở hữu
+ Lớp B1
Khả năng hiển thị công khai

- Lớp B2

Chế độ hiển thị riêng tư

Nguyên tắc OO: Đóng gói


Machine Translated by Google

Khớp nối gói: Lời khuyên

MỘT B
• Các gói hàng không được X
ghép chéo

• Các gói ở mức thấp hơn MỘT

Phía trên

các lớp không nên phụ Lớp


thuộc vào các gói X
X
ở các lớp trên Thấp hơn
B
Lớp

• Nói chung,
các phần phụ thuộc không C

nên bỏ qua các lớp

X = Vi phạm khớp nối


Machine Translated by Google

Ví dụ: Gói đăng ký

ChínhSinh viênForm Biểu mẫu nhà đăng ký chính

1 1

0..1 0..1

<< ranh giới>> << ranh giới>>


Đăng kýForCoursesForm ĐóngMẫu đăng ký

1 11

<<kiểm soát>> <<kiểm soát>>


Trình điều khiển đăng ký ĐóngĐăng kýBộ điều khiển
Machine Translated by Google

Ví dụ: Gói hiện vật đại học:

Sự khái quát

<<thực thể>>
<<thực thể>>
Học sinh
Lịch trìnhThông tin chào hàng

<<thực thể>>
<<thực thể>> <<thực thể>>
Lịch trình chínhThông tin cung cấp
Sinh viên toàn thời gian Sinh viên bán thời gian
Machine Translated by Google

Ví dụ: Đồ tạo tác của trường đại học

Gói: Hiệp hội

<<thực thể>>
<<thực thể>>
Lịch trình
Học sinh
1 0..*

0..* 0..*

khóa học chính các khóa học thay thế

0..2
0..4
0..*
<<thực thể>> người hướng dẫn
<<thực thể>> <<thực thể>>
Giáo sư khóa học cung cấp Khóa học
0..*
0..1 0..* 0..* 1

Điều kiện tiên quyết


0..*

Khóa họcDanh sách cung cấp


Machine Translated by Google

Ví dụ: Hệ thống bên ngoài

Gói giao diện

<<Giao diện>> <<Giao diện>>

IHệ thống thanh toán Hệ thống ICourseCatalog


Machine Translated by Google

Đánh giá: Hệ thống con và

Giao diện

• Nhận ra một hoặc nhiều giao diện

xác định hành vi của nó

<<giao diện>>
Tên giao diện
<< hệ thống con>>
Tên hệ thống con

Hiện thực hóa (dạng Canonical)


Giao diện Hệ thống con

<< hệ thống con>>


Tên giao diện Tên hệ thống con

Thực hiện (dạng Elided)


Machine Translated by Google

Hệ thống con và giao diện (tiếp theo)

• Hệ thống con:

– Hành vi đóng gói hoàn toàn

– Thể hiện khả năng độc lập với các giao diện rõ ràng (có khả năng

tái sử dụng)

– Mô hình nhiều biến thể triển khai


<< hệ thống con>>
Hệ thống conA

LớpA1 LớpA2

<<Giao diện>> W() X()


Giao diệnK

<< hệ thống con>>


X()
Hệ thống conB
W()

LớpB1 LớpB2 LớpB3

W() X() Z()


Y()
Machine Translated by Google

Gói so với hệ thống con

Hệ thống con Gói

Cung cấp hành vi Không cung cấp


hành vi
Đóng gói hoàn
Đừng gói gọn hoàn
toàn nội dung của
toàn nội dung của
nội dung
chúng
nội dung
chúng
Lớp khách hàng

Dễ dàng thay
Có thể không dễ
thế dàng thay thế
Gói B
LớpB1

LớpB2
<< hệ thống con>>
Hệ thống con A

Đóng gói là chìa khóa!


Machine Translated by Google

Xác định gợi ý hệ thống con

• Nhìn vào sự hợp tác của đối

tượng. • Tìm kiếm sự

lựa chọn. • Nhìn vào giao diện người dùng của


hệ thống. • Nhìn vào các diễn viên.

• Tìm kiếm sự liên kết và gắn kết


giữa các lớp.
• Nhìn vào sự thay thế.

• Nhìn vào sự phân phối.

• Nhìn vào sự biến động.


Machine Translated by Google

Hệ thống con ứng cử viên

• Các lớp phân tích có thể phát triển thành các hệ thống con:

– Các lớp cung cấp các dịch vụ và/hoặc tiện ích phức tạp

– Các lớp ranh giới (giao diện người dùng và giao diện hệ
thống bên ngoài)

• Các sản phẩm hiện có hoặc hệ thống bên ngoài trong thiết kế
(ví dụ: các bộ phận):

– Phần mềm truyền thông << hệ thống con>>


Hệ thống con A

– Hỗ trợ truy cập cơ sở dữ liệu

– Kiểu và cấu trúc dữ liệu << hệ thống con>>


Hệ thống con B
– Tiện ích chung

<< hệ thống con>>


– Sản phẩm dành riêng cho ứng dụng
Hệ thống con C
Machine Translated by Google

Xác định hệ thống con

"Siêu nhân <<kiểm soát>>


Lớp học" Hạng A

X()
W()

<<Giao diện>>
<< hệ thống con>>
Giao diệnK Hệ thống conA

LớpA1 LớpA2
X()
X() W()
W()
Machine Translated by Google

Xác định các bước thiết kế

Xác định các lớp và hệ thống con

Xác định các giao diện hệ thống con

Xác định các cơ hội tái sử dụng

Cập nhật tổ chức thiết kế


Người mẫu

Điểm kiểm tra


Machine Translated by Google

Xác định giao diện

• Mục đích
– Để xác định các giao diện của các hệ thống con dựa
trên trách nhiệm của chúng
• Các bước

– Xác định một tập hợp các giao diện ứng viên cho tất cả
các hệ thống con.
– Tìm kiếm sự tương đồng giữa các giao diện.

– Xác định các phụ thuộc giao diện.


– Ánh xạ các giao diện tới các hệ thống con.
– Xác định hành vi được chỉ định bởi các
giao diện.

– Đóng gói các giao diện.

Các giao diện ổn định, được xác định rõ ràng là chìa khóa cho một
kiến trúc ổn định, linh hoạt.
Machine Translated by Google

Nguyên tắc giao diện

• Tên giao diện

– Phản ánh vai trò trong hệ thống

• Mô tả giao diện
– Truyền đạt trách nhiệm

• Định nghĩa hoạt động


– Tên phản ánh kết quả hoạt động
– Mô tả thao tác thực hiện, tất cả
các thông số và kết quả
• Tài liệu giao diện

– Thông tin hỗ trợ gói: sơ đồ trình tự và


trạng thái, kế hoạch kiểm tra, v.v.
Machine Translated by Google

Ví dụ: Thiết kế hệ thống con và giao diện

<< ranh giới>>

Hệ thống thanh toán << hệ thống con>>


Hệ thống thanh toán

//gửi hóa đơn()


IHệ thống thanh toán

submitBill(forTuition : Gấp đôi, forStudent : Sinh viên)

<< ranh giới>>

Khóa họcDanh mụcHệ thống


<< hệ thống con>>
Hệ thống danh mục khóa học

//nhận các dịch vụ khóa học()

Hệ thống ICourseCatalog

getCourseOfferings(forSemester : Học kỳ, forStudent : Sinh viên): CourseOfferingList


khởi tạo()

Tất cả các lớp phân tích khác ánh xạ trực tiếp tới các lớp thiết kế.
Machine Translated by Google

Ví dụ: Phân tích-Lớp-To-

Bản đồ phần tử thiết kế

Lớp phân tích Yếu tố thiết kế

Khóa họcDanh mụcHệ thống Hệ thống con Hệ thống danh mục khóa học

Hệ thống thanh toán Hệ thống con hệ thống thanh toán

Tất cả các lớp phân tích khác

ánh xạ trực tiếp tới các


lớp thiết kế
Machine Translated by Google

Quy ước mô hình hóa:

Hệ thống con và giao diện

<< hệ thống con>>

Khóa họcDanh mụcHệ thống

+ khởi
Hệ thống ICourseCatalog
tạo() + getCourseOfferings()

Giao diện bắt đầu bằng chữ “I”

<<giao diện>> << hệ thống con>>

Hệ thống ICourseCatalog Khóa họcDanh mụcHệ thống

+ getCourseOfferings() + khởi tạo()


+ khởi tạo() + getCourseOfferings()
Machine Translated by Google

Ví dụ: Bối cảnh hệ thống con:

Khóa họcDanh mụcHệ thống

<<kiểm soát>>

<<kiểm soát>> Trình điều khiển đăng ký


Giao diện bắt buộc được xác
ĐóngĐăng kýBộ điều khiển
định + getCurrentSchedule()

+ // đăng ký có mở không? + deleteCurrentSchedule()

() + // đóng đăng ký() + submitSchedule()

0..1 + saveSchedule()

+ getCourseOfferings()
1
+danh mục khóa học + setSession()
<<Giao diện>> + <<class>> new()
Hệ thống ICourseCatalog
+ getStudent()

+ getCourseOfferings ( đối với Semester: Semester )

+ khởi tạo ()

Khóa họcDanh sách cung cấp


Giao diện

được cung + mới()

+ thêm()
cấp được xác định << hệ thống con>>
Khóa họcDanh mụcHệ thống

+ khởi tạo()

+ getCourseOfferings()
Machine Translated by Google

Ví dụ: Bối cảnh hệ thống con:

Hệ thống thanh toán

<<kiểm soát>>

ĐóngĐăng kýBộ điều khiển

+ // đăng ký có mở không?()

+ // đóng đăng ký()

0..1

+ Người lập hoá đơn 1

<<Giao diện>>1
IHệ thống thanh toán <<thực thể>>
Học sinh

+ submitBill(forStudent : Sinh viên, forTuition : gấp đôi)

<< hệ thống con>>


Hệ thống thanh toán

+ submitBill(forStudent : Sinh viên, forTuition : gấp đôi)


Machine Translated by Google

Xác định các bước thiết kế

Xác định các lớp và hệ thống con

Xác định các giao diện hệ thống con

Xác định các cơ hội tái sử dụng

Cập nhật tổ chức thiết kế


Người mẫu

Điểm kiểm tra


Machine Translated by Google

Xác định tái sử dụng

Những cơ hội
• Mục đích
– Để xác định nơi các hệ thống
con và/hoặc thành phần hiện có có thể
được tái sử dụng dựa trên giao
diện của chúng.

• Các bước
– Tìm kiếm giao diện tương tự

– Sửa đổi giao diện mới để cải


thiện sự phù hợp
– Thay thế các giao diện ứng viên
bằng các giao diện hiện
có – Ánh xạ hệ thống con ứng viên
tới các thành phần hiện có
Machine Translated by Google

Cơ hội tái sử dụng có thể

• Nội bộ của hệ thống đang được phát triển

– Điểm chung được công nhận giữa các gói và hệ


thống con

• Bên ngoài hệ thống đang được phát triển

- Các thành phần có sẵn trên thị trường

– Các thành phần từ một ứng dụng được phát


triển trước đó

– Các thành phần được thiết kế ngược


Machine Translated by Google

Cơ hội tái sử dụng Nội bộ của


Hệ thống
?
Machine Translated by Google

Xác định các bước thiết kế

Xác định các lớp và hệ thống con

Xác định các giao diện hệ thống con

Xác định các cơ hội tái sử dụng

Cập nhật tổ chức thiết kế


Người mẫu

Điểm kiểm tra Lớp B


Hạng A

Y()
Z() Y()
Lớp C
Z()
Lớp E
Lớp C Y()
Lớp D Z() Y()
Y() Z()
Z()
Y()
Z()
Machine Translated by Google

Đánh giá: Phân lớp điển hình

Tiếp cận

Chức
năng cụ thể Các hệ thống con ứng dụng riêng biệt tạo
nên một ứng dụng - chứa phần mềm gia
Ứng dụng tăng giá trị do tổ chức phát triển.

Dành riêng cho doanh nghiệp - chứa một số hệ


thống con có thể tái sử dụng dành riêng cho loại
Dành riêng cho doanh nghiệp
hình doanh nghiệp.

Middleware - cung cấp các hệ thống con cho


các lớp tiện ích và các dịch vụ độc lập với nền
Phần mềm trung gian tảng để tính toán đối tượng phân tán trong môi
trường không đồng nhất, v.v.

Phần mềm hệ thống - chứa phần mềm dành cho cơ


sở hạ tầng thực tế như hệ điều hành, giao
Chức Phần mềm hệ thống diện với phần cứng cụ thể, trình điều
năng chung khiển thiết bị, v.v.
Machine Translated by Google

Cân nhắc phân lớp

• Hiển thị
– Chỉ phụ thuộc trong lớp hiện tại và
dưới

• Biến động
– Các lớp trên bị ảnh hưởng bởi những thay đổi yêu cầu

– Các lớp dưới bị ảnh hưởng bởi sự thay đổi của môi trường

• Tính tổng quát

– Nhiều phần tử mô hình trừu tượng hơn ở các lớp thấp hơn

• Số lớp
– Hệ thống nhỏ: 3-4 lớp
– Hệ thống phức tạp: 5 – 7 lớp
Mục tiêu là giảm sự ghép nối và giảm bớt nỗ lực bảo trì.
Machine Translated by Google

Các yếu tố thiết kế và


Ngành kiến trúc

Lớp 1

Lớp 2

Lớp 3
Machine Translated by Google

Ví dụ: Lớp kiến trúc

<<lớp>>
Ứng dụng

Cần thiết vì
Lớp ứng dụng phải có
quyền
Có quyền
truy
truy
cậpcập
vàovào
lõilõi
cơ chế phân phối

Tái sử dụng cơ sở <<lớp>> được cung cấp với Java RMI.


Việc kinh doanh

Dịch vụ
toàn cầu

<<lớp>>
Phần mềm trung gian
Machine Translated by Google

Cân nhắc phân vùng

• Khớp nối và gắn kết •

Tổ chức người dùng

• Năng lực và/hoặc lĩnh vực kỹ

năng • Phân phối hệ

thống • Bí

mật • Tính biến đổi

Cố gắng tránh sự phụ thuộc theo chu kỳ.


Machine Translated by Google

Ví dụ: Phân vùng

Gói A
MỘT

B
Gói B
Machine Translated by Google

Ví dụ: Lớp ứng dụng

<<lớp>>
Ứng dụng

Sự đăng ký
Machine Translated by Google

Ví dụ: Lớp ứng dụng

Bối cảnh

<<lớp>> <<lớp>>
Ứng dụng Ứng dụng

Sự đăng ký

<<lớp>>
Việc kinh doanh

Dịch vụ
<<lớp>>
Dịch vụ kinh doanh

Hệ thống bên ngoài


Giao diện

Bảo vệ

Hiện vật đại học


Khung GUI giao diện an toàn
Machine Translated by Google

Ví dụ: Dịch vụ kinh doanh

Lớp

<<lớp>>
Dịch vụ kinh doanh

<< hệ thống con>> << hệ thống con>>


Hệ thống thanh toán Khóa họcDanh mụcHệ thống

Hệ thống bên ngoài


Giao diện

Bảo vệ
Cửa hàng đối tượng GUI << hệ thống con>>
Ủng hộ Khung
Bảo vệ
Giám đốc

Chắc chắn
Trường đại học
Giao diện
Hiện vật
Machine Translated by Google

Ví dụ: Lớp dịch vụ kinh doanh

Bối cảnh

<<lớp>>
<< hệ thống con>> Dịch vụ kinh doanh << hệ thống con>>
Hệ thống thanh toán Khóa họcDanh mụcHệ thống

Hệ thống bên ngoài


Giao diện
<<lớp>>
Bảo vệ Việc kinh doanh

Dịch vụ
Cửa hàng đối tượng
GUI << hệ thống con>>
Ủng hộ
Khung
Bảo vệ
Giám đốc

Trường đại học Chắc chắn


Hiện vật <<lớp>>
Giao diện
Phần mềm trung gian

<<lớp>>
Phần mềm trung gian

com.odi java.sql
Machine Translated by Google

Ví dụ: Lớp Middleware

<<lớp>>
Phần mềm trung gian

com.odi java.sql

Bản Phiên Trình quản lý trình điều Kết nối (từ


đồ (từ com.odi) (từ com.odi) khiển (từ com.odi) com.odi)

Giao dịch Cơ sở dữ Tuyên bố (từ Kết quả (từ

(từ com.odi) liệu (từ com.odi) com.odi) com.odi)


Machine Translated by Google

Xác định các bước thiết kế

Xác định các lớp và hệ thống con

Xác định các giao diện hệ thống con

Xác định các cơ hội tái sử dụng

Cập nhật tổ chức thiết kế


Người mẫu

Điểm kiểm tra


Machine Translated by Google

Điểm kiểm tra

• Tổng
quát – Nó có cung cấp bức tranh
toàn cảnh về dịch vụ của các gói
khác nhau không?
– Bạn có thể tìm được cấu trúc tương tự
giải pháp nào có thể được sử dụng
rộng rãi hơn trong lĩnh vực vấn đề?
• Lớp
– Có nhiều hơn bảy lớp không?
• Hệ thống con
– Việc phân vùng hệ thống con có được thực
hiện một cách nhất quán về mặt logic trên
toàn bộ mô hình không?
Machine Translated by Google

Điểm kiểm tra (tiếp theo)

• Gói
– Tên của các gói có mang tính
mô tả không?
– Mô tả gói có phù hợp với trách
nhiệm của các lớp được chứa
không?
– Các phần phụ thuộc của gói có tương ứng với
mối quan hệ giữa các lớp được chứa không?
– Các lớp chứa trong một gói có thuộc về gói đó
theo tiêu chí phân chia gói không?

– Có lớp học hay sự hợp tác của các lớp


trong một gói có thể tách thành một gói độc lập?

– Tỷ lệ giữa số gói và số lớp có phù hợp không?


Machine Translated by Google

Điểm kiểm tra (tiếp theo)

• Các lớp học

– Tên từng lớp có phản ánh rõ vai trò của


nó không?

– Lớp có gắn kết không (nghĩa là tất cả các bộ phận đều

được ghép nối về mặt chức năng)?

– Tất cả các thành phần lớp có cần thiết cho


việc thực hiện ca sử dụng không?

– Tên vai trò của các tập hợp và liên kết có mô


tả chính xác mối quan hệ không?

– Tính đa bội của các mối quan hệ có đúng không?


Machine Translated by Google

Đánh giá: Xác định thiết kế


Yếu tố

• Mục đích của việc xác định các yếu tố


thiết kế là gì?

• Giao diện là gì?

• Hệ thống con là gì? Nó khác với một gói


như thế nào?
• Hệ thống con được sử dụng để làm gì và bạn xác
định chúng như thế nào?

• Một số cân nhắc về phân lớp và phân


vùng là gì?

You might also like