You are on page 1of 32

Machine Translated by Google

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

Mô-đun 16: Thiết kế hệ thống con


Machine Translated by Google

Mục tiêu: Thiết kế hệ thống con

• Mô tả mục đích của Hệ thống con


Thiết kế và nó được thực hiện ở đâu
trong vòng đời

• Xác định các hành vi được chỉ định


trong các giao diện của hệ thống con
về mặt cộng tác của các lớp được chứa

• Ghi lại cấu trúc bên trong của hệ thống

con

• Xác định sự phụ thuộc vào các phần


tử bên ngoài hệ thống con
Machine Translated by Google

Thiết kế hệ thống con 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

(Không bắt buộc)


Tinh chỉnh
Ngành kiến trúc

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

Tổng quan về thiết kế hệ thống con

<< hệ thống con>>


Hệ thống con

Dự án cụ thể Thiết kế hệ thống


Hướng dẫn
con và giao diện

Hệ thống con
Thiết kế

Lớp thiết kế
Mẫu thiết kế
Machine Translated by Google

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

Giao diện

Một hệ thống con:

• Là sự “giao thoa” giữa gói và lớp

• Hiện thực hóa một hoặc nhiều giao diện xác định hành vi của nó

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

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


Hệ thống con
Giao diện

<< hệ thống con>>


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

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


Machine Translated by Google

Nguyên tắc hệ thống con

• Bàn thắng

– Khớp nối lỏng lẻo

– Tính di động, khả năng tương << hệ thống con>>

MỘT

thích plug-and-play

– Cách nhiệt khỏi sự thay đổi

- Tiến hóa độc lập


<< hệ thống con>>

• Đề xuất mạnh mẽ B

– Không lộ chi tiết, chỉ giao diện

– Chỉ phụ thuộc vào các giao diện khác

Chìa khóa là sự trừu tượng và đóng gói << hệ thống con>>


C
Machine Translated by Google

Các bước thiết kế hệ thống con

• Phân phối hành vi của hệ thống con tới


các thành phần hệ thống

con • Lập tài liệu các thành phần hệ

thống con • Mô tả các phụ thuộc của hệ thống

con • Điểm kiểm tra


Machine Translated by Google

Các bước thiết kế hệ thống con

Phân phối hành vi của hệ thống con tới các


thành phần hệ thống con

Các phần tử hệ thống con tài liệu

Mô tả sự phụ thuộc của hệ thống con

Điểm kiểm tra


Machine Translated by Google

Trách nhiệm của hệ thống con

• Trách nhiệm của hệ thống con được xác định bởi

giao diện hoạt động

– Thực hiện giao diện mô hình

• Giao diện có thể được thực hiện bởi

– Hành vi nội bộ lớp

– Hành vi của hệ thống con


<<giao diện>>

Hệ thống ICourseCatalog

<< hệ thống con>>


getCourseOfferings ()
Khởi tạo () Khóa họcDanh mụcHệ thống

getCourseOfferings ()
Khởi tạo ()
Trách nhiệm của hệ thống con
Machine Translated by Google

Hệ thống con phân phối

Trách nhiệm
• Xác định mới hoặc tái sử dụng các phần tử thiết kế hiện
có (ví dụ: các lớp và/hoặc hệ thống con)
• Phân bổ trách nhiệm của hệ thống con cho các thành phần
thiết kế • Kết hợp các cơ chế có thể áp dụng (ví
dụ: tính bền bỉ, phân phối)
• Lập tài liệu về sự cộng tác của các yếu tố thiết kế trong “hiện
thực hóa giao diện”

– Một hoặc nhiều sơ đồ tương tác cho mỗi hoạt động


giao diện
– (Các) sơ đồ lớp chứa các mối quan hệ phần tử
thiết kế được yêu cầu
• Xem lại “Xác định các yếu tố thiết kế”
– Điều chỉnh ranh giới và phụ thuộc của hệ thống
con nếu cần
Machine Translated by Google

Cổng là gì?

• Điểm kết nối trong tương ví dụ về sd


tác dành cho tin nhắn đi
vào hoặc đi ra ngoài : Tên lớp

tương tác.
Cổng vào

– Một điểm trên


Cổng đầu ra
ranh giới của sơ
đồ trình tự
– Tên tin nhắn kết nối
chính là tên cổng
Machine Translated by Google

