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

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 trang 1

Trang 1

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 trang 2

Trang 2

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 trang 3

Trang 3

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 trang 4

Trang 4

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 trang 5

Trang 5

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 trang 6

Trang 6

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 trang 7

Trang 7

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 trang 8

Trang 8

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 trang 9

Trang 9

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 trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 77 trang xuanhieu 8700
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

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 ca h
 th ng/ph n mm bán hàng ti siêu th 
  Ph n mm bán hàng s dng ti siêu th 
 nh m giúp ghi nh n ho t ñng bán hàng, x
 lý các thanh toán vi khách hàng. Ph n
 mm ñưc s dng bi ng ưi bán hàng và
 ñưc qu n lý bi ng ưi qu n lý siêu th . 
 Ph n mm nh m t ñng hóa công vi c ca
 ng ưi bán hàng ti qu y thu ti n.
 103
 Bài tp 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 tp 2
 Qu n lý ñào to  trung tâm tin hc: Mt công ty mu n mô t
 bng UML vi c ñào to nhân viên ñ tin hc hóa mt s công vi c. 
 Vi c ñào to ñưc bt ñu khi ng ưi qu n lý ñào to nh n ñưc
 yêu cu ñào to ca mt nhân viên. Nhân viên này có th  xem
 danh mc các chuyên ñ ñào to ca các ñơ n v ñào to ký kt vi
 công ty. Yêu cu ca nhân viên ñưc xem xét bi ng ưi qu n lý
 ñào to và ng ưi qu n lý s tr  li là ch p nh n hay t ch i ñ
 ngh  ñó. Trong tr ưng hp ch p nh n, ng ưi qu n lý s xác ñnh
 chuyên ñ phù hp trong danh mc các chuyên ñ, sau ñó gi cho
 nhân viên ni dung ca chuyên ñ và danh sách các khóa ñào to. 
 Nhân viên s ch n khóa ñào to và ng ưi qu n lý s ñă ng ký khóa
 hc vi ñơ n v ñào to cho nhân viên. Trong tr ưng hp mu n hy
 b ñă ng ký khóa ñào to, nhân viên ph i thông báo sm cho ng ưi
 qu n lý bi t ñ ng ưi qu n lý th c hi n hy b. Cu i khóa ñào to, 
 nhân viên chuy n phi u ñánh giá kt qu  hc v cho công ty. 
 Ng ưi qu n lý s ki m tra hóa ñơ n thanh toán ti n ca ñơ n v ñào
 to.
 Xây dng bi u mô hình khái ni m.
105
Bi u ñ lp
 Bi u ñ lp ñnh ngh ĩa:
  Các lp (class)
 • Các thu c tính (attribut) ca lp: các
 bi n và ki u ca chúng
 • Các thao tác (operation) ca lp: 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 lp
106
 53
Bi u ñ lp
 Bi u ñ lp có cùng quy tc cú pháp vi mô hình khái
 ni m
  Th c ra, mô hình khái ni m s dng các cú pháp ca
 bi u ñ lp trong UML
  Tt c các kí hi u và quy tc (ñã trình bày) ñi vi
 mô hình khái ni m ñu ñưc s dng ñ xây
 dng bi u ñ lp
 Bi u ñ lp ñưc xây dng da trên mô hình khái
 ni m
 Các lp có th  ch  yu là các khái ni m ho c các
 thành ph n khác
 Bi u ñ lp s là nn tng cho bưc mã hóa
107
Bi u ñ lp
 ði vi bi u ñ lp, mi thu c tính hay mi ph ươ ng
 th c có th  có thêm mc kh  ki n – kh  năng nhìn
 th y (visibility)
 Kí hi u
  “–” mc riêng (priviate), thu c tính hay ph ươ ng th c
 ch  ñưc nhìn th y bi ñi tưng ca lp ñó
  “#” mc bo v (protected), thu c tính hay ph ươ ng
 th c ch  ñưc nhìn th y bi ñi tưng ca lp ñó và
 ñi tưng ca các lp th a k lp ñó
  “+” mc chung (public), thu c tính hay ph ươ ng th c
 ch  ñưc nhìn th y bi ñi tưng ca tt c các lp
108
 54
 Bi u ñ lp
 
 Ví d Tên lp
 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 ñ lp
  Thu c tính dn xu t (derived attribut) là các thu c tính
 ca bi u ñ lp mà có th  suy ra t các thu c tính
 khác.
  Kí hi u: thu c tính dn xu t bt ñu bi “/”, mt ràng
 bu c có th  ñi kèm ñ gi i thích s dn xu t
  Ví d
 Person
 Ràng bu c
 name Thu c tính dn xu t
 birthDate
{age = CurrentDate – birthDate} / age
 110
 55
Bi u ñ lp
 Các quan h gi a các lp
  Quan h kt hp (association)
  Quan h chuyên bi t hóa/t ng quát hóa
 (specialization/generalization)
  Quan h hp thành (composition)
  Quan h kt tp (agregation)
  Quan h ph  thu c (dependence)
