Bài giảng Nhập môn công nghệ phần mềm - Chương 7: Thiết kế hướng đối tượng - Sử dụng UML - Nguyễn Thanh Bình
Hướng chức năng
Dựa vào các chức năng của hệ thống
Hệ thống là tập hợp các chức năng
Chia nhỏ các chức năng và làm mịn dần
Hệ thống gồm các hệ thống con
Làm chủ độ phức tạp
Các chức năng trao đổi với nhau bằng
truyền tham số hoặc dữ liệu (chẳng hạn
biến toàn cục) dùng chung
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Nhập môn công nghệ phần mềm - Chương 7: Thiết kế hướng đối tượng - Sử dụng UML - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Nhập môn công nghệ phần mềm - Chương 7: Thiết kế hướng đối tượng - Sử dụng UML - Nguyễn Thanh Bình
ình khái ni m c a h th ng/ph n m m bán hàng t i siêu th Ph n m m bán hàng s d ng t i siêu th nh m giúp ghi nh n ho t ñ ng bán hàng, x lý các thanh toán v i khách hàng. Ph n m m ñư c s d ng b i ng ư i bán hàng và ñư c qu n lý b i ng ư i qu n lý siêu th . Ph n m m nh m t ñ ng hóa công vi c c a ng ư i bán hàng t i qu y thu ti n. 103 Bài t p 1 1 MatHang * DongHang * 1 MoTaMatHang 1..* * * 1 1 1 1..* 1 * 1 PhienBanHang CuaHang DanhMucMatHang 1 1 * 1 1..* 1 1 1..* HeThongBanHang 1 1 QuayTinhTien 1 ThanhToan KháchHàng 1 1 1 NguoiQuanLy Ng ư iBán NhânViên 104 52 Bài t p 2 Qu n lý ñào t o trung tâm tin h c: M t công ty mu n mô t b ng UML vi c ñào t o nhân viên ñ tin h c hóa m t s công vi c. Vi c ñào t o ñư c b t ñ u khi ng ư i qu n lý ñào t o nh n ñư c yêu c u ñào t o c a m t nhân viên. Nhân viên này có th xem danh m c các chuyên ñ ñào t o c a các ñơ n v ñào t o ký k t v i công ty. Yêu c u c a nhân viên ñư c xem xét b i ng ư i qu n lý ñào t o và ng ư i qu n lý s tr l i là ch p nh n hay t ch i ñ ngh ñó. Trong tr ư ng h p ch p nh n, ng ư i qu n lý s xác ñ nh chuyên ñ phù h p trong danh m c các chuyên ñ , sau ñó g i cho nhân viên n i dung c a chuyên ñ và danh sách các khóa ñào t o. Nhân viên s ch n khóa ñào t o và ng ư i qu n lý s ñă ng ký khóa h c v i ñơ n v ñào t o cho nhân viên. Trong tr ư ng h p mu n h y b ñă ng ký khóa ñào t o, nhân viên ph i thông báo s m cho ng ư i qu n lý bi t ñ ng ư i qu n lý th c hi n h y b . Cu i khóa ñào t o, nhân viên chuy n phi u ñánh giá k t qu h c v cho công ty. Ng ư i qu n lý s ki m tra hóa ñơ n thanh toán ti n c a ñơ n v ñào t o. Xây d ng bi u mô hình khái ni m. 105 Bi u ñ l p Bi u ñ l p ñ nh ngh ĩa: Các l p (class) • Các thu c tính (attribut) c a l p: các bi n và ki u c a chúng • Các thao tác (operation) c a l p: các ph ươ ng th c (method), các tham ñ i và có th giá tr tr v Các quan h gi a các l p 106 53 Bi u ñ l p Bi u ñ l p có cùng quy t c cú pháp v i mô hình khái ni m Th c ra, mô hình khái ni m s d ng các cú pháp c a bi u ñ l p trong UML T t c các kí hi u và quy t c (ñã trình bày) ñ i v i mô hình khái ni m ñ u ñư c s d ng ñ xây d ng bi u ñ l p Bi u ñ l p ñư c xây d ng d a trên mô hình khái ni m Các l p có th ch y u là các khái ni m ho c các thành ph n khác Bi u ñ l p s là n n t ng cho bư c mã hóa 107 Bi u ñ l p ð i v i bi u ñ l p, m i thu c tính hay m i ph ươ ng th c có th có thêm m c kh ki n – kh năng nhìn th y (visibility) Kí hi u “–” m c riêng (priviate), thu c tính hay ph ươ ng th c ch ñư c nhìn th y b i ñ i tư ng c a l p ñó “#” m c b o v (protected), thu c tính hay ph ươ ng th c ch ñư c nhìn th y b i ñ i tư ng c a l p ñó và ñ i tư ng c a các l p th a k l p ñó “+” m c chung (public), thu c tính hay ph ươ ng th c ch ñư c nhìn th y b i ñ i tư ng c a t t c các l p 108 54 Bi u ñ l p Ví d Tên l p Shape Thu c tính – origin : Point + setOrigin(p : Point) Ph ươ ng th c + getOrigin() : Point) + move(p : Point) + resize(s : Scale) + display() # pointInShape(p : Point) : Boolean 109 Bi u ñ l p Thu c tính d n xu t (derived attribut) là các thu c tính c a bi u ñ l p mà có th suy ra t các thu c tính khác. Kí hi u: thu c tính d n xu t b t ñ u b i “/”, m t ràng bu c có th ñi kèm ñ gi i thích s d n xu t Ví d Person Ràng bu c name Thu c tính d n xu t birthDate {age = CurrentDate – birthDate} / age 110 55 Bi u ñ l p Các quan h gi a các l p Quan h k t h p (association) Quan h chuyên bi t hóa/t ng quát hóa (specialization/generalization) Quan h h p thành (composition) Quan h k t t p (agregation) Quan h ph thu c (dependence) 111 Bi u ñ l p Quan h k t h p (association) Quan h k t h p 1 * Qu yHàng Ch a > M tHàng Quan h chuyên bi t hóa/t ng quát hóa (specialization/generalization) NhânViên Quan h t ng quát hóa Ng ư iBánHàng Ng ư iQu nLý 112 56 Bi u ñ l p Quan h k t t p (agregation) Quan h 0..* Company * Person Quan h h p thành (composition) Quan h DanhM cM tHàng 1 * M tHàng 113 Bi u ñ l p Quan h ph thu c (dependence): mô t m t l p ph thu c vào l p khác Ví d Quan h ph th c Circle Point center : Point 114 57 Bi u ñ l p Ví d : chuy n ñ i mô hình khái ni m thành bi u ñ l p Gi s mô hình khái ni m ThanhToán 1thanh toán > 1 PhiênBánHàng ThanhToánB ngTi nM t ThanhToánB ngTh 115 Bi u ñ l p Chi ti t các thu c tính ThanhToán 1thanh toán > 1 PhiênBánHàng t ng : Integer ThanhToánB ngTi nM t ThanhToánB ngTh 116 58 Bi u ñ l p Chi ti t các ph ươ ng th c ThanhToán 1thanh toán > 1 PhiênBánHàng t ng : Integer tínhT ng() : Integer ThanhToánB ngTi nM t ThanhToánB ngTh nh nTi n() tr VàoTh () 117 Bi u ñ l p Xác ñ nh các m c kh ki n ThanhToán 1thanh toán > 1 PhiênBánHàng # t ng : Integer + tínhT ng() : Integer ThanhToánB ngTi nM t ThanhToánB ngTh + nh nTi n() + tr VàoTh () 118 59 N i dung Khái ni m c ơ 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ã 119 C u trúc ñ ng Bi u ñ tương t ác Bi u ñ tu n t Bi u ñ c ng tác 120 60 Bi u ñ tươ ng tác Bi u ñ tươ ng tác mô t hành vi c a h th ng M i bi u ñ tươ ng tác tươ ng ng m t tác v ñư c th c hi n b i m t s các ñ i tư ng Bi u ñ tươ ng tác xây d ng d a trên n n t ng c a bi u ñ ho t ñ ng và bi u ñ tr ng thái Bi u ñ tươ ng tác mô t các hành ñ ng c a các ñ i tư ng ñ th c hi n m t tác v . Các hành ñ ng c a ñ i tư ng bao g m: g i các thông ñi p (message) gi a các ñ i tư ng t o (create) và h y (destroy) các ñ i tư ng 121 Bi u ñ tu n t Bi u ñ tu n t (sequence diagram) bi u di n s tương t ác gi a các ñ i t ư ng b ng vi c nh n m nh th t trao ñ i thông ñi p gi a các ñ i t ư ng Bi u ñ tu n t g m: các ñ i tư ng các thông ñi p trao ñ i gi a các ñ i tư ng 122 61 Bi u ñ tu n t M i ñ i tư ng có m t ñư ng sinh t n (lifeline) bi u di n th i gian t n t i c a nó. Kí hi u ð i tư ng object object:Class :Class ðư ng sinh t n 123 Bi u ñ tu n t Th i gian ho t ñ ng (activation) là th i gian mà ñ i tư ng ñang th c hi n m t thao tác Kí hi u object Th i gian ho t ñ ng 124 62 Bi u ñ tu n t M t thông ñi p ñ c t trao ñ i gi a các ñ i tư ng Các lo i thông ñi p G i (call) Tr v (return) G i (send) T o (create) H y (destroy) 125 Bi u ñ tu n t Thông ñi p g i g i m t ph ươ ng th c/thao tác trên ñ i tư ng ð i tư ng g i ph i ñ i thông ñi 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 ñi p ñ ng b ) M t ñ i tư ng có th g i thông ñi p cho chính nó Kí hi u object A object B object message() G i thông ñi p g i G i cho chính nó 126 63 Bi u ñ tu n t Thông ñi p tr v tr v m t giá tr cho ñ i tư ng g i Kí hi u Object A Object B message() value Thông ñi p tr v 127 Bi u ñ tu n t Thông ñi p g i g i m t tín hi u ñ n m t ñ i tư ng Khác v i thông ñi p g i, khi ñ i tươ ng g i thông ñi p g i nó không ch ñ i, mà ti p t c th c hi n công vi c khác (thông ñi p không ñ ng b ) Kí hi u object A object B message() Thông ñi p g i 128 64 Bi u ñ tu n t Thông ñi p t o g i ph ươ ng th c t o m t ñ i tư ng Thông ñi p h y g i ph ươ ng th c h y m t ñ i tư ng Kí hi u Thông ñi p t o object A > object B > Thông ñi p h y 129 Bi u ñ tu n t Ví d public class A { :A private B objB; public void msg1() msg1 > { :B objB = new B(); objB.msg2(); msg2 objB.msg3(); } } msg3 public class B { public void msg2() { } public void msg3() { } } 130 65 Bi u ñ tu n t M t thông ñi p có th ñư c g i l p nhi u l n Kí hi u G i l p thông ñi p 10 l n object A object B *[1..10] message() for(i = 1; i<= 10; i++) { objectB.message() } 131 Bi u ñ tu n t M t thông ñi p có th ñư c g i l p nhi u l n ph thu c vào m t ñi u ki n Kí hi u G i l p thông ñi p trong khi C ñúng object A object B *[C] message() while(C) { objectB.message() } 132 66 Bi u ñ tu n t M t thông ñi p có th ñư c g i ph thu c vào ñi u ki n r nhánh Kí hi u object A object B object C [C]message() if(C) objectB.message(); else [not C]message() objectC.message(); 133 Bi u ñ tu n t M t thông ñi p có th ñư c g i ñ quy Kí hi u Thông ñi 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 :PhiênBánHàng thanhToán(s Ti n) 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 và bi u ñ l p và có m i quan h ch t ch v i nhau Ví d MáyTínhTi n PhiênBánHàng m ThanhToán() thanhToán() :MáyTínhTi n :PhiênBánHàng m ThanhToán(s Ti n) 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 các ñ i t ư ng b ng vi c nh n m nh c u trúc k t h p gi a các ñ i t ư ng và nh ng thông ñi p trao ñ i gi a chúng Bi u ñ c ng tác là s m r ng c a bi u ñ ñ i t ư ng Bi u ñ c ng tác ch ra th t g i các thông ñi p: m i thông ñi p ñư c gán m t s tu n t ñi u ki n g i các thông ñi 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 nh ư sau: precondition / condition sequence * *|| iteration : result := message (parameters ) “precondition / ”: danh sách s tu n t c a các thông ñi p tr ư c thông ñi p c n g i. Thông ñi p ch ñư c g i ñi khi t t c các thông ñi p tr ư c nó ñã ñư c g i ñi. “condition”: thông ñi p ch ñư c g i ñi khi ñi u ki n ñư c th a mãn. “sequence ”: s tu n t c a thông ñi p c n g i. Ví d , vi c g i thông ñi p 1.3.5 theo sau vi c g i thông ñi p 1.3.4, c hai thông ñi p này n m trong lu ng 1.3. “*”: ch ra thông ñi p ñư c g i ñi nhi u l n m t cách tu n t . “*||”: ch ra thông ñi p ñư c g i ñi nhi u l n m t cách ñ ng th i. “iteration”: ch ra s l n g i thông ñi p m t cách tu n t ho c ñ ng th i “result ”: ch ra giá tr tr v c a thông ñi p. “message ”: tên thông ñi p “parameters ”: danh sách các tham s c a thông ñi p. 139 Bi u ñ c ng tác Ví d 4 : hello() : thông ñi p có s tu n t là 4. [time = 12h] 1 : lunch() : thông ñi p này ch ñư c g i ñi n u là lúc 12h. 1.3.5 * call() : thông ñi p này ñư c g i ñi nhi u l n. 3 / *|| [i:= 1..5] 1.2 : close() : thông ñi p này ñư c g i ñi n ăm l n m t cách ñ ng th i và sau thông ñi p s 3. 1.2, 2.3 / [t < 10] 3.1 name = getName() : thông ñi p này ñư c g i ñi sau các thông ñi p 1.2, 2.3 và v i ñi u ki n t<10. 140 70 Bi u ñ c ng tác Ví d bi u ñ c ng tác :Ng ư iBán :ThanhToán 1 : thanhToán(s Ti n) 1.1.1 : > 2 : tr Ti nD ư() 1.1.3 : ti nD ư() 1.1.2 : thanhToán(s Ti n) 1.1.4 : > 1.2 ti nD ư() :H Th ng :PhiênBánHàng 1.1 : thanhToán(s Ti n) 141 Bi u ñ tươ ng tác Bài t p 1: Máy rút ti n ATM Xây d ng bi u ñ tu n t cho ca s d ng rút ti n trong tr ư ng h p thành công Xây d ng bi u ñ tu n t cho ca s d ng xem s ti n dư trong tài kho n 142 71 N i dung Khái ni m c ơ 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ã 143 Sinh mã Chuy n các mô hình thi t k sang mã ch ươ ng trình (C++, Java, ) Mã ch ươ ng trình hư ng ñ i tư ng ð nh ngh ĩa các l p và giao di n ð nh ngh ĩa các ph ươ ng th c Các bi u ñ l p s ñư c chuy n sang mã ch ươ ng trình ñ nh ngh ĩa các l p tươ ng ng Các bi u ñ tươ ng tác s ñư c chuy n thành mã ch ươ ng trình ñ nh ngh ĩa các ph ươ ng th c Các bi u ñ khác s h tr cho quá trình mã hóa 144 72 Sinh mã Ví d : bi u ñ l p orderListe OneOrder contains > 1..* * − quantity: Integer 1 1 ListOfOrders AirPlane + subtotal() : double − datePlaced − price : float − clientID + total() : double + getPrice() : float 145 Sinh mã Mã l p OneOrder public class OneOrder OneOrder { public double subtotal() − quantity: Integer { } + subtotal() : double private int quantity; } 146 73 Sinh mã Mã l p OneOrder OneOrder contains > public class OneOrder * { − quantity: Integer 1 public double subtotal() { AirPlane } + subtotal() : double − price : float private int quantity; private AirPlane airPlane; } + getPrice() : float 147 Sinh mã Mã l p ListOfOrders orderListe OneOrder 1..* public class ListOfOrder { − quantity: Integer 1 public double total() { ListOfOrders } + subtotal() : double − datePlaced private Date datePlaced; − private int clientID; clientID private Vector orderList; } + total() : double 148 74 Sinh mã Bi u ñ c ng tác th c hi n ph ươ ng th c total() 1 : total() 2 : *[for each] subtotal() :ListOfOrders :OneOrder 3 : getPrice() :AirPlane 149 Sinh mã Mã ph ươ ng th c total() 1 : total() 2 : *[for each] subtotal() :ListOfOrders :OneOrder 3 : getPrice() public double total() { } :AirPlane 150 75 Sinh mã Mã ph ươ ng th c total() 1 : total() 2 : *[for each] subtotal() :ListOfOrders :OneOrder public double total() 3 : getPrice() { double sum = 0; for (int i=0; i<orderList.size(); i++) sum += orderList.elementAt(i).subtotal(); return sum; :AirPlane } 151 Sinh mã Mã ph ươ ng th c subTotal() 1 : total() 2 : *[for each] subtotal() :ListOfOrders :OneOrder public double subtotal() 3 : getPrice() { return (quantity * airplane.getPrice()); } :AirPlane 152 76 Sinh mã Mã ph ươ ng th c getPrice() 1 : total() 2 : *[for each] subtotal() :ListOfOrders :OneOrder public float getPrice() 3 : getPrice() { return price; } :AirPlane 153 Công c Ph n m m Rational Rose, Poisedon for UML, Umbrello Thi t k các bi u ñ UML Sinh mã ch ươ ng trình • C++ • Java • VB • Ada 154 77
File đính kèm:
- bai_giang_nhap_mon_cong_nghe_phan_mem_chuong_7_thiet_ke_huon.pdf