




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1第11章面向?qū)ο笤O(shè)計(jì)原則概述和對(duì)比類與類型的表示方法,介紹類型一致性原則,依據(jù)閉合行為討論健壯的子類。本章內(nèi)容:11.1類型一致性與閉合行為11.2封裝與共生性11.3領(lǐng)域、依附集和內(nèi)聚11.4繼承與多態(tài)性的危險(xiǎn)性11.5狀態(tài)空間和行為2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院211.1類型一致性與閉合行為11.1.1類與類型從抽象角度和外部特征來理解,最好的方式是將類看作是類型的實(shí)現(xiàn),即類型包括了類的目標(biāo)以及類的狀態(tài)空間和行為。一個(gè)類型可以具體實(shí)現(xiàn)為多個(gè)類,每個(gè)類又包括自己獨(dú)特的內(nèi)部設(shè)計(jì)。類型代表著類的外部特征,但子類型的概念和子類卻是不同的。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院311.1.2類型一致性原則類型一致性設(shè)計(jì)原則可表述為:如果s為t的真子類型,則s必須與t一致,即類型s的對(duì)象可以出現(xiàn)在類型t的對(duì)象所需要的任何環(huán)境中,并且當(dāng)該對(duì)象的任何獲取操作執(zhí)行時(shí),仍能保持其正確性。例如,Circle是Ellipse的子類型。盡管這個(gè)橢圓形操作擴(kuò)展成圓形是不行的,但任何為圓形的對(duì)象也必然是橢圓形的。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4在設(shè)計(jì)中,每個(gè)類或子類的繼承層次結(jié)構(gòu)必須遵循類型一致性原則。為了做到每個(gè)子類與其超類一致,引入兩個(gè)重要子原則:抗變性與協(xié)變性。滿足下列三個(gè)操作限制條件:(1)每個(gè)超類的操作必須與其子類中一個(gè)操作相對(duì)應(yīng),它們具有相同的名字和函數(shù)原則。(2)每個(gè)子類操作的前置條件不應(yīng)強(qiáng)于其超類操作的前置條件,這就是抗變性原則。(3)每個(gè)子類操作的后置條件至少要和其相應(yīng)超類操作的后置條件一樣強(qiáng),這就是協(xié)變性原則。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院5類型一致性原則要求子類S必須為類T的真子類型,并且滿足下列六個(gè)限制條件:(1)S的狀態(tài)空間(State-space)必須與T的狀態(tài)空間一致。(2)在S和T的共享空間中,S的狀態(tài)空間必須等同于或位于T的狀態(tài)空間之內(nèi)。另一種描述方法:S的類不變式必須等同于或強(qiáng)于T的不變式。(3)對(duì)于T的每一操作(如T.op),S覆蓋或重定義為S.op,則:S.op必須與T.op名稱相同。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院6(4)S.op的形式函數(shù)原型的參數(shù)必須與T.op的形式函數(shù)原型的參數(shù)表一一對(duì)應(yīng)。(5)S.op的前置條件必須等同于或弱于T.op的前置條件。(6)S.op的后置條件必須等同于或強(qiáng)于T.op的后置條件。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院711.1.3閉合行為原則閉合行為原則是指:在基于類型/子類型層次結(jié)構(gòu)的繼承層次結(jié)構(gòu)中,類C的任何對(duì)象操作的執(zhí)行——包括從C的超類繼承的所有操作——應(yīng)滿足C的類不變式。如果設(shè)計(jì)一個(gè)類中給某個(gè)對(duì)象發(fā)送消息來調(diào)用其修改操作,則應(yīng)該檢查目標(biāo)類的閉合性。如果發(fā)送消息并作一般(超類)條件假設(shè),則必須做好準(zhǔn)備,目標(biāo)對(duì)象可能拒絕該消息或不作任何操作便返回。如果出現(xiàn)該問題,則在發(fā)送消息前,2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院8可以采取下列步驟:(1)檢查運(yùn)行時(shí)的目標(biāo)類。(2)限制與目標(biāo)有關(guān)的變量的多態(tài)性。(3)設(shè)計(jì)消息時(shí)假設(shè)目標(biāo)是有關(guān)層次結(jié)構(gòu)中最特殊、最底層的類——即對(duì)其行為具有最高限制條件的類。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院911.2封裝與共生性11.2.1封裝結(jié)構(gòu)1.封裝的級(jí)別0級(jí)封裝:沒有經(jīng)過封裝的原始代碼。1級(jí)封裝:將封裝的子程序的級(jí)別。2級(jí)封裝:類(或?qū)ο螅┦菍⒈姸嗟淖映绦颍ǚQ為運(yùn)算指令)集合在一起形成一個(gè)高級(jí)別的結(jié)構(gòu)體。因?yàn)檫\(yùn)算指令已經(jīng)高出于1級(jí)封裝。3級(jí)封裝:商業(yè)類經(jīng)常會(huì)在各自的應(yīng)用領(lǐng)域里被“水平”劃歸為這級(jí)封裝的結(jié)構(gòu)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院102.制定標(biāo)準(zhǔn)管理各個(gè)封裝級(jí)別之間的相互作用傳統(tǒng)結(jié)構(gòu)設(shè)計(jì)標(biāo)準(zhǔn):表11-1的擴(kuò)展,其中包括了2級(jí)封裝2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1111.2.2共生性共生性(Connascence)一詞來源于拉丁文,意思是“一起出生的”。這種意思可以理解為:“相依為命”?;蛟S在需求分析、設(shè)計(jì)或規(guī)劃階段,具有共生性(或同族)的兩個(gè)軟件元素來源于一些相互聯(lián)系的父類,并且至少因?yàn)橥粋€(gè)原因而具有共同的命運(yùn)。下面是共生性應(yīng)用于軟件中的定義。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院12在兩個(gè)軟件元素A和B之間,共生性意味著:(1)在A中進(jìn)行了一些變化,那么為了保持全面的正確性,就需要對(duì)B進(jìn)行同樣的改變(或者至少要仔細(xì)地進(jìn)行校驗(yàn))。(2)或者為了保持正確性,需要在A和B中同時(shí)進(jìn)行一些變化。靜態(tài)的共生性有以下幾種方式:1)類型或類的共生性。在數(shù)據(jù)的int類型中見到過類型共生性。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院132)名稱共生性。兩個(gè)(或以上)程序變量為了達(dá)到相同引用的目的,需要有相同的名稱。3)常量共生性。它實(shí)際上是一種“數(shù)值/有意義的常量”共生性。與結(jié)構(gòu)設(shè)計(jì)中的混合連接技術(shù)相似,也會(huì)帶來很多系統(tǒng)中的可維護(hù)性的問題。4)算法共生性。算法共生性與常量共生性非常相似。5)位置共生性。一個(gè)程序單元中大部分的代碼具有位置共生性:要運(yùn)行正確的執(zhí)行序列中的兩行代碼,那么它們就必須具有正確的語法。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院14動(dòng)態(tài)共生性具有以下幾種形式:1)執(zhí)行共生性:執(zhí)行共生性是位置共生性的動(dòng)態(tài)表現(xiàn)形式。它有幾種類型,包括順序和相鄰。2)數(shù)值共生性:數(shù)值共生性常涉及很多算法限制。當(dāng)兩個(gè)數(shù)據(jù)庫中的相同信息具有不同格式時(shí),就不能夠使用數(shù)值共生性。3)同步共生性:這種特性常在實(shí)時(shí)性的系統(tǒng)中出現(xiàn)4)標(biāo)識(shí)共生性。有兩個(gè)對(duì)象,對(duì)象1和對(duì)象2總是指向同一個(gè)對(duì)象體,其中的每一個(gè)對(duì)象都帶有指向另一個(gè)對(duì)象的參數(shù)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1511.2.3面向?qū)ο笙到y(tǒng)中共生性的濫用1.C++的友員函數(shù)創(chuàng)立C++的友員函數(shù)是非常明顯地破壞封裝邊界的行為。2.依賴于實(shí)現(xiàn)的偶然性在應(yīng)用過程中利用偶然性,沒有依據(jù)的事實(shí)應(yīng)用和已創(chuàng)建類的內(nèi)部操作運(yùn)算之間創(chuàng)立超出封裝邊界的算法共生性。3.無約束的繼承2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1611.2.4共生性的術(shù)語如果兩個(gè)對(duì)象被迫合成為一個(gè)示例,那么說這兩個(gè)對(duì)象具有示例共生性。如果兩個(gè)對(duì)象不得不具有相同的生命期,則它們具有生命期共生性——或者被人們表述為持續(xù)時(shí)間共生性。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1711.3領(lǐng)域、依附集和內(nèi)聚11.3.1對(duì)象類的領(lǐng)域標(biāo)準(zhǔn)OO系統(tǒng)包含四個(gè)主要領(lǐng)域:1.基礎(chǔ)領(lǐng)域有:基礎(chǔ)性、結(jié)構(gòu)性、語義性基礎(chǔ)類包括整型、bool型和字符型。結(jié)構(gòu)類過去也被稱為容器類,它可以實(shí)現(xiàn)數(shù)據(jù)類型的結(jié)構(gòu),包括棧、隊(duì)列、線性表等,通常依靠一般性設(shè)計(jì)。語義類包括Date、Time、Angle、Money和Mass。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院182.應(yīng)用領(lǐng)域應(yīng)用領(lǐng)域中的一個(gè)類只能被一個(gè)單獨(dú)的應(yīng)用系統(tǒng)所使用。它包含事件識(shí)別類和事件管理類。在應(yīng)用領(lǐng)域中的類具有非常狹窄的可重復(fù)使用性。3.商業(yè)領(lǐng)域中的類:屬性類、角色類和關(guān)系類。屬性類描述了商業(yè)領(lǐng)域世界里事物的屬性。角色類由商業(yè)行為中“事物扮演角色”演變而來。相互關(guān)系類是從商業(yè)領(lǐng)域各種事物之間的相互關(guān)系演變而來的。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院194.結(jié)構(gòu)領(lǐng)域結(jié)構(gòu)領(lǐng)域包含三組類:機(jī)器間通信類、數(shù)據(jù)庫操作類和人機(jī)接口界面類。結(jié)構(gòu)性類在很多商業(yè)應(yīng)用領(lǐng)域得到廣泛應(yīng)用,只要應(yīng)用程序能在以類為支撐的物理結(jié)構(gòu)上實(shí)現(xiàn)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院205.每一領(lǐng)域類的來源不同領(lǐng)域的類具有不同的可重用級(jí)別。處于最低級(jí)別領(lǐng)域的類具有最大的可重復(fù)使用能力,而處于最高級(jí)別領(lǐng)域的類則具有最小的可重復(fù)使用能力?;A(chǔ)領(lǐng)域中的類定義為具有最大的可重復(fù)使用能力,并且應(yīng)用領(lǐng)域中的類的軟件結(jié)構(gòu)只能在一個(gè)單獨(dú)的應(yīng)用系統(tǒng)中使用。開發(fā)一個(gè)基礎(chǔ)性類庫是一件非常困難并且費(fèi)用昂貴的事情,不必自己嘗試著去做這件事情。處于商業(yè)領(lǐng)域中的類非常具有趣味性和挑戰(zhàn)性。最高級(jí)別的領(lǐng)域就是應(yīng)用領(lǐng)域。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2111.3.2依附集用一種定量的方法來講述基于基礎(chǔ)領(lǐng)域的類稱為依附集(Encumbrance)。1.依附集簡(jiǎn)介定義1(直接類引用集):一個(gè)類1的直接類引用是指1直接引用的類。在大部分面向?qū)ο蟮恼Z言里,一個(gè)類1可以直接地引用另一個(gè)類2:定義2(間接類引用集):如果類1的直接類引用集包含了類A1、A2、……、An,那么,1的間接類引用集就是1的直接類引用集和A1、A2、…
…
、An的間接類引用集的并集。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院22依附集的定義:一個(gè)類的直接依附集是指這個(gè)類的直接引用集的大小,一個(gè)類的間接依附集是指這個(gè)類的間接引用集大小。11-1所示,類A的直接引用是A1、A2、A32022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院23圖11-2所示的是類A的間接類引用集2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院242.依附集的使用依附集提供了一種衡量類的復(fù)雜程度的方法。類是處于基礎(chǔ)領(lǐng)域之上有多高的程度,因而,處于高級(jí)別領(lǐng)域的類具有較高的間接依附集,處于低級(jí)別的類則具有較低的間接依附集。3.Demeter規(guī)則作為限制一個(gè)類的直接依附集的指導(dǎo)原則,Demeter規(guī)則是通過限制這個(gè)類直接引用集的規(guī)模來實(shí)現(xiàn)的。Demeter規(guī)則的得名是從一個(gè)被稱為Demeter的面向?qū)ο蠓桨钢醒莼鴣淼摹?022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院25Demeter規(guī)則的慣用語是如下描述的:(1)假設(shè)A的對(duì)象為obj,并且假設(shè)定義對(duì)象obj的所有操作運(yùn)算為op,那么在執(zhí)行op操作過程中,一條消息的每一個(gè)目的地一定是下面的對(duì)象之一。(2)對(duì)象obj本身是一個(gè)特別的例子,self和super,this(在C++和Java中)/Current(在Eiffel中)。(3)op標(biāo)記符范圍內(nèi)通過一個(gè)參數(shù)引用一個(gè)對(duì)象(4)通過對(duì)象obj的一個(gè)變量來引用一個(gè)對(duì)象。(5)通過操作運(yùn)算ob創(chuàng)建的一個(gè)對(duì)象。(6)通過一個(gè)全局變量引用的一個(gè)對(duì)象。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2611.3.3類的內(nèi)聚:一個(gè)類和它的特性類的內(nèi)聚(classcohesion)是衡量位于一個(gè)類外部接口中的特性(屬性和操作運(yùn)算)間相互關(guān)聯(lián)的方法。一個(gè)低級(jí)內(nèi)聚的類具有一組并不屬于一個(gè)整體的特性,這些特性通過類來實(shí)現(xiàn)抽象類型。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院27試圖通過在使用變量的方法中,出現(xiàn)越多的重疊現(xiàn)象,那么這個(gè)類的內(nèi)聚就越強(qiáng)。這種方法不好,主要原因:(1)內(nèi)聚是應(yīng)該能夠從一個(gè)封裝軟件單元的外表很容易識(shí)別的一種特性。所以為了實(shí)現(xiàn)類的內(nèi)聚而不得不去查看類的內(nèi)核的做法看起來是錯(cuò)誤的。(2)這樣的一種衡量方法是很不穩(wěn)定的,并且過分地依賴于類實(shí)現(xiàn)方法的特別的內(nèi)部設(shè)計(jì),而這種類的實(shí)現(xiàn)方法在這個(gè)類的整個(gè)生命周期中可能發(fā)生改變。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院281.混合事例型內(nèi)聚混合事例型內(nèi)聚的定義:一個(gè)混合事例型內(nèi)聚的類具有這樣的特性:對(duì)于類的對(duì)象來說這些特性是未被定義的。例如,假設(shè)一個(gè)銷售部門既有發(fā)放傭金的銷售人員,又有不發(fā)放傭金的銷售人員。Fred是具有傭金的銷售人員,而Mary是沒有傭金的銷售人員。在采用面向?qū)ο蠓椒▉碓O(shè)計(jì)有關(guān)這個(gè)部門的應(yīng)用系統(tǒng)時(shí),有一個(gè)Salesperson類,通過fred和mary兩個(gè)變量指向這個(gè)類的對(duì)象實(shí)例。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院292.混合領(lǐng)域型內(nèi)聚在給出混合領(lǐng)域型內(nèi)聚的定義前,先需要對(duì)“非本征的(extrinsic)”進(jìn)行定義。如果類A在不涉及到任何類B概念的前提下完全能夠得到充分的定義,那么對(duì)于類A來說類B是非本征的。如果類B捕獲類A中固有的一些特性,那么對(duì)于類A來說類B就是本征的。混合領(lǐng)域型內(nèi)聚的定義:一個(gè)混合領(lǐng)域型內(nèi)聚的類包含這樣的一個(gè)元素,這個(gè)元素是一個(gè)不同領(lǐng)域的非本征類的直接依附集。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院303.混合角色型內(nèi)聚混合角色型內(nèi)聚的定義為:一個(gè)具有混合角色型的類A包含了這樣一個(gè)元素,這個(gè)元素直接依附集于與A同一領(lǐng)域的類的一個(gè)非本征類。與一個(gè)混合領(lǐng)域內(nèi)聚的類不同的是,一個(gè)混合角色型內(nèi)聚的類并不是跨領(lǐng)域的。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3111.4繼承與多態(tài)性的危險(xiǎn)性11.4.1繼承的濫用設(shè)計(jì)方案剛開始毫無節(jié)制地濫用繼承,后來發(fā)展成為晦澀難懂、莫名其妙的使用假設(shè)某應(yīng)用(特別是在界面設(shè)計(jì)中)毫無節(jié)制地濫用繼承后,形成的結(jié)構(gòu)如下圖。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院322022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院33如果在運(yùn)行中出現(xiàn)錯(cuò)誤(或者要修改)的問題。問題的反映點(diǎn)出現(xiàn)在類D的位置,我們就會(huì)對(duì)D類進(jìn)行修改??墒窃趯?duì)該類進(jìn)行分析時(shí),發(fā)現(xiàn)問題并不是出現(xiàn)在該類。而是出現(xiàn)在他繼承的基類。于是,我們不得不沿著繼承的路徑查找出問題的類。這個(gè)要找的類也許是,也許是。所以,我們不得不對(duì)于這科繼承樹進(jìn)行人工遍歷。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3411.4.2錯(cuò)誤的聚集圖11-3的繼承結(jié)構(gòu)圖給出了類Airplane及其四個(gè)假定的子類:Wing、Tail、Engine及Fuselage。
2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3511.4.3倒置的層次結(jié)構(gòu)
如圖11-4所示的關(guān)于繼承的例子對(duì)應(yīng)于一個(gè)普通的組織結(jié)構(gòu)圖,該結(jié)構(gòu)圖表達(dá)的實(shí)際意義是:“雇員是某種經(jīng)理,而經(jīng)理是某種董事會(huì)成員。”
2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3611.4.4混淆類及其實(shí)例圖11-5所示給出的多重繼承例子更是令人難以捉摸。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院37圖11-6所示給出了應(yīng)該怎樣設(shè)計(jì)以表述某些物種是瀕臨滅絕的這一事實(shí)的答案。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3811.4.5誤用應(yīng)用設(shè)計(jì)2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3911.4.6多態(tài)性的危險(xiǎn)性1.操作的多態(tài)性圖11-8所示描述了一個(gè)類繼承樹。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院402.變量的多態(tài)性多態(tài)性同樣適用于變量,即變量在不同的時(shí)間可以指向不同類的對(duì)象。3.消息中的多態(tài)性消息由指向目標(biāo)對(duì)象的變量及表示要調(diào)用操作的名稱組成。要在操作中安全使用多態(tài)性,則指向目標(biāo)對(duì)象的變量SOP必須落在消息中定義的操作SOP中,如果設(shè)計(jì)者違反了該原則,則可能會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院41圖11-9變量COP的某些部分落在操作的COP之外2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4211.5狀態(tài)空間和行為11.5.1一個(gè)類的狀態(tài)空間和行為一個(gè)類應(yīng)該表示一種共同的抽象性,這種抽象性是屬于這個(gè)類的所有個(gè)體對(duì)象的共有屬性。抽象性(abstraction)含義是指在軟件對(duì)象中不必考慮到真實(shí)世界中事物所表現(xiàn)出來的每一種可能特性。一致(uniform)含義是指選取一個(gè)類的抽象性之后,將這種抽象性以相同的方式應(yīng)用于屬于這個(gè)類范圍之內(nèi)的每一個(gè)對(duì)象。性質(zhì)(properties)的含義是指類有兩個(gè)性質(zhì)即它的狀態(tài)空間和它所允許的行為。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4311.5.2子類的狀態(tài)空間如果A是B的一個(gè)子類,那么A的狀態(tài)空間必須完全包含于B的狀態(tài)空間之中。從技術(shù)的角度來講,將A的狀態(tài)空間發(fā)射給B的狀態(tài)空間就是指A的狀態(tài)空間必須位于B的狀態(tài)空間之中,也就是A的狀態(tài)空間受限于B的狀態(tài)空間。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4411.5.3子類的行為大部分對(duì)象(除非它們是永不改變的)在它們的類的狀態(tài)空間范圍內(nèi)進(jìn)行轉(zhuǎn)換是以一種或者多種屬性值的改變的方式進(jìn)行的。這些轉(zhuǎn)換構(gòu)成了一個(gè)類的允許行為,該行為以這種方式定義:一個(gè)類C的允許行為是指這樣的一組轉(zhuǎn)換,即允許類C的一個(gè)對(duì)象在C的狀態(tài)空間范圍內(nèi)改變狀態(tài)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4511.5.4狀態(tài)空間的一個(gè)約束條件:類的不變式
一個(gè)類的合理狀態(tài)空間是通過它的類不變式來定義的。一個(gè)類的不變式是指一種狀態(tài),即在任何時(shí)候該類的每一個(gè)對(duì)象都滿足條件。例如類Triangle。為了簡(jiǎn)單,忽視三角形的位置和方向性,只強(qiáng)調(diào)它們的長度。這個(gè)不變式(使用它的≥運(yùn)算關(guān)系)允許出現(xiàn)退化的三角形——即直線。如果一個(gè)三角形的邊分別是Triangle.a、Triangle.b和Triangle.c,那么部分Triangle的類不變式就是:a+b≥candb+c≥aandc+a≥b2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院462022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4711.5.5前置條件和后置條件每一個(gè)操作運(yùn)算都有一個(gè)前置條件和一個(gè)后置條件。如果某操作運(yùn)算開始執(zhí)行之前該條件必須是正確的,若不正確,那么該操作運(yùn)算就有可能拒絕執(zhí)行,并且可能產(chǎn)生一些異常情況,則它是前置條件。如果操作運(yùn)算執(zhí)行結(jié)束時(shí)該條件必須是正確的,若不正確,那么操作運(yùn)算的執(zhí)行是不完全的,并且一定是經(jīng)過調(diào)整的,則此條件為后置條件。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院4811.5.6類接口中支持的狀態(tài)1.非法狀態(tài)2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一元二次函數(shù)、方程和不等式 基礎(chǔ)測(cè)試(含解析)-2026屆高三數(shù)學(xué)一輪復(fù)習(xí)
- 原電池新型電源(練)-2023年高考化學(xué)一輪復(fù)習(xí)(新教材新高考)
- 4項(xiàng)目四 自動(dòng)售檢票系統(tǒng)終端設(shè)備
- 四川省德陽市綿竹中學(xué)2024-2025學(xué)年高二上學(xué)期開學(xué)考試地理試卷(含答案)
- 合同談判策略及技巧培訓(xùn)資料
- 移動(dòng)醫(yī)療應(yīng)用程序開發(fā)安全標(biāo)準(zhǔn)
- 2024-2025學(xué)年江蘇省無錫第六高級(jí)中學(xué)高二(下)期中數(shù)學(xué)試卷(含答案)
- 2025秋初中數(shù)學(xué)九年級(jí)上冊(cè)人教版教案設(shè)計(jì) 22.1.2二次函數(shù)y=ax2的圖象和性質(zhì)(2)-1教案
- 山東省濱州市鄒平市2024-2025學(xué)年八年級(jí)上學(xué)期期末考試物理試題【含答案】
- 三角函數(shù)的概念與誘導(dǎo)公式(復(fù)習(xí)講義)-2026年高考數(shù)學(xué)一輪復(fù)習(xí)原卷版
- 普外科醫(yī)療質(zhì)量評(píng)價(jià)體系與考核標(biāo)準(zhǔn)
- IWE(國際焊接工程師)考試試題生產(chǎn)模塊
- 40M躉船總體建造方案
- 吞咽障礙患者的營養(yǎng)支持課件
- 行政處罰案卷制作規(guī)范課件
- 無人機(jī)操控快速入門訓(xùn)練法
- 中國醫(yī)院質(zhì)量安全管理 第4-13部分:醫(yī)療管理住院患者健康教育 T∕CHAS 10-4-13-2020
- 化學(xué)工業(yè)計(jì)量器具分級(jí)管理辦法解釋
- 火電廠熱控施工方案
- 高中物理(人教版)必修1全冊(cè)課件
- 完整版_第八版內(nèi)科冠心病課件
評(píng)論
0/150
提交評(píng)論