Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
294,48 KB
Nội dung
Nguyênlý thiếtkế và
mẫuthiếtkế
Nguyên lý thiếtkế…
2
NguyễnViệtHà
Nội dung
Thiếtkế module
Chấtlượngthiết kế
Độ đo thiếtkế tốt
Khái niệm về mẫuthiết kế
Nguyên lý thiếtkế…
3
NguyễnViệtHà
Tài liệu tham khảo
Bruce Eckel, Thinking in Patterns
Erich Gamma, Design Patterns –
Elements of Reusable Object-Oriented
Software
Nguyờn lý thitk
4
NguynVitH
Thit k module
Dựa trên quan điểm "chia để trị"
C(p1 + p2) > C(p1) + C(p2)
E(p1 + p2) > E(p1) + E(p2)
C: độ phức tạp
E: nỗ lực thực hiện
giảm độ phức tạp
cục bộ, dễ sửa đổi
có khả n
ng phát triển song song
dễ sửa đổi, dễ hiểu nên dễ tái sử dụng
Nguyên lý thiếtkế…
5
NguyễnViệtHà
Số lượng module
CÇn x¸c ®Þnh sè m«®un tèi −u
gi¸
phÇn
mÒm
sè module
sè module
tèi −u
chi phÝ ph¸t triÓn module
chi phÝ
tÝch hîp
Nguyờn lý thitk
6
NguynVitH
Chất lợng = Che giấu thông tin
Sử dụng module thông qua các giao diện
tham số và giá trị trả lại
Không cần biết cách thức cài đặt thực tế
thuật toán
cấu trúc d liệu
giao diện ngoại lai (các mô đun thứ cấp, thiết
bị vào/ra)
tàinguyên hệ thống
Nguyờn lý thitk
7
NguynVitH
Che giấu thụng tin: lý do
Giảm hiệu ứng phụ khi sửa đổi module
Giảm sự tác động của thiếtkế tổng thể lên
thiết kế cục bộ
Nhấn mạnh việc trao đổi thông tin thông
qua giao diện
Loại bỏ việc sử dụng d liệu dùng chung
Hớng tới sự đóng gói chức nng - thuộc
tính của thiếtkế tốt
Tạo ra các sản phẩm phần mềm tốt hơn
Nguyờn lý thitk
8
NguynVitH
Chất lợng thiết kế
Phụ thuộc bài toán, không có phơng
pháp tổng quát
Một số độ đo
Coupling: mức độ ghép nối gia các module
Cohesion: mức độ liên quan lẫn nhau của các
thành phần bên trong một module
Understandability: tính hiểu đợc
Adaptability: tính thích nghi đợc
Nguyờn lý thitk
9
NguynVitH
Coupling and Cohesion
Coupling (ghép nối)
độ đo sự liên kết (trao đổi d liệu) gia các mô
đun
ghép nối chặt chẽ thỡ khó hiểu, khó sửa đổi (thiết
kết tồi)
Cohesion (kết dính)
độ đo sự phụ thuộc lẫn nhau của các thành phần
trong một module
kết dính cao thỡ tính cục bộ cao (độc lập chức
nng); dễ hiểu, dễ sửa đổi
Nguyên lý thiếtkế…
10
NguyễnViệtHà
Coupling
møc ®é quan hÖ
cña c¸c module
module nªn
ghÐp nèi láng lÎo
cµng láng lÎo
cµng dÔ söa ®æi
thiÕt kÕ
normal coupling loose
and best
data coupling still very good
stamp coupling ok
control coupling ok
common coupling very bad
content coupling tight and worst
[...]... -> đen trắng -> ảnh nén Kết dính chức nng (functional cohesion) - các thành phần cùng góp phần thực hiện một chức nng - vd: sắp xếp Nguyn Vit H Nguyờn lý thit k 19 Understandability Tính hiểu đợc Ghép nối lỏng lẻo Kết dính cao ợc lập tài liệu Thuật toán, cấu trúc dễ hiểu Nguyn Vit H Nguyờn lý thit k 20 Thiết kế hớng đối tợng Thiết kế hớng đối tợng hớng tới chất lợng thiết kế tốt đóng gói, che dấu... hợp xấu nhất Các module dùng lẫn d liệu của nhau - các ngôn ng bậc thấp không có biến cục bộ - lạm dụng lệnh Goto Nguyn Vit H Nguyờn lý thit k 11 Ghép nối chung (common coupling) Các module trao đổi d liệu thông qua biến tổng thể Lỗi của module này có thể ảnh hởng đến hoạt động của module khác Khó sử dụng lại các module mô đun gây lỗi B A mô đun gặp lỗi C D liệu Nguyn Vit H Nguyờn lý thit k 12 Ghép... Các module trao đổi thông tin điều khiển Làm cho thiết kế khó hiểu, khó sửa đổi, dễ nhầm printRecord (name, sex) printName Nguyn Vit H Nguyờn lý thit k 13 Ghép nối nhãn (stamp coupling) Các module trao đổi thừa thông tin Module có thể thực hiện chức nng ngoài ý muốn Làm giảm tính thích nghi (age) (personel record) calcAge Nguyn Vit H Nguyờn lý thit k 14 Ghép nối d liệu (data coupling) Truyền d liệu. .. far Nguyờn lý thit k 16 Các chủng loại kết dính Kết dính gom góp (coincidental cohesion) - các thành phần không liên quan đến nhau Kết dính lô gic (logical cohesion) - các thành phần làm chức nng lô gic tơng tự - vd: hàm xử lý lỗi chung Kết dính thời điểm (temporal cohesion) - các thành phần hoạt động cùng thời điểm - vd: hàm khởi tạo (đọc d liệu, cấp phát bộ nhớ ) Nguyn Vit H Nguyờn lý thit k 17... Nguyờn lý thit k 17 Các chủng loại kết dính Kết dính thủ tục (procedural cohesion) - các thành phần tạo có một thứ tự xác định - vd: tính lơng cơ bản, tính phụ cấp, tính bảo hiểm Kết dính truyền thông (communicational cohesion) - các thành phần truy cập cùng d liệu - vd: thống kê (tính max, min, mean, variation ) Nguyn Vit H Nguyờn lý thit k 18 Các chủng loại kết dính Kết dính tuần tự (sequential cohesion)... tính thích nghi (age) (personel record) calcAge Nguyn Vit H Nguyờn lý thit k 14 Ghép nối d liệu (data coupling) Truyền d liệu qua tham số Nhận kết quả qua tham số và giá trị trả lại (day of week) (date) calcDayOfWeek Nguyn Vit H Nguyờn lý thit k 15 Cohesion mỗi module chỉ nên thực hiện một chức nng mọi thành phần nên tham gia thực hiện chức nng đó Nguyn Vit H functional sequential communicational procedural... đóng gói, che dấu thông tin là các thực thể hoạt động độc lập trao đổi d liệu qua thông điệp có khả nng kế thừa cục bộ, dễ hiểu, dễ tái sử dụng Nguyn Vit H Nguyờn lý thit k 21 Adaptability Tính thích nghi đợc Hiểu đợc sửa đổi đợc, tái sử dụng c Tự chứa không sử dụng th viện ngoài mâu thuẫn với xu hớng tái sử dụng Nguyn Vit H Nguyờn lý thit k 22 Adaptability (2) Cỏc chc nng cn c thit k sao cho d dng m... Nguyn Vit H Nguyờn lý thit k 25 Yờu cu Thng nht thao tỏc vi mi i tng: button, window, D dng - nh ngha giao din (interfaces): Thng nht cỏch thc to i tng D dng thay i cỏc h lp i tng D dng thờm h mi Nguyn Vit H Nguyờn lý thit k 26 Gii phỏp nh ngha Factory - lp to i tng: class WidgetFactory { Button makeButton(args) = 0; Window makeWindow(args) = 0; // other widgets } Nguyn Vit H Nguyờn lý thit k 27 Gii... new WinWindow(args); } } Nguyn Vit H Nguyờn lý thit k 28 Gii phỏp (tt) Chn h lp mun dựng: WidgetFactory wf = new WinWidgetFactory(); Khi khi to i tng, khụng dựng "new" m gi: Button b = wf.makeButton(args); Thay i h i tng - ch mt ln trong mó ci t! Thờm h - thờm mt factory, khụng nh hng ti mó ang tn ti! Nguyn Vit H Nguyờn lý thit k 29 S lp Nguyn Vit H Nguyờn lý thit k 30 ng dng Cỏc h iu hnh khỏc nhau... cho cỏc bi toỏn thng gp Nguyn Vit H Nguyờn lý thit k 23 Mu thit k (Design Patterns) Creational - Thay th cho khi to tng minh, ngn nga ph thuc mụi trng (platform) Structural - thao tỏc vi cỏc lp khụng thay i c, gim ghộp ni v cung cp cỏc gii phỏp thay th k tha Behavioral - Che du ci t, che du thut toỏn, cho phộp thay i ng cu hỡnh ca i tng Nguyn Vit H Nguyờn lý thit k 24 Abstract Factory Mt chng trỡnh . Nguyên lý thiếtkế và
mẫuthiếtkế
Nguyên lý thiếtkế…
2
NguyễnViệtHà
Nội dung
Thiết kế module
Chất lượng thiết kế
Độ đo thiết kế tốt
Khái. lượng thiết kế
Độ đo thiết kế tốt
Khái niệm về mẫu thiết kế
Nguyên lý thiếtkế…
3
NguyễnViệtHà
Tài liệu tham khảo
Bruce Eckel, Thinking in Patterns