111
Bi u ñ lp
 Quan h kt hp (association) Quan h kt hp
 1 *
 Qu yHàng Ch a > MtHàng
 Quan h chuyên bi t hóa/t ng quát hóa
 (specialization/generalization)
 NhânViên Quan h tng quát hóa
 Ng ưiBánHàng Ng ưiQu nLý
112
 56
Bi u ñ lp
 Quan h kt tp (agregation)
 Quan h
 0..*
 Company * Person
 Quan h hp thành (composition)
 Quan h
 DanhM cM tHàng 1 * MtHàng
113
Bi u ñ lp
 Quan h ph  thu c (dependence): mô t
 mt lp ph  thu c vào lp khác
 Ví d
 Quan h ph  th c
 Circle Point
 center : Point
114
 57
 Bi u ñ lp
  Ví d: chuy n ñi mô hình khái ni m
 thành bi u ñ lp
  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 ñ lp
  Chi ti t các thu c tính
 ThanhToán 1thanh toán > 1 PhiênBánHàng
 tng : Integer
ThanhToánB ngTi nM t ThanhToánB ngTh 
 116
 58
 Bi u ñ lp
  Chi ti t các ph ươ ng th c
 ThanhToán 1thanh toán > 1 PhiênBánHàng
 tng : Integer tínhT ng() : Integer
ThanhToánB ngTi nM t ThanhToánB ngTh 
nh nTi n() tr VàoTh ()
 117
 Bi u ñ lp
  Xác ñnh các mc kh  ki n
 ThanhToán 1thanh toán > 1 PhiênBánHàng
 # tng : Integer + tínhT ng() : Integer
ThanhToánB ngTi nM t ThanhToánB ngTh 
+ nh nTi n() + tr VàoTh ()
 118
 59
Ni dung
 Khái ni m c ơ b n h ưng ñi t ưng
 Bi u ñ ca s  dng
 Thi t k  cu trúc t ĩnh
 Thi t k  cu trúc ñng
 Sinh mã
119
Cu trúc ñng
 Bi u ñtươngt ác
  Bi u ñ tu n t 
  Bi u ñ cng tác
120
 60
Bi u ñ tươ ng tác
 Bi u ñ tươ ng tác mô t hành vi ca h th ng
 Mi bi u ñ tươ ng tác tươ ng ng mt tác v ñưc
 th c hi n bi mt s các ñi tưng
 Bi u ñ tươ ng tác xây dng da trên nn tng ca
 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 ca các ñi
 tưng ñ th c hi n mt tác v. Các hành ñng ca
 ñi tưng bao gm:
  gi các thông ñip (message) gi a các ñi tưng
  to (create) và hy (destroy) các ñi tưng
121
Bi u ñ tu n t
 Biu ñ tu n t  (sequence diagram) bi u 
 di n s tươngt ác gi a các ñi t ưng b ng 
 vi c nh n m nh th  ttraoñi thông ñip 
 gi a các ñi t ưng
 Bi u ñ tu n t gm:
  các ñi tưng
  các thông ñip trao ñi gi a các ñi tưng
122
 61
Bi u ñ tu n t
 Mi ñi tưng có mt ñưng sinh tn (lifeline) bi u di n
 th i gian tn ti ca nó.
 Kí hi u ði tưng
 object object:Class :Class
 ðưng sinh tn
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 mt thao tác
 Kí hi u
 object
 Th i gian ho t ñng
124
 62
Bi u ñ tu n t
 Mt thông ñip ñc t trao ñi gi a
 các ñi tưng
 Các lo i thông ñip
  Gi (call)
  Tr  v (return)
  Gi (send)
  To (create)
  Hy (destroy)
125
Bi u ñ tu n t
 Thông ñip gi gi mt ph ươ ng th c/thao tác trên ñi tưng
  ði tưng gi ph i ñi thông ñip ñưc th c hi n kt thúc
 mi có th  th c hi n công vi c khác (thông ñip ñng b)
 Mt ñi tưng có th  gi thông ñip cho chính nó
 Kí hi u
 object A object B object
 message()
 Gi thông ñip gi Gi cho chính nó
126
 63
Bi u ñ tu n t
 Thông ñip tr  v tr  v mt giá tr 
 cho ñi tưng gi
 Kí hi u
 Object A Object B
 message()
 value
 Thông ñip tr  v
127
Bi u ñ tu n t
 Thông ñip gi gi mt tín hi u ñn mt ñi tưng
  Khác vi thông ñip gi, khi ñi tươ ng gi thông ñip
 gi nó không ch  ñi, mà ti p tc th c hi n công vi c
 khác (thông ñip không ñng b)
 Kí hi u
 object A object B
 message()
 Thông ñip gi
128
 64
 Bi u ñ tu n t
  Thông ñip to gi ph ươ ng th c to mt ñi tưng
  Thông ñip hy gi ph ươ ng th c hy mt ñi tưng
  Kí hi u
 Thông ñip to
 object A
 >
 object B
 >
 Thông ñip hy
 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
  Mt thông ñip có th  ñưc gi lp
 nhi u ln
  Kí hi u Gi lp thông ñip 10 ln
 object A object B
 *[1..10] message()