Tương tác hệ thống con

Sơ đồ

: Hệ thống con khách hàng : Hệ thống con nhà cung cấp

thực hiệnTrách nhiệm( )


Tương
tác hệ
thống con nội bộ

Trách nhiệm
của hệ thống con

Chế độ xem hộp đen của các hệ thống con


Machine Translated by Google

Cơ cấu nội bộ của nhà cung cấp

Hệ thống con

• Người quản lý hệ thống con Hệ thống con nhà cung cấp

điều phối hành vi bên trong của

hệ thống con. : Người quản lý hệ thống con

: Thiết kế : Thiết kế
Yếu tố1 Yếu tố2

• Hành vi hoàn chỉnh

của hệ thống con được phân bổ

giữa các lớp Phần tử Thiết kế

nội bộ.
Machine Translated by Google

Quy ước mô hình hóa: Nội bộ

Tương tác hệ thống con

sd Thực hiệnTrách nhiệm

: Hệ thống con : Thiết kế : Thiết kế


Giám đốc Yếu tố1 Yếu tố2

thực hiệnTrách nhiệm( )


làm cái này( )

làm việc đó đi( )

cái này( )

cái đó( )

Chế độ xem hộp màu trắng của Hệ thống con nhà cung cấp
Machine Translated by Google

Ví dụ: CourseCatalogSystem

Hệ thống con trong bối cảnh

: RegisterForCoursesForm : RegistrationController : CourseCatalogSystem : Lịch trình : Sinh viên

1: // tạo lịch trình

1.1: // nhận các khóa học


1.1.1: getCourseOfferings Hệ thống con
Sinh viên mong muốn
tạo lịch
trình mới

Trách nhiệm của


1.3: // hiển thị các khóa học
Một danh sách các hệ thống con
khóa học có sẵn cho học
kỳ này được hiển thị

Một lịch trình trống


1.5: // hiển thị lịch trống
được hiển thị để Học sinh
lựa chọn các dịch vụ

giới thiệu

Chọn ưu đãi

giới thiệu

Gửi lịch trình

Quyền truy cập cơ sở dữ liệu RDBMS kế thừa


Machine Translated by Google

Tích hợp kiến trúc

Cơ chế: Kiên trì

• Phân tích-Lớp-đến-Kiến trúc-

Bản đồ cơ chế từ phân tích trường hợp sử dụng

Lớp phân tích (Các) Cơ chế phân tích

Học sinh Kiên trì, Bảo mật OODBMS


Lịch trình Kiên trì, Bảo mật Tính kiên trì

khóa học cung cấp Giao diện ổn định, kế thừa RDBMS


Khóa học Giao diện ổn định, kế thừa Tính kiên trì

Trình điều khiển đăng ký Phân bổ

Tính ổn định của OODBMS đã được thảo luận trong Thiết kế ca sử dụng
Machine Translated by Google

Đánh giá: Kết hợp JDBC:

bước
1. Cung cấp quyền truy cập vào các thư viện lớp cần thiết

để triển khai JDBC

√ – Cung cấp gói java.sql


2. Tạo các DBClass cần thiết
– Một DBClass cho mỗi lớp liên tục
– Khóa học Cung cấp lớp học liên tục =>
DBCourseCung cấp

√ = Xong
Machine Translated by Google

Đánh giá: Kết hợp JDBC:

Các bước (tiếp theo)


3. Kết hợp DBClass vào thiết kế
– Phân bổ theo gói/lớp
• Cung cấp DBCourse được đặt trong
Hệ thống con CourseCatalogSystem
– Thêm mối quan hệ từ các khách hàng kiên trì
• Máy khách ổn định là máy
khách của hệ thống con CourseCatalogSystem
4. Tạo/Cập nhật sơ đồ tương tác mô tả:

– Khởi tạo cơ sở dữ liệu


– Truy cập lớp liên tục: Tạo, Đọc, Cập
nhật, Xóa
Machine Translated by Google

Đánh giá: Tính kiên trì: RDBMS:

JDBC: Đọc

: PersistencyClient : DBClass : Sự liên quan : Tuyên bố : Bộ kết quả : PersistentClassList : PersistentClass

Trả về một Câu lệnh SQL được


