- 17
8.3.2 Thiết kế sơ đồ chuẩn – sơ đồ CSDL
Bước này thực hiện việc chuyển đổi từ mô hình khái niệm (biểu đồ lớp trong UML)sangsơđồquảnlýdữliệuđốitượng.
Nhưchúngtađãkhẳngđịnh,sơđồCSDLchỉlưutrữnhữngđốitượngbềnvững.
1 diaChi: AddressCuaHang tenGoi: String 1 Sử-dụng 1 1 Chứa 1 MoTaMatHang maSanPham: UPC giaBan: Number addSale() DanhMucMatHang moTa: Text
HBH Sử- dụng 1 1 specificatio n() loadProdSp ecs() PhienBanHang 1 Được-mô-tả-bởi * DongBanHang soLuong: Int subtotal() hangTruong: String enterItems() endSale() makePayment() Ghi-Nhận 1 * ngayBan: Date gioBan: Time becomeComplete() makeLineItem() makePayment() 1 gồm có 1..* total() Quản-lý * 1 1 Được-trả-bởi ThanhToan tongsoTien: Number ThanhToanTM ThanhToanCheck Trả-bằng * 1 Trả-bằng 1 1 TheCredit TheCheck Hình8-3Môhìnhkháiniệm-biểuđồlớpcủahệthốngbánhàng
- 162 -
Chuyểnđổicáckiểuđốitượng
Mỗi lớpbền vữngtrongUMLphảiđượcchuyểnđổisang lớptrongODL(Object
Definition Language) thể hiện được cả hành vi trừu tượng lẫn các trạng thái trừu
tượng,nhưhình8-3.
Chúng taxétmột lớpđiển hình,lớp CuaHang để chuyển cácthuộctính của lớp đượcthiếtkế tươngứngsangthuộctínhcủalớptrongODL.
Class CuaHang
{ attribute String(30) tenGoi;
CuaHang diaChi: Address tenGoi: String
addSale()
attribute struct diaChi{
char(3) soPho, char(20) t
enPho,
char(15) tinhThanh};
void Nguoi(); // Constructor
void ~Nguoi(); // Destructor
void addSale(){…}
};
Hình8-3ĐịnhnghĩalớptrongODL
Nhữngthuộctínhphứchợpnhư diaChiđượcchuyểnthànhkiểu structnhưtrên.
Lưu ý:trong CSDL cũng cócác ràngbuộc tương với các ràngbuộc trong UML, như: UNIQUE, NOT NULL, CHECK, ASSERTION, TRIGGERtrongSQL.
Chuyểnđổicácquanhệkếthợp
Quan hệkếthợp nhịnguyên đượcchuyểnsang mốiquanhệ liên kết relationship trongODL.Chúngtahãyxétmốiquanhệkếthợpgiữacáclớpnhưhình8-4.
HBH hangTruong: String enterItems() endSale() makePayment() 1 ghiNhan banHang * PhienBanHang ngayBan: Date gioBan: Time becomeComplete() makeLineItem() makePayment() total() Class HBH {
attribute String(25) hangTruong;
attribute String(15) tenTruong;
relationship PhienBanHang ghiNhan
inverse banHang::PhienBanHang; void HBH(); - 163 - void ~HBH(); void enterItems(){…} void endSale(){…} }; Class PhienBanHang
{ attribute Date ngayBan;
attribute Time gioBan;
relationship Set<PhienBanHang> banHang
inverse ghiNhan::HBH;
void ~PhienBanHang(); Boolean becomeComplete(){…} void makeLineItem() makePayment(){…} Number total(){…} };
Hình8-4 Chuyểnđổiquanhệkếthợp
Lưu ý:khimộtđốitượngkếthợpvớinhiềuđốitượngcủalớpkhácthìmốiquanhệđó
đượccóthểđượccàiđặtbằngkiểutuyểntập:SethoặcList,Bag,Array,v.v.Trongbiểuđồ lớpởhình8-4,HBHcóquanhệkếthợp*(nhiều)vớiPhienBanHang,dovậynóđượccài đặtthànhSet<PhienBanHang>trongODL.Ngoàira,tên vaitròởmỗiđầuquanhệsẽlà tênxácđịnhtrongcácnútcủađườngduyệtcácmốiquanhệgiữacáclớp.
ODMG hỗ trợ để định nghĩa các mối quan hệ kết hợp hai chiều, song đối với nhữngquanhệmộtchiềuthìhiệuquảhơn.TrongcáchệQTCSDL,cácmốiquanhệsẽ đượccàiđặtbằng cáccontrỏ.
Nếuquanhệkếthợp cócácthuộctínhthìcóhaikhảnăng:
1. Nếubộisốtrênquanhệlà nhiều-nhiều, thìchuyểnquanhệkếthợp thànhmộtlớp mới,trongđóđịnhnghĩacácthuộctínhnhưhaiquanhệgiữahailớp.
2. Nếu bội số của quan hệ là một- nhiều, thì có thể định nghĩa thuộc tính bên
tronglớpkếthợpởđầu một.
Vídụ,lớpMonHoctựkếthợpvớichínhnóđượcđịnhnghĩatrongODLnhưsau: làmônCN 0..* MonHoc tenMH gioLT gioTH 0..1 cómônCN Class MonHoc
{ attribute String(20) tenMH;
attribute short gioLT;
attribute short gioTH;
relationship Set<MonHoc> coMonCN
inverse laMonCN::MonHoc;
relationship MonHoc laMonCN
inverse coMonCN::MonHoc;
void MonHoc();
void ~MonHoc();};
- 164 -
Hình8-5ĐịnhnghĩaquanhệtựkếthợptrongODL
Quanhệtổngquáthoávàcụthểhoá
UML hỗ trợ hầu như tất cả các quan hệ tổng quát hoá: rời nhau / giao nhau (disjoint/overlapping),đầyđủ/khôngđầyđủ (complete/incomplete).
Mô hình đối tượng ODMG không hỗ trợ tổng quát hoá mà có giao nhau. Nói chungnóhỗtrợquanhệkếthừarờinhauvàkhôngđầyđủnhưhình2-6.
ThanhToan
{disjoint,complete} ThanhToanTM
ThanhToanThe
(extent ThanhToanTM Key number) {
… };
Class ThanhToanThe extends ThanhToan (extent ThanhToanThe)
{ … };
Hình8-6ĐịnhnghĩaquanhệkếthừatrongODL
Quanhệkếttập
UMLhỗtrợhailoạiquanhệkếttập:
Kết tập tuyển tập các thành viên(member-collection aggregation)làmộtloạiđặc
biệt củaquan hệ kếthợp (association). Quanhệ nàybiểu diễn tuyển tập của cácđốitượng.
Cây kết tập (aggregation tree) là mối quan hệ kết tập giữa bộ phận và tổng thể
(part-whole aggregation). Quanhệnàythểhiệnnhư làlớp cấu trúcgồmhầu nhưlàhailớpkhácnhau.
ODL không cung cấpmột toán tửtạo lậpnào để hỗ trợtrựctiếp việcđịnh nghĩa kếttập,vàdo vậycảhailoạiquanhệ trêncó thểđượcđịnh nghĩathôngquacácthuộc tính.
1. Kết tập tuyển tập được chuyển kiểu tuyển tập, nếu các phần tử được sắp thì chuyểnthànhList,Array,Sequence,ngượclạicóthểsửdụngSet,Bag.
2. Kết tậpbộphận /tổng thểđịnhnghĩa thành lớpthànhphần nhưlà thuộctính tronglớpcấuthành. - 165 - Vídụ: PhienBanHang ngayBan: Date gioBan: Time becomeComplete() makeLineItem() makePayment() total() Class PhienBanHang
{ attribute Date ngayBan;
attribute Time gioBan;
attribute List<DongBanHang> gomCo;
BooleanbecomeComplete(){…}
void makeLineItem()
void makePayment(){…}
gomCo 1..* } ; PhienBanHang(); ~PhienBanHang(); DongBanHang soLuong: Int subtotal() Class DongBanHang
{ attribute Integer soLuong;
Number subtotal(){…}
};
Hình8-7 ĐịnhnghĩakếttậptuyểntậptrongODL
Cáckiểucấutrúcvàcáctuyểntập
Nhưchúngtađãthảoluận,kiểudữliệucócấutrúcvàcáctuyểntậplànhữngkhái niệm chính cần xâydựng trong thiết kếCSDL HĐT. Chúngcho phép địnhnghĩa các thuộctínhđatrị, cáclựclượngcủaquanhệkếthợp,kếttập,v.v.
ODMGhỗtrợcácloạituyểntậpkhácnhau:
+KiểuBag,chophéplặp, khôngđượcsắpthứtựvàsốphầntửkhônggiớihạn.
+KiểuSet,khônglặp,khôngsắpthứtự,khôngbịgiớihạnvềsốlượng.
+ Kiểu List, được sắp thứ tự, không bị giới hạn về số lượng, có thể lặp hoặc khônglặp.
+Kiểu Dictionary,các cặpphần tử(Key-value)khôngbị chặn về số lượng với điềukiệnlàKeykhôngbịlặp.
+KiểuArrayhoặcSequence,giớihạnvềsố lượngcácphầntử.
+ Kiểu cấu trúc (Struct), được sử dụng khi bạn muốn biểu diễn cho những đối tượngphứchợp,trongđómỗiphầntửcóthểcónhiềukiểukhácnhau.
Mặcdùviệccàiđặt chúnglàcóthểgiốngnhau,songcácgiátrịvàcáckiểulàcơ bản khác nhau. Một đối tượng trong CSDL là một thể hiện kết quả tính toán của đối tượngtrongthế giớithực. Cácgiátrị tựchúng khôngtồn tạiđộc lập,chúng cho phép địnhnghĩacácđốitượngcủahệthống.
Tươngtựnhư trên, chúngtathựchiện chuyển đổitấtcảcác lớp vàcácmối quan hệcủachúngvềODL.
- 166 -
Bài tậpvà câuhỏi
8.1 Những mệnh đề sau mô tả Java như là ngôn ngữ lập trình hướng đối tượng, hãy chọnnhữngcụmtừdướiđâyđểđiềnvàochỗ[(…)]chothíchhợp.
"CSDL HĐT làmột [(1)] [(2)]. Trong CSDL QH lưu trữ cácdữ liệu như [(3)] và [(4)] thì CSDL HĐT chỉ lưu giữ [(5)]. Một phần mềm cho phép tạo lập, quản lý, xử lý, huỷ bỏ các đối tượng được gọi là [(6)]. Tập các mục dữ liệu đượctậphợp lạibởihệQTCSDLHĐTđượcgọilà[(2)]".
Chọn các câu trả lời:
a. CSDLHĐT(cơsởdữliệuhướngđốitượng) b.đốitượng
c. thếhệmới d.cáckýtự e. cácgiátrịsố
f. hệQTCSDLHĐT(quảntrịcơsởdữliệuhướngđốitượng)
8.2 Những mệnh đề sau mô tả về cơ chế đọc/ghi trong CSDL hướngđối tượng, hãy chọnnhữngcụmtừdướiđâyđểđiềnvàochỗ[(…)]chothíchhợp.
"Trong [(1)],đốitượngsaukhixửlý đượclưutrữvàoCSDLbởihệQTCSDL HĐT sau [(2)] kết thúc. Những đối tượngđược lưu trữ vào CSDL gọi là[(3)], cònđốitượngkhôngđượclưuvàoCSDLgọilà[(4)]".
Chọn câu trả lời:
a.chươngtrình b.đốitượngtạmthời c. mộtCSDLHĐT d.đốitượngbềnvững
8.3 Hãychọnnhữngtừthíchhợpđểđiềnvàocácchỗtrong[(…)]chođúngvớinhững đặctínhcủaCSDLHĐT.
+ CSDLHĐTchophép xửlý[(1)]cónhiều[(2)]có thểđượcxáotrộn vàomột CSDL.
+ CSDL HĐT có thể lưu trữ[(3)] mà CSDL truyền thống (CSDL QH) không lưutrữvàquảnlýđược.
+ TrongCSDLHĐT, cácdữliệuvà[(4)]là[(5)], vàvìvậydữ liệucóthểnhận đượctừ[(4)].
+TrongCSDLHĐT,NSDkhôngcần[(6)]vềviệcđọc/ghidữliệunhưthếnào.
-167-
8.4 SửdụngObjecStorevàC++đểcàiđặttấtcảcáclớpởhình8-3(chitiếtthamkhảo http: www.odi.com .
TÀI LIỆU THAM KHẢO
[1] Booch G., Rumbaugh J. and Jacobson I., The Unified Software Development
Process,Addision–Wesley,1998
Guide,Addision–Wesley,1999
[3] SommervilleI., Software Engineering,4thEdition,AdditionWesley,1994
[4] Larman C., Applying UML and Patterrns: An Instruction to Object-Oriented
Analysis and Design,PrenticeHall,1997.
[5] Michael B., William P., Object – Oriented Modeling and Design for Database
Applications,PrenticeHall,NewJersey1998
[6] Oestereich B., Developing Software with UML, Object-Oriented Analysis and
Design in Prctice,Addision–Wesley,2000.
[7] OMG,“The OMG Unified Modeling Language Specification”, http:// www.omg.org/uml ,
1999.
[8] Quatrani T., Visual Modeling With Rational Rose and UML, Addison-Wesley,
http:// www.rational.com, 2000.
[9] LiangY.,Fromusecasestoclasses:awayofbuildingobjectmodelwithUML,
Information and Software Technology, 45 (2003) 83-93, www.elservier.com/locate/infsof.
[10] Zhiming L., Object-Oriented Software Development Using UML, UNU /IIST, Macau2001.
[11] Đặng Văn Đức, Phân tích thiết kế hướng đối tượng bằng UML (Thực hành với
Rational Rose),NXBKhoahọcvàKỹthuật,HàNội2002.
[12] ĐoànVăn Ban,Phântích, thiếtkếvàlậptrìnhhướngđối tượng,NXBThống Kê 1997.
[13] Đoàn Văn Ban, Hoàng Quang, Chuyển đổi các biểu thức đại số quan hệ thành
câu truy vấn trong mô hình dữ liệu hướng đối tượng,TạpchíKhoahọcvàCông
nghệ,Tập40-SốĐB,2002 (120-129)
[14] ĐoànVănBan,Cơsởdữliệuhướngđốitượng, giáo trình Khoa CNTT, HN 2003
- 168 -
Danhsáchthuậtngữvàcác từviếttắt
1.TừviếttắttiếngAnh
UML Unified Modeling Language
OOD ObjectOrientedDesign
API ApplicationProgrammingInterface CASE ComputerAidedSoftwareEngineering OMT ObjectModelingTechnique
OOSE Object-OrientedSoftwareEngineering OCL ObjectConstraintsLanguage
GRASP GeneralResponsibilityAssignmentSoftwarePatterrn ODMG ObjectDataManagementGroup
USPD UnifiedSoftwareDevelopmentProcess RUP RationalUnifiedProcess
UP UnifiedProcess
2.TừviếttắttiếngViệt
CNTT Côngnghệthôngtin
CSDL Cơ sởdữliệu
NSD Người sửdụng
CNPM Côngnghệphầnmềm
HBH Hệthốngbánhàng
CSDLQH Cơ sởdữliệuquanhệ
CSDLHĐT Cơ sởdữliệuhướngđốitượng QTCSDL Hệquảntrịcơsởdữliệu
3. Các thuật ngữ Việt - Anh
Hệthốngphầnmềm SoftwareSystem Tínhtiệndụng usability
Khảnăngduytrìhoạtđộng Maintainability Tínhtincậy Dependability Tínhhiệuquả Efficiency
Hệthống thôngtin InformationSystem Cáchệthốngkỹthuật TechnicalSystems
CáchệthốngnhúngthờigianthựcEmbeddedReal_timeSystems Cáchệthốngnghiệpvụ BusinessSystems
Cáchtiếphướngchứcnăng Functional-OrientedApproach Cáchtiếpcậnhướngđốitượng Object-OrientedApproach Hướngthủtục Procedure-Oriented
Chiađểtrị Devideandconquer
Cốkết Cohension
Thôngđiệp Message
Lớp Class
- 169 -
Thuộctính Attribute Dữliệuthànhphần Datamember
Phươngthức Method
Thaotác Operation
Hàmthànhphần Memberfunction Baogói Encapsulation Chegiấuthôngtin Informationhidding
Môhìnhthácnước Waterfallmodel Môhìnhxoánốc Spiralmodel
Côngnghệthếhệthứtư4GT FourthGenerationTechnology Nguyênmẫu Prototype
Vậtphẩm Artifact
Đượchướngdẫnbởicasửdụng Use-case-driven Tậptrungvàokiếntrúc Architecture-centric Quansáttheocasửdụng Usecaseview Quansátlogic Logicview Quansátthànhphần Componentview Quansáttươngtranh Concurrencyview Quansáttriểnkhai Deployementview Biểuđồcasửdụng Usecasediagram Biểuđồlớp Classdiagram Biểuđồ Objectdiagram Biểuđồtrìnhtự Sequencediagram Biểuđồcộngtác Collaborationdiagram Biểuđồthànhphần Componentdiagram Biểuđồtriểnkhai Deploymentdiagram Biểuđồhànhđộng Activitydiagram
Biểuđồtrạngthái Statediagram,Statechartdiagram
Gói Package
Luồng Thread
Tácnhân Actor
Địnhdanh Identifier (ID) Đaxạ,đahình Polymorphic Nạpchồng Overloading
Liênkết Link
Sựkếthợp Association Sựkếttập,gộplại Aggregation
Quanhệhợpthành CompositionAggregation Quanhệkếthợp Associationrelationship Quanhệkếttập Aggregationrelationship Quanhệphụthuộc Depedencyrelationship Tổngquáthóa Generalization
Kếthừa Inheritance
Kếthừađơn Singleinheritance
-170-
Kếthừabội Multipleinheritance Bộisố,bảnsố Multiplicity
Têncủavaitrò Rolename Quitắcràngbuộc Constraintrule Quitắcsuydẫn Derivationrule Lớpmẫu Templateclass Lớphiệnthực Instantiatedclass
Lớptiệních Classutility Mẫurậpkhuôn Stereotype Lớpbiên Boundaryclass Lớpthựcthể Entityclass Lớpđiềukhiển Controlclass Từđiểnthuậtngữ Glossary Tuyểntập Collection
Chỉsố Index
Siêudữliệu Metadata
-171-
MỤC LỤC
LỜINÓIĐẦU... 2
1.1Giớithiệuvềhệthốngphầnmềm... 4
1.2Môhìnhhoáhệthống... 7
1.3Cáccáchtiếpcậntrongpháttriểnphầnmềm... 9
1.3.1 Cáchtiếpcậnhướngchứcnăng...
9 1.3.2 Cáchtiếpcậnhướngđốitượng... 11
1.3.3 Ưuđiểmchínhcủaphươngpháphướngđốitượng... 13
1.4 Cácmôhìnhpháttriểnphầnmềm... 14
Câuhỏivàbàitập... 16
CHƯƠNGII:UMLVÀQUÁTRÌNHPHÁTTRIỂNPHẦNMỀM... 18
2.1TổngquátvềUML... 18
2.1.1MụcđíchcủaUML... 18
2.1.2GiớithiệutổngquátvềUML... 20
2.1.3CácphầntửcủaUML... 21
2.2CáckháiniệmcơbảncủaphươngpháphướngđốitượngtrongUML...23
2.2.1Cácđốitượng... 23
2.2.2Lớpđốitượng... 24
2.2.3Cácgiátrịvàcácthuộctínhcủađốitượng... 25
2.2.4Cácthaotácvàphươngthức... 26
2.3Cácmốiquanhệgiữacáclớp... 26
2.3.1Sựliênkếtvàkếthợpgiữacácđốitượng... 27
2.3.2Bộisố... 28
2.3.3Cácvaitròtrongquanhệ... 29
2.3.4Quanhệkếttập... 30
2.3.5Quanhệtổngquáthoá... 31
2.3.6Kếthừabội... 33
2.3.7Quanhệphụthuộc... 34
2.4Cácgói... 35
2.5Cácquitắcràngbuộcvàsuydiễn... 36
-172- 2.6Quátrìnhpháttriểnphầnmềm... 37
2.6.1Xácđịnhcácyêucầuvàphântíchhệthống...39
2.6.2Phântíchhệthốnghướngđốitượng... 41
2.6.4Lậptrìnhvàkiểmtrachươngtrình... 42
2.6.5Vậnhànhvàbảotrìhệthống... 43
2.7RationalRosevàquátrìnhpháttriểnphầnmềmthốngnhất... 44
Bàitậpvàcâuhỏi... 45
CHƯƠNGIII:BIỂUĐỒCASỬ DỤNG:PHÂNTÍCHCÁCYÊUCẦUCỦA HỆTHỐNG... 46
3.1Địnhnghĩabàitoán... 46
3.2Phântíchvàđặctảcácyêucầuhệthống... 49
3.2.1 Casửdụng... 49
3.2.2 Tácnhân... 50
3.2.3 Xácđịnhcáccasửdụngvàcáctácnhân... 51
3.2.3 Đặctảcáccasửdụng... 53
3.3 Biểuđồcasửdụng... 57
3.4 TạolậpbiểuđồcasửdụngtrongRationalRose... 60
Bàitậpvàcâuhỏi... 60
CHƯƠNGIV:PHÂNTÍCHHỆTHỐNG–MÔHÌNHKHÁINIỆM VÀBIỂUĐỒLỚP... 61
4.1Môhìnhkháiniệm–môhìnhđốitượng... 61
4.2Xácđịnh cáclớpđốitượng... 62
4.3Mốiquanhệgiữacáclớpđốitượng... 70
4.3.1Đặttênchocácquanhệkếthợp... 71
4.3.2Cácphươngphápxácđịnhcácmốiquanhệkếthợp...72
4.4Biểuđồlớp... 73
4.4.1Cácloạilớp trongbiểuđồ... 73
4.4.2Mẫurậpkhuôn(stereotype)củacáclớp... 74
4.4.3BiểuđồlớptrongHệHBH... 75
4.5Thuộctínhcủalớp... 76
4.5.1Tìmkiếmcácthuộctính... 77
4.5.2CácthuộctínhcủacáclớptrongHBH... 80
-173- 4.6Ghinhậntrongtừđiểnthuậtngữ... 81
4.7ThựchànhtrongRationalRose... 82