軟體構造 第三章知識整理(上)

2021-08-20 19:54:59 字數 2130 閱讀 8539

基本資料型別 物件資料型別

靜態型別檢查 動態型別檢查

mutable/immutable

例:基本資料型別

mutable

:可變資料型別:擁有方法可以修改自己的值/引用

***final類無法派生子類

***final變數無法改變值/引用

***final方法無法被子類重寫

值的改變 引用的改變

用string和stringbuilder作為例子

由於string為不可變型別,因此若想對乙個string型別的變數的值進行改變,就是將該變數指向乙個新的位址。stringbuilder為可變型別,因此若想對乙個stringbuilder型別的變數的值進行改變,直接改變即可。

snapshot diagram

用於描述程式執行時的內部狀態

便於程式設計師之間的交流,刻畫類變數隨時間的變化,便於設計思路

不可變物件:用雙線橢圓;不可變的引用:用雙線箭頭

基本型別的snapshot diagram

物件型別的snapshot diagram

***可變的引用可以指向不可變的值

例:

specification

前置/後置條件

specification

需要包含:輸入/輸出的資料型別、功能和正確性、效能;只講「能做什麼」,不講「怎麼實現」

前置條件:對客戶端的約束,在使用方法時必須滿足的條件

後置條件:對開發者的約束,方法結束時必須滿足的條件

契約:如果前置條件滿足了,後置條件必須滿足;若前置條件不滿足,則方法可以做任何事情。用圖如下表示:

在寫前置條件時,使用@param關鍵字宣告對變數的要求,在寫後置條件時,使用@return關鍵字和@throws關鍵字

***除非在後置條件裡宣告過,否則方法內部不應該改變輸入引數

***盡量避免使用mutable的物件

例:

行為等價性

***要站在客戶端視角看行為等價性:即根據規約判斷是否行為等價,若兩個函式都符合同乙個規約,那它們等價

e.g :判斷下列兩個函式是否等價

根據規約:

由於這兩個函式都符合這個規約,因此等價。

規約的強度

spec

變強 = 更放鬆的前置條件+ 更嚴格的後置條件

例:***越強的規約,意味著implementor的自由度和責任越強,而client的責任越輕

確定(deterministic

)的規約:給定乙個滿足precondition的輸入,其輸出是唯一的、明確的

欠定(under-deterministic

)的規約:同乙個輸入可以有多個輸出

非確定(nonedeterministic

)的規約:同乙個輸入,多次執行時得到的輸出可能不同

若用圖來表示規約的強度,面積越**明規約越強

例:

第三章知識點整理

第三章知識點整理 函式1 分類 函式分類 從使用者使用的角度看,函式有兩種 1 系統函式,即庫函式。2 使用者自己定義的函式。從函式的形式看,函式分兩類 1 無參函式。呼叫函式時不必給出引數。2 有參函式。在呼叫函式時,要給出引數。在主調函式 和被呼叫函式之間有資料傳遞。一.函式的定義和呼叫 mai...

第三章知識梳理

乙個典型的jquery選擇器的語法格式為 selector methodname id選擇器 id 利用dom元素的id屬性值來篩選匹配的元素,並以jquery包裝集的形式返回給物件。元素選擇器是根據元素名稱匹配相應的元素,指向的是dom元素的標記名,多數情況下元素選擇器匹配的是一組元素。注意 eq...

第三章 軟體計畫

上邊這幅圖表示軟體計畫的幾大項,下邊我逐個為大家做一下詳細的講述 一,問題定義 1,定義的內容 問題的背景,開發系統的現狀,開發的條件與理由,總體要求,問題的性質,型別轉換,目標,開發條件,環境要求等 2,定義的步驟 需要系統分析員到問題現場,1,聽取使用者對系統的要求 2,調查開發的背景理由 3,...