thiết kế hướng đói tượng sử dụng UML

77 2 0
thiết kế hướng đói tượng sử dụng UML

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Ngày đăng: 05/09/2022, 16:40

Tài liệu cùng người dùng

Tài liệu liên quan