1. đọc (chuỗi)
Tuyên bố DBClass xây dựng bằng
1.1. createStatement( ) cách sử dụng các
tiêu chí đã cho sẽ
Tiêu chí được sử được chuyển đến execQuery()
1.2. thực thiQuery(chuỗi)
dụng để truy cập dữ
1.3 // execQuery()
liệu cho lớp liên tục

1.4. mới( )

vòng Tạo một danh sách để chứa tất cả

dữ liệu được truy xuất

[đối với mỗi lớp từ truy vấn thực thi]


1.5. mới()

vòng

[cho mỗi thuộc tính trong lớp] 1.6. getString( )

1.7. setData( )

1.8. thêm (PersistentClass)


Machine Translated by Google

Ví dụ: Hệ thống con CourseCatalogSystem cục bộ

Sự tương tác

Hệ thống con

sd getCourseƯu đãi

kiên trì kiên trì


dbClass Danh sách lớp Lớp học
kiên trìClient
:Catalog khóa học :DBCourse : Kết nối : Tuyên bố : Bộ kết quả : Khóa học : Khóa học

Hệ Chào bán Danh sách ưu đãi Chào bán : Danh mục khóa học

thống getCourse
Chào bán()

hiện //thực hiện


//thực

Truy vấn()
giới thiệu

Đọc JDBC
Machine Translated by Google

Ví dụ: Hệ thống con hệ thống thanh toán trong

Bối cảnh

giao diện hệ thống con

: ĐóngĐăng ký : ĐóngĐăng ký : ICourseCatalog : Khóa học : Lịch trình : Học sinh. : Thanh toán
: Nhà đăng ký
Hình thức Bộ điều khiển Hệ thống Chào bán Hệ thống

1. // đóng đăng ký( )


Truy xuất danh sách
1.1. // đăng ký có mở không?( )
các khóa học cho học
kỳ hiện tại
2. // đóng đăng ký( )
Đóng
2.1. getCourseOfferings(Học kỳ) đăng ký cho
mỗi khóa
cung cấp
học Nếu số lượng khóa
tối đa
học
của
Lặp lại hai lần điều này
sơ cấp tối đa đã chọn chưa
2.2. // đóng đăng ký( )
là vì sự đơn được cam kết, hãy chọn
giản; thực tế là
các khóa học thay thế).
một con số không xác định
số lần lặp có thể
xảy ra) 2.3. // mức độ( )

Cuối cùng cam kết


2.4. // đóng( ) Hiện đang giả định học phí dựa trên số
hoặc hủy bỏ việc cung
lượng dịch vụ được thực hiện và các đặc
cấp khóa học sau
điểm nhất định của sinh viên. Nếu các dịch vụ khác
khi tất cả việc lên cấp đã diễn ra
nhau có mức giá khác nhau thì điều này sẽ thay đổi một chút.

2.5. getTuition( )
Gửi sinh viên và học phí đến Hệ

thống thanh toán, hệ thống này sẽ


thực hiện thanh toán thực tế 2.6. submitBill(Sinh viên, gấp đôi)
cho sinh viên theo lịch trình.

trách nhiệm của hệ thống con


Machine Translated by Google

Ví dụ: Hệ thống thanh toán địa phương

Tương tác hệ thống con

Hệ thống con

Hệ thống thanh toán : Hệ thống thanh toán : Giao dịch thanh toán của sinh viên : Học sinh
:Giao diện hệ thống thanh toán
: Hệ thống thanh toán
Khách hàng

1. submitBill(Sinh viên, gấp đôi)

Truy xuất

thông tin phải có trên


1.1. create(Sinh viên, gấp đôi) hóa đơn

1.1.1. // lấy thông tin liên hệ( )

1.2. gửi (Giao dịch thanh toán của sinh viên)

1.2.1. // mở kết nối( )

1.2.2. // xử lý giao dịch( )

1.2.3. // đóng kết nối( )


Machine Translated by Google

Các bước thiết kế hệ thống con

Phân phối hành vi của hệ thống con tới các


thành phần hệ thống con

Các phần tử hệ thống con tài liệu

Mô tả sự phụ thuộc của hệ thống con

Điểm kiểm tra


Machine Translated by Google

Ví dụ: Hệ thống con CourseCatalogSystem

Yếu tố

<<Giao diện>>
ICourseCatalogSystem (từ Hệ thống con
Giao diện hệ thống bên ngoài)
Thành phần

