基礎(chǔ)知識
對象(Class)
對象是指定義一類事務(wù),比如我們在教學(xué)系統(tǒng)中可以定義學(xué)生這樣一個事務(wù)醋闭。
事務(wù)會有自身的一些屬性鲤看,比如學(xué)生有姓名和學(xué)生ID镰绎。
事務(wù)也可以有一些對外界的操作葫掉,如學(xué)生在選課系統(tǒng)中應(yīng)當(dāng)可以去選課,查詢跟狱,退選等俭厚。
和對象相對應(yīng)的是實例。舉個例子驶臊,學(xué)生張三挪挤,就是學(xué)生這樣一個對象的實例。
類
這個概念和對象類似关翎,是更傾向于coding的一個描述扛门。類的操作主要是
- 操作數(shù)據(jù)
- 執(zhí)行計算
類的關(guān)系主要有
- 關(guān)聯(lián)關(guān)系
- A類中有B類作為成員變量
- 用 1-------0…n表示
- 聚合關(guān)系
- 整體和部分
- 整體和部分可以分開
- 組合關(guān)系
- 整體和部分
- 整體和部分不能分開
- 類似學(xué)生和學(xué)生證,學(xué)生刪除后學(xué)生證無意義
- 依賴關(guān)系
- 某個類的方法使用另一個類的對象作為參數(shù)
- 泛化關(guān)系
- 表示類和類的繼承
- 箭頭指向父類
類的種類
- 實體類 (負責(zé)保存信息纵寝,擔(dān)當(dāng)數(shù)據(jù)庫的職責(zé))
- 需要保存信息的就是實體類
- 邊界類 (提供接口供操作)
- 提供服務(wù)的就是邊界類
- 控制類(在實體類和邊界類之間增加一部驗證论寨,提供兩個方面的接口,增加系統(tǒng)魯棒性)
- 控制輸入合法性的
- 可以合在邊界類中爽茴。
舉個例子:學(xué)生提交信息葬凳,信息保存的類就是實體類,學(xué)生填信息的那個網(wǎng)頁就是邊界類室奏,檢查學(xué)生信息正確與否(比如年齡應(yīng)當(dāng)大于0)的就是控制類火焰。
用例
(其實這個應(yīng)該放在類之前講,但是用例你說你知道了胧沫,這里就粗略的過一下)
用例 -> 系統(tǒng)可見的功能單元昌简,即系統(tǒng)可以為用戶做的事情占业。
我們應(yīng)當(dāng)從系統(tǒng)的參與者中開始識別用例。
用例也有三大關(guān)系(注意箭頭形狀和指向關(guān)系4渴辍谦疾!)
-
include
用例1 include 用例2 -> 用例1執(zhí)行過程會用到用例2(如要查詢信息就需要登錄系統(tǒng))
image.png -
extend
用例1 extend 用例2 表示用例2在某些情況下會用到用例1(注意和上面相反,箭頭也是相反犬金。(比如如果輸入不合法 就 提示錯誤)
image.png -
泛化
抽象用例餐蔬,比如支付可以是現(xiàn)金支付,也可以是網(wǎng)銀支付佑附。參與者之間也可以有泛化(管理員有普通用戶的權(quán)限)
image.png
幾種圖
首先我們要知道為啥要畫圖? -> 是為了更好的分析需求
那分析(畫圖)的順序是什么呢仗考?
-> 首先對用例建模(用例圖)-> 根據(jù)用例找出分析類 -> 然后使用用例實現(xiàn)建模(用時序圖表示用例的實現(xiàn)過程)音同,從而發(fā)現(xiàn)每個對象的方法 -> 根據(jù)之前的建模建立類圖 -> 如果用到數(shù)據(jù)存儲,應(yīng)當(dāng)建立E-R圖 -> 如果需要描述對象的狀態(tài)變化秃嗜,則需要狀態(tài)圖
用例圖
這里需要做的就是
- 確定用例有什么(按照上面說的用例的定義來確定权均,根據(jù)參與者)
- 找用例之間的關(guān)系(上面三種,注意箭頭形式和指向9恰叽赊!)
-
根據(jù)參與者畫出用例圖。
image.png
用例圖畫完我們?nèi)匀恍枰M行用例描述必搞。即說清楚這個用例要干什么必指。
主要包含,用例名恕洲,編號塔橡,前置條件,后置條件霜第,事件流葛家。
前置條件:這個用例需要滿足什么條件?(如查看信息需要檢查是否登陸)
后置條件:用例執(zhí)行完成怎么樣泌类?(如更新信息癞谒,如果更新成功就更新頁面,否則不變)
事件流:包含基本流和擴展流
-> 基本流:用例的執(zhí)行過程描述刃榨,如對登陸系統(tǒng)((1)系統(tǒng)提示用戶輸入用戶名和密碼弹砚。(2)用戶輸入自己的用戶名和密碼。(3)系統(tǒng)驗證用戶名和密碼枢希,用戶登錄系統(tǒng)成功)
-> 擴展流:可能會出錯的流程迅栅,如上面如果用戶名和密碼無效,系統(tǒng)提示錯誤信息晴玖,用戶可重新輸入或停止读存。
完成這一切之后为流,就要進行分析類的劃分。劃分見前面關(guān)于類的描述让簿【床欤基于那個概念很容易進行劃分。
時序圖
時序圖是什么尔当?
其定義了對象(類)之間交互關(guān)系的模型莲祸,并按照交互的時間順序來確定,上面我們畫出了用例圖和作出了用例說明椭迎,根據(jù)這個來畫出時序圖:
一個標(biāo)準的時序圖如下:
上面是上一步分析出的類(實體锐帜,邊界,控制)下面是執(zhí)行操作的時間流程(注意:一個用例畫一個這樣的時序圖)上面這個圖是針對打印這個操作的時序圖
類圖
這個主要是根據(jù)之前找到的類的種類畜号,根據(jù)上面提到的類之間的關(guān)系缴阎,畫出類圖。
這是一個典型的類圖(這部分考察不多简软,因為牽涉到數(shù)據(jù)庫的部分了蛮拔,如果你需要你再說)
E-R圖 (這個是數(shù)據(jù)庫中的概念,軟工一般不會考察)
狀態(tài)圖
狀態(tài)圖的核心是狀態(tài)的轉(zhuǎn)換痹升,即通過事件/動作建炫,從一個狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€
狀態(tài)主要包含
- 內(nèi)部動作(這個狀態(tài)會做什么)
- 入口動作(做什么會進入這個狀態(tài))
-
出口動作(做什么會離開這個狀態(tài))
如:
image.png