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
77File đính kèm:
bai_giang_nhap_mon_cong_nghe_phan_mem_chuong_7_thiet_ke_huon.pdf