for(i = 1; i<= 10; i++)
{
 objectB.message()
}
 131
 Bi u ñ tu n t
  Mt thông ñip có th  ñưc gi lp
 nhi u ln ph  thu c vào mt ñiu ki n
  Kí hi u Gi lp thông ñip trong khi C ñúng
 object A object B
 *[C] message()
while(C)
{
 objectB.message()
}
 132
 66
 Bi u ñ tu n t
  Mt thông ñip có th  ñưc gi ph 
 thu c vào ñiu 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
  Mt thông ñip có th  ñưc gi ñ
 quy
  Kí hi u
 Thông ñip ñ quy
 :BinaryTree
 print()
 print()
 134
 67
 Bi u ñ tu n t
  Ví d
 :TàiLi u :MáyFax :Dây ðinTho i
 gi()
 nh cMáy()
 âmM i
 bmS (s )
 ñãK tN i ñãK tN i
 gi(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 ñ lp và có mi quan
 h ch t ch  vi nhau
 Ví d
 MáyTínhTi n PhiênBánHàng
 mThanhToán() thanhToán()
 :MáyTínhTi n :PhiênBánHàng
 mThanhToán(s Ti n) thanhToán(s Ti n)
137
Bi u ñ cng tác
 Bi u ñ cng 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 
 cu trúc k t h p gi a các ñi t ưng và nh ng thông 
 ñip trao ñi gi a chúng
 Bi u ñ cng tác là s m rng c a bi u ññi t ưng
 Bi u ñ cng tác ch  ra 
  th  t gi các thông ñip: mi thông ñip ñưc gán
 mt s tu n t
  ñiu ki n g i các thông ñip
138
 69
Bi u ñ cng tác
 Cu trúc thông ñip ñưc mô t dng tng quát nh ư sau:
 precondition / condition sequence * *|| iteration : result := message (parameters )
  “precondition / ”: danh sách s  tu n t  ca các thông ñip tr ưc 
 thông ñip c n g i. Thông ñip ch ñưc g i ñi khi t t c  các thông 
 ñip tr ưc nóñãñưc g i ñi.
  “condition”: thông ñip ch ñưc g i ñi khi ñiu ki n ñưc th a
 mãn.
  “sequence ”: s tu n t  ca thông ñip c n g i. Ví d, vi c g i 
 thông ñip 1.3.5 theo sau vi c g i thông ñip 1.3.4, c haithông
 ñip này n m trong lu ng 1.3.
  “*”: ch rathôngñip ñưc g i ñi nhi u l n m t cách tu n t .
  “*||”: ch rathôngñip ñưc g i ñi nhi u l n m t cách ñng th i.
  “iteration”: ch  ra s  ln g i thông ñip m t cách tu n t  ho c ñng 
 th i
  “result ”: ch  ra giá tr  tr  v ca thông ñip.
  “message ”: tên thông ñip
  “parameters ”: danh sách các tham s  ca thông ñip.
139
Bi u ñ cng tác
 Ví d
  4 : hello() : thông ñip có s tu n t  là 4.
  [time = 12h] 1 : lunch() : thông ñip này ch 
 ñưc g i ñi n u là lúc 12h.
  1.3.5 * call() : thông ñip này ñưc g i ñi 
 nhi u l n.
  3 / *|| [i:= 1..5] 1.2 : close() : thông ñip này 
 ñưc g i ñi n ăm l n m t cách ñng th i và
 sau thông ñip s  3.
  1.2, 2.3 / [t < 10] 3.1 name = getName() :
 thông ñip này ñưc g i ñi sau các thông
 ñip 1.2, 2.3 và vi ñiu ki n t<10.
140
 70
 Bi u ñ cng tác
  Ví d bi u ñ cng 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 ư()
 :HTh ng :PhiênBánHàng
 1.1 : thanhToán(s Ti n)
 141
 Bi u ñ tươ ng tác
  Bài tp 1: Máy rút ti n ATM
  Xây dng bi u ñ tu n t cho ca s dng
 rút ti n trong tr ưng hp thành công
  Xây dng bi u ñ tu n t cho ca s dng
 xem s ti n dư trong tài kho n
 142
 71
Ni dung
 Khái ni m c ơ b n h ưng ñi t ưng
 Bi u ñ ca s  dng
 Thi t k  cu trúc t ĩnh
 Thi t k  cu 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 lp và giao di n
  ðnh ngh ĩa các ph ươ ng th c
 Các bi u ñ lp s ñưc chuy n sang mã
 ch ươ ng trình ñnh ngh ĩa các lp 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 ñ lp
 orderListe OneOrder contains >
 1..* *
 − quantity: Integer
 1 1
 ListOfOrders AirPlane
 + subtotal() : double
 − datePlaced − price : float
 − clientID
 + total() : double + getPrice() : float
 145
 Sinh mã
  Mã lp OneOrder
 public class OneOrder
 OneOrder
 {
 public double subtotal()
−
 quantity: Integer {
 }
+ subtotal() : double private int quantity;
 }
 146
 73
 Sinh mã
  Mã lp 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ã lp 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 ñ cng 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 mm 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:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_chuong_7_thiet_ke_huon.pdf