Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
362,16 KB
Nội dung
Thi t k hư ng ñ i tư ng - S d ng UML (7) Nguy n Thanh Bình Khoa Công ngh Thông tin Trư ng ð i h c Bách khoa ð i h c ðà N ng N i dung Khái ni m b n hư ng ñ i tư ng Bi u ñ ca s d ng Thi t k c u trúc tĩnh Thi t k c u trúc ñ ng Sinh mã Hư ng ch c D a vào ch c c a h th ng H th ng t p h p ch c Chia nh ch c làm m n d n H th ng g m h th ng Làm ch ñ ph c t p Các ch c trao ñ i v i b ng truy n tham s ho c d li u (ch!ng h n bi n toàn c c) dùng chung Hư ng ch c Phân c p ch c H th ng Ch c Ch c 1.1 Ch c 1.2 Ch c Ch c 2.1 Ch c 2.2 Hư ng ch c Ưu m Phân tích ñư c ch c c a h th ng ðưa l i k t qu mong ñ i Như c ñi m Ch c c u trúc Thay đ i v ch c khó khăn thay ñ i c u trúc Tính m, c a h th ng th p Khó tái s d ng Chi phí s a ch a l-i l n Hư ng ñ i tư ng L y ñ i tư ng làm trung tâm H th ng = t p h p ñ i tư ng + quan h gi a ñ i tư ng Các ñ i tư ng trao đ i b ng thơng p (message) Khơng s d ng bi n tồn c c ðóng gói Th.a k Hư ng đ i tư ng Phân bi t L p trình c u trúc • Thu t tốn + c u trúc d li u = chương trình L p trình HðT • Σđ i tư ng = chương trình • đ i tư ng = thu t toán + c u trúc d li u Hư ng ñ i tư ng Ưu m G n gũi v i th gi i th c Tái s d ng d1 dàng ðóng gói, che d u thơng tin làm cho h th ng tin c y Th.a k làm gi m chi phí, h th ng có tính m, cao Xây d ng h th ng l n ph c t p ð i tư ng ð i tư ng (object) khái ni m cho phép mô t s v t/th c th th gi i th c Các ñ i tư ng trì quan h gi a chúng Nguy1n Văn A m t ñ i tư ng ð i tư ng Các tính ch t c a đ i tư ng ð i tư ng = tr ng thái + hành vi + đ nh danh • Tr ng thái đ c tính c a đ i tư ng t i m t th2i ñi m • Hành vi th hi n ch c c a đ i tư ng • ð nh danh th hi n s t n t i nh t c a ñ i tư ng 10 ð i tư ng : tr ng thái Tr ng thái = t p h p thu c tính M-i thu c tính mơ t m t đ c tính T i m t th2i ñi m c th , thu c tính mang giá tr mi n xác đ nh Ví d • M t chi c xe máy: màu xanh, 110 cm3, dream, 12000km, ñ ng yên, … 11 ð i tư ng : hành vi Hành vi = t p h p phương th c Phương th c: m t thao tác ho c đư c th c hi n b,i nó, ho c th c hi n có yêu c u t mơi trư2ng (thơng p t đ i tư ng khác) Hành vi ph thu c vào tr ng thái Ví d : • m t xe máy có hành vi: kh,i đ ng, ch y, … 12 Giao ti p gi a ñ i tư ng Các ñ i tư ng giao ti p v i G i thơng p (message) cho ð i tư ng A Thơng p ð i tư ng B Các lo i thơng p • • • • • hàm d ng (constructor) hàm h y (destructor) hàm ch7n l a (get) hàm s a ñ i (set) hàm ch c khác 13 ð i tư ng Gi a ñ i tư ng có m i liên k t (link) v i Ví d Nguy n Văn A H c ð i h c ðà N ng 14 L p L p khái ni m dùng ñ mơ t m t t p h p đ i tư ng có m t c u trúc, hành vi có nh ng m i quan h v i ñ i tư ng khác L p = thu c tính + phương th c 15 L p L p m t bư c tr.u tư ng hóa Tìm ki m ñi m gi ng nhau, b qua ñi m khác c a ñ i tư ng Person Name Age changeAge Tr.u tư ng hóa làm gi m đ ph c t p 16 L p Quan h gi a l p: k t h p M t k t h p m t t p h p m i liên k t gi a ñ i tư ng Sinh viên h c ð ih c 17 L p & ð i tư ng ð i tư ng th hi n (instance) c a l p Giá tr th hi n c a thu c tính Liên k t th hi n c a k t h p L p ð i tư ng Thu c tính Giá tr K th p Liên k t 18 Các tính ch t c a HðT Tính đóng gói (encapsulation) d li u + x lý d li u = ñ i tư ng thu c tính + phương th c = l p Ưu ñi m H n ch nh hư,ng có s thay đ i c p nh t Ngăn c n s truy c p thông tin t bên ngồi Che d u thơng tin 19 Các tính ch t c a HðT Tính th.a k (inheritance) M t l p ñư c xây d ng t m t ho c nhi u l p khác b ng vi c chia s8 thu c tính phương th c L p th.a k thu c tính phương th c t l p cha T ng qt hóa/chun bi t hóa • T ng qt hóa (generalization): đ t tính ch t chung c a l p khác vào m t l p cha • Chun bi t hóa (specialization): t o m t l p có tính ch t riêng t l p cha 20 10 Bi u ñ tu n t M t thơng p đ c t trao ñ i gi a ñ i tư ng Các lo i thơng p G7i (call) Tr v (return) G i (send) T o (create) H y (destroy) 125 Bi u đ tu n t Thơng p g7i g7i m t phương th c/thao tác ñ i tư ng ð i tư ng g7i ph i đ i thơng p đư c th c hi n k t thúc m i có th th c hi n cơng vi c khác (thơng p ñ ng b ) M t ñ i tư ng có th g i thơng p cho Kí hi u object A object B object message() G"i thơng p g i G"i cho 126 63 Bi u đ tu n t Thơng p tr v tr v m t giá tr cho ñ i tư ng g7i Kí hi u Object A Object B message() value Thơng p tr v 127 Bi u đ tu n t Thơng p g i g i m t tín hi u đ n m t đ i tư ng Khác v i thơng p g7i, đ i tương g i thơng p g i khơng ch2 đ i, mà ti p t c th c hi n công vi c khác (thơng p khơng đ ng b ) Kí hi u object A object B message() Thơng p g"i 128 64 Bi u đ tu n t Thơng ñi p t o g7i phương th c t o m t đ i tư ng Thơng p h y g7i phương th c h y m t ñ i tư ng Kí hi u Thơng p t o object A object B Thơng p h y 129 Bi u đ tu n t Ví d :A msg1 :B msg2 msg3 … … … 130 65 Bi u ñ tu n t M t thơng p có th đư c g i l p nhi u l n G"i l p thơng p 10 l n Kí hi u object B object A *[1 10]message() ! ""# $ %& '( ) # * 131 Bi u ñ tu n t M t thơng p có th đư c g i l p nhi u l n ph thu c vào m t u ki n G"i l p thơng p C Kí hi u object B object A *[C]message() + $ ,# %& '( ) # * 132 66 Bi u ñ tu n t M t thơng p có th đư c g i ph thu c vào ñi u ki n r8 nhánh Kí hi u object B object A object C [C]message() ,# %& '( ) # ,( ) # [not C]message() %& 133 Bi u ñ tu n t M t thơng p có th đư c g7i đ quy Kí hi u Thơng p đ quy :BinaryTree print() print() 134 67 Bi u đ tu n t Ví d :TàiLi u :MáyFax :Dâyði nTho i g i() nh cMáy() âmM i b mS (s ) ñãK tN i ñãK tN i g"i(trang) chuy n(trang) 135 Bi u ñ tu n t Ví d :Ngư iBán :MáyTínhTi n thanhTốn(s Ti n) :PhiênBánHàng thanhToán(s Ti n) :ThanhToán thanhToán(s Ti n) ti nDư ti nDư tr Ti nDư() 136 68 Bi u ñ tu n t Gi a bi u ñ tương tác bi u ñ l p có m i quan h ch t ch8 v i Ví d MáyTínhTi n PhiênBánHàng m&ThanhTốn() thanhTốn() :MáyTínhTi n m&ThanhToán(s Ti n) :PhiênBánHàng thanhToán(s Ti n) 137 Bi u ñ c ng tác Bi u ñ c ng tác (collaboration diagram) mô t s tương tác gi a ñ i tư ng b ng vi c nh n m nh c u trúc k t h p gi a ñ i tư ng nh ng thơng p trao đ i gi a chúng Bi u ñ c ng tác s m, r ng c a bi u ñ ñ i tư ng Bi u ñ c ng tác ch: th t g i thơng p: m-i thơng p đư c gán m t s tu n t ñi u ki n g i thơng p 138 69 Bi u đ c ng tác C u trúc thơng ñi p ñư c mô t d ng t ng quát sau: precondition / condition sequence * *|| iteration : result := message(parameters) “precondition /”: danh sách s tu n t c a thơng p trư c thơng p c n g i Thơng p ch: ñư c g i ñi t t c thơng p trư c đư c g i “condition”: thơng p ch: đư c g i ñi ñi u ki n ñư c th a mãn “sequence”: s tu n t c a thơng p c n g i Ví d , vi c g i thơng p 1.3.5 theo sau vi c g i thơng p 1.3.4, c hai thơng p n m lu ng 1.3 “*”: ch: thơng p đư c g i ñi nhi u l n m t cách tu n t “*||”: ch: thơng p đư c g i ñi nhi u l n m t cách ñ ng th2i “iteration”: ch: s l n g i thơng p m t cách tu n t ho c ñ ng th2i “result”: ch: giá tr tr v c a thơng p “message”: tên thơng ñi p “parameters”: danh sách tham s c a thơng p 139 Bi u đ c ng tác Ví d : hello() : thơng p có s tu n t [time = 12h] : lunch() : thơng p ch: đư c g i ñi n u lúc 12h 1.3.5 * call() : thơng p đư c g i ñi nhi u l n / *|| [i:= 5] 1.2 : close() : thơng p đư c g i ñi năm l n m t cách ñ ng th2i sau thông ñi p s 1.2, 2.3 / [t < 10] 3.1 name = getName() : thơng p đư c g i sau thơng p 1.2, 2.3 v i ñi u ki n t OneOrder * ListOfOrders − datePlaced − clientID − quantity: Integer + subtotal() : double + total() : double * AirPlane − price : float + getPrice() : float 145 Sinh mã Mã l p OneOrder − quantity: Integer public class OneOrder { public double subtotal() { + subtotal() : double } private int quantity; OneOrder } 146 73 Sinh mã Mã l p OneOrder contains > OneOrder − quantity: Integer * + subtotal() : double AirPlane public class OneOrder { public double subtotal() { } private int quantity; private AirPlane airPlane; − price : float } + getPrice() : float 147 Sinh mã Mã l p ListOfOrders orderListe OneOrder * ListOfOrders − datePlaced − clientID − quantity: Integer public class ListOfOrder { public double total() { } private Date datePlaced; private int clientID; private Vector orderList; + subtotal() : double } + total() : double 148 74 Sinh mã Bi u ñ c ng tác th c hi n phương th c total() : total() : *[for each] subtotal() :ListOfOrders :OneOrder : getPrice() :AirPlane 149 Sinh mã Mã phương th c total() : total() : *[for each] subtotal() :ListOfOrders :OneOrder : getPrice() public double total() { :AirPlane } 150 75 Sinh mã Mã phương th c total() : total() : *[for each] subtotal() :ListOfOrders :OneOrder public double total() { double sum = 0; for (int i=0; i