freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機軟件及應(yīng)用]數(shù)據(jù)抽象與面向?qū)ο蟮某绦蛟O(shè)計(參考版)

2024-10-22 04:11本頁面
  

【正文】 但是兩者有沖突。 ? 多態(tài)同時適用于方法(定義在幾個類中)和變量(在不同時間指向不同類的對象)。 內(nèi)容: ? 消息中的多態(tài) ? 多態(tài)和抽象 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 82 消息中的多態(tài) ?概念: ?方法 m的多態(tài)作用域( SOP):是定義 m的類的集合。 ? 合理類層次中的每個類都必須遵守閉合行為原則:要求由父類繼承而來的子類行為必須遵守子類的類不變式。即在任何具有類 A對象的環(huán)境及不執(zhí)行任何修改方法的環(huán)境中都可以接受類 B的對象; Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 72 小結(jié)(續(xù)) ? 合理的父類 /子類層次遵守父類型 /子類型層次。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 70 How to ensure preservation of class invariant ? Check what methodx does before invoking it 在調(diào)用方法之前,檢查它做什么 ? Pass only the exact type that methodx expects (perhaps by cloning) 只傳遞方法期望的類型(也許通過克隆) ? Override (maybe cancel) any superclass method in the subclass if it doesn’t preserve the subclass’ invariant 在子類中重載(或刪除)任何不能保持子類不變式的方法 ? Redesign the class hierarchy to avoid the problem 重新設(shè)計類層次已避免問題 ? Allow the class of the subclass object to change! Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 71 小結(jié) ? 類 A的屬性包括狀態(tài)空間和它允許的行為; ? B是 A的子類,則 B的狀態(tài)空間必須被 A的 SP所約束,但是 B的 SP可以從 A的 SP中得到擴展; ? 類不變式限制了類的狀態(tài)空間大小。 ) Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 69 how best to solve this problem? ? 作為 Triangle的設(shè)計者,可以采?。? ? 不繼承 add_vertex,或者 ? 覆蓋 add_vertex以使它失效,或者 ? 如果該行為不能保證 Triangle的閉包,但又被應(yīng)用接受,需要將 Triangle的對象重新分類為 Rectangle。 bonuspct) 0 1 2 3 4 5 6 7 8 9 10 11 12 bonuspct legal ranges } } illegal ranges range of bonuspct defined in EMPLOYEE::calcbonus Example Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 62 The principle of type conformance ? 如何使子類成為子類型,對設(shè)計合理的類層次十分重要 ? 使子類 C成為類 P的真正子類型,必須滿足下面的 6個約束: ? 頭兩條適用于整個類 ? 后四條使用于單個方法 1. C的狀態(tài)空間必須同 P有相同的維度 ?但是 C可以從 P的狀態(tài)空間擴展維度 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 63 2. In the dimensions that C and P share, the statespace of C must either be equal to or lie within the statespace of P 在 C和 P共有的維上, C:: 狀態(tài)空間 ?P::狀態(tài)空間 ? Another way to say this is, The class invariant of C must be equal to or stronger than that of P換句話說: C::Inv ? P::Inv ? 對每個 C用 C::m 覆蓋的 P的方法 P::m,滿足: 3. C::m must have the same name as P::m 4. C::m’s formal signature must list its arguments in the same order as P::m’s formal signature The principle of type conformance Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 64 The principle of type conformance 5 The precondition of C::m must be equal to or weaker than that of P::m P::m的 PreCond ? C::m的 PreCond ?特別地, C::m的每個形式化輸入?yún)?shù)必須是相應(yīng)的 P::m的超類型或同樣的類型 ? This is the principle of contravariance 這是 “ 逆變性 ” 原則 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 65 The principle of type conformance 6. The postcondition of C::m must be equal to or stronger than that of P::m C::m的 PostCond? P::m的 PostCond ? 特別地, C::m的每個形式化輸出參數(shù)必須是相應(yīng)的 P::m的子類型或相同 ? This is the principle of covariance 這是協(xié)變性原則 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 66 ? 類型一致性對于保證類型正確性是一個充分的設(shè)計原則 ? 僅當一個對象被傳送給一個方法,且他不修改對象的狀態(tài) , 才適用 ? But it is not sufficient ? 當方法修改傳入的對象的狀態(tài)時 ? 因為一個類型的方法不必維護在子類型上的閉包 ? 因此,要確保方法保持對象的類不變式 ? This is the principle of closed behavior G. The principle of closed behavior Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 67 ? 在基于類型 /子類型的繼承層次中,當執(zhí)行任何方法時(修改型方法或訪問型方法),每個類的行為(包括繼承的父類的行為)都應(yīng)當遵守類的不變式,這就是閉合行為原則 ? 例如: 閉合行為原則定義 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 68 ? POLYGON::move, applied to the triangle tri1, preserves its “triangleness” ? So that’s OK ? POLYGON::addvertex, applied to the triangle tri1, destroys its triangular property ? So, how best to solve this problem? move triangle1: (POLYGON) move (distance。 bonuspct) Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 60 ? Contravariance ? 方法 MANAGER::calcbonus (perfeval。 bonuspct) 在類 EMPLOYEE和類 MANAGER中都定義 ?因此,在 MANAGER中 perfeval應(yīng)該遵循 contravariance, ?且,在 MANAGER中 bonuspct 應(yīng)遵循 covariance EMPLOYEE / calcbonus (perfeval。 ? 特別地 , C::m的返回參數(shù)必須與 P::m相同,或者是它的子類型。這稱為 “ 協(xié)變性(Covariance)”。這樣滿足父類的輸入才能滿足子類的條件。這稱為 “ 逆變性(Contravariance)”。即 Inv. Of Child ? Inv. Of Parent. ? 例如, Rectangle有 w1=w2 and h1=h2。因此,應(yīng)當把每個子類設(shè)計成每個父類的子類型,且應(yīng)當遵循類型一致原則。 ) rectangle1: RECTANGLE stretchhoriz (stretchfactor。 ) rectangle1: RECTANGLE rotate (rotationangle。 ... someobject: SOMECLASS somemethod (square1。 )。 ?類型一致性原則 :如果 S是 T的一個子類型,即任何需要類型 T對象出現(xiàn),而且在任何存取方法執(zhí)行時都需要保持正確性的場合,都可以使用類型 S的對象,則 S就同 T是一致的。 【 Liskov 1988】 ? 子類型 (subtype) ? 子類型是指符合替換原則的子類關(guān)系,以區(qū)別于一般的可能不符合替換原則的子類關(guān)系 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 43 B. 子類型的狀態(tài)空間 ? 設(shè) P是一個類 , C是 P的子類型( subtype) ?換言之, “an C is also a P” ? C的狀態(tài)空間必須完全約束在 P的狀態(tài)空間中 ? 例如 : AUTOMOBILE and ROADVEHICLE 類的1維的狀態(tài)空間 P C 0 1 2 3 4 5 6 7 8 9 10 11 12 currweight statespace of AUTOMOBILE statespace of ROADVEHICLE Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 44 ? 然而 , C的狀態(tài)空間可以在其他維上對 P的狀態(tài)空間進行擴展 ? AUTOMOBILE的 2維狀態(tài)空間是由 ROADVEHICLE的一位狀態(tài)空間擴展來的 ? 子類型的行為的約束和擴展同狀態(tài)空間的類似 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 11 12 currweight currpassengercount statespace of AUTOMOBILE statespace of ROADVEHICLE B. 子類型的狀態(tài)空間 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計方法學(xué) All Rights Reserved 45 C. 不變式和狀態(tài)空間 ? 每個類有一個不變式 ? 不變式約束對象的行為 ? 不是所有的對象狀態(tài)都是合法的 ? 類的每個對象必須在任何時候都滿足類的不變式 ? 例如,如果三角形的邊是
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1