getCourseOfferings(forSemester : Học kỳ) : CourseOfferingList

<< hệ thống con >>


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

Giao diện hệ thống con


getCourseOfferings(forSemester : Học kỳ) : CourseOfferingList

Danh sách ưu đãi khóa


học (từ University Artifacts) DBCourseCung cấp

mới() create() : CourseOffering


thêm() read(searchCriteria : string): CourseOfferingList

1 1

0..*
1

Trình quản lý trình điều khiển <<Thực thể>>


Sự liên quan Tuyên bố (từ
(từ java.sql) Cung cấp khóa học Bộ kết quả
(từ University Artifacts) (từ java.sql) java.sql)
(từ java.sql)
getConnection(url, user, pass): Kết nối

mới() createStatement() execuQuery()


execUpdate() getString()
setData()
Machine Translated by Google

Ví dụ: Hệ thống thanh toán

Các thành phần hệ thống con

<<Giao diện>>
IBillingSystem
(từ Giao diện hệ thống bên ngoài)

gửiBill()
Giao dịch thanh toán sinh viên

create(forStudent : Sinh viên, forAmount : gấp đôi)

Hệ thống con
Giao diện
<<Thực thể>>
<< hệ thống con>>
Sinh viên
Hệ thống thanh toán
(từ University Artifacts)

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


// lấy thông tin liên hệ()

Hệ thống con
0..1
Thành phần
Giao diện hệ thống thanh toán

submit(theTransaction : Giao dịch thanh toán sinh viên)


Machine Translated by Google

Các bước thiết kế hệ thống con

Phân phối hành vi của hệ thống con tới các


thành phần hệ thống con

Các phần tử hệ thống con tài liệu

Mô tả sự phụ thuộc của hệ thống con

Điểm kiểm tra


Machine Translated by Google

Phụ thuộc hệ thống con:

Hướng dẫn

• Sự phụ thuộc của hệ thống con vào hệ thống con

Linh hoạt,
<< hệ thống con>> << hệ thống con>>
Ưu tiên
Hỗ trợ khách hàng Hỗ trợ máy chủ
Máy chủ

• Sự phụ thuộc của hệ thống con vào một gói

Hỗ trợ
<< hệ thống con>> Sử dụng cẩn thận
Các loại
Hỗ trợ khách hàng
Machine Translated by Google

Ví dụ: Hệ thống con CourseCatalogSystem

phụ thuộc

<< hệ thống con>> Hệ thống bên ngoài


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

(từ Dịch vụ kinh doanh) (từ Dịch vụ kinh doanh)

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

(từ Phần mềm trung gian)


(từ Dịch vụ kinh doanh)
Machine Translated by Google

Ví dụ: Hệ thống thanh toán

Phụ thuộc hệ thống con

<< hệ thống con>>


Hệ thống thanh
toán (từ Dịch vụ kinh doanh)

Hệ thống bên ngoài


Hiện vật của trường
Giao diện
đại học (từ Dịch vụ kinh doanh)
(từ Dịch vụ kinh doanh)
Machine Translated by Google

Các bước thiết kế hệ thống con

Phân phối hành vi của hệ thống con tới các


thành phần hệ thống con

Các phần tử hệ thống con tài liệu

Mô tả sự phụ thuộc của hệ thống con

Điểm kiểm tra


Machine Translated by Google

Điểm kiểm tra: Thiết kế

Hệ thống con
• Mối liên kết hiện thực hóa có được xác định cho

từng giao diện do hệ thống con cung cấp không?

• Mối liên kết phụ thuộc có được xác định cho từng
giao diện được hệ thống con sử dụng không?

• Bạn có chắc chắn rằng không có thành phần nào trong


hệ thống con được hiển thị công khai không?

• Mỗi thao tác trên một giao diện có được hệ


thống con thực hiện được ghi lại trong sơ
đồ tương tác không? Nếu không, hoạt động có
được thực hiện bởi một lớp duy nhất để
dễ dàng thấy rằng có một ánh xạ 1:1 đơn
giản giữa hoạt động lớp và hoạt động giao diện không?
Machine Translated by Google

Đánh giá: Thiết kế hệ thống con

• Mục đích của Thiết kế hệ


thống con là gì?

• Cổng là gì? • Tại

sao các phần phụ thuộc vào một


hệ thống con lại nằm trên
giao diện của hệ thống con?

You might also like