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

正文內(nèi)容

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

2024-10-31 04:11 本頁(yè)面
 

【正文】 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 1 Outline OO技術(shù)優(yōu)勢(shì) OO基本概念 5. 面向?qū)ο笤O(shè)計(jì)的過(guò)程 6. OOM vs 傳統(tǒng)面向過(guò)程方法 7. 面向?qū)ο笤O(shè)計(jì)的基本原則 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 2 OOD的基本原則 1. 封裝和同源 2. 域、相關(guān)度和內(nèi)聚 3. 類和子類的屬性 4. 繼承和多態(tài)的危險(xiǎn)性 5. 類接口 6. 可復(fù)用 OO設(shè)計(jì)原則 優(yōu)秀的 OO設(shè)計(jì)規(guī)則及評(píng)估設(shè)計(jì)質(zhì)量的標(biāo)準(zhǔn)。 什么樣的設(shè)計(jì)是優(yōu)秀的 OOD? ? 代碼是可擴(kuò)展、可維護(hù)的。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 3 1. OO設(shè)計(jì)原則-封裝和同源 ? Encapsulation structure封裝結(jié)構(gòu) ? Connascence同源 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 4 1. OO設(shè)計(jì)原則- 封裝 和同源 Level 2: The object /class structure 對(duì)象 /類結(jié)構(gòu) 封裝結(jié)構(gòu)的三個(gè)封裝層次 Level 0: Raw lines of code 原始代碼行 Level 1: Standard structured design modules 過(guò)程化單元 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 5 1. OO設(shè)計(jì)原則- 封裝 和同源 ?控制封裝層次交互的設(shè)計(jì)標(biāo)準(zhǔn) ?顯示哪種標(biāo)準(zhǔn)適合于哪個(gè)層次; ?結(jié)構(gòu)化編程 的原則規(guī)定了代碼行和同一過(guò)程的其他代碼行之間的關(guān)系 ?扇出: 是在一個(gè)給定過(guò)程中代碼行從其他過(guò)程中所作引用的數(shù)目 ?內(nèi)聚 :是一個(gè)給定過(guò)程的代碼行對(duì)實(shí)現(xiàn)過(guò)程目標(biāo)的聚合度 ?耦合 :描述過(guò)程之間聯(lián)系的數(shù)目和力度 ?類內(nèi)聚 :表示與實(shí)現(xiàn)類目標(biāo)有關(guān)的各個(gè)方法之間相互之間的聚合度 ?類耦合 :描述類間聯(lián)系的數(shù)目和力度 到 從 層次 0(代碼行 ) 層次 1(過(guò)程 ) 層次 2(類 ) 層次 0 結(jié)構(gòu)化編程 扇出 - 層次 1 內(nèi)聚 耦合 - 層次 2 - 類內(nèi)聚 類耦合 方法 類 私有變量 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 6 1. OO設(shè)計(jì)原則-封裝和 同源 ? Two software elements that are connascent share the same fate for at least one reason 兩個(gè)軟件元素在生命中有相同的命運(yùn) – Could use the term coupling 耦合 ?兩個(gè)軟件組件同源的含義是指: –為保持正確性,改變一個(gè)元素,另一個(gè)必須隨之改變,或至少需要檢查它; –可以假定某種變化,需要兩個(gè)同源的組件同時(shí)變化以保持整體的正確性。 ? Simple example –類型同源 –名字同源 Connascence同源 int i。 // Line A ... i := 7。 // Line B ... ?如果行 A變成 Char i; 則行 B需要變化, 則稱為類型同源 ?若行 A變成 int j; 則行 B應(yīng)變成 j:=7, 則稱為名稱同源 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 7 同源的多樣性 ? 外在同源 ? 如名字同源和類型同源 ? 內(nèi)在同源 ? 如匯編代碼中 : X: JUMP Y+38 … Y: Clear R1 … // 這里有 38個(gè)字節(jié) Z: Clear R2 // 這是從 X處跳轉(zhuǎn)過(guò)來(lái)執(zhí)行的指令 … . ? 在 Y和 Z之間有精確的 38字節(jié) ? 同源表現(xiàn)的越內(nèi)在,發(fā)現(xiàn)同源的時(shí)間耗費(fèi)越多,除非在合適的位置做了詳細(xì)的文檔說(shuō)明。在類庫(kù)或其他文檔中相距較大的同源處理起來(lái)很費(fèi)時(shí)且很難發(fā)現(xiàn)。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 8 同源的多樣性 ? 靜態(tài)同源的多樣性 ? 名稱同源 ? 例如兩個(gè)變量需要有相同的名字指向相同的東西 ? 類繼承中,子類明顯地使用了父類的變量名字。 ? 類型或者類同源 ? Int I。 …… I:=7。 ? 意義同源 ? 例如,假設(shè)帳號(hào) acc_num為正,表示個(gè)人帳號(hào),為負(fù)表示企業(yè)的,為零屬于內(nèi)部的,則代碼 If 0 then … ? 在所有同帳號(hào)相關(guān)的軟件組件之間就有意義上的同源 ? 算法同源 ? 例如, 檢驗(yàn) 帳號(hào)的算法和 檢查 帳號(hào)的算法之間; ? 構(gòu)造 Hash函數(shù)和利用 Hash函數(shù)查找的算法 ? 位置同源 ? 過(guò)程化單元中的多數(shù)代碼有位置同源,需要以正確的順序執(zhí)行;形式化參數(shù)和實(shí)在參數(shù)之間具有位置同源 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 9 同源的多樣性 ? 動(dòng)態(tài)同源是基于代碼的執(zhí)行形式的同源 ? 執(zhí)行同源: ? 與位置同源等價(jià)的同源 ? 時(shí)間同源: ? 出現(xiàn)在實(shí)時(shí)系統(tǒng)中,如,關(guān)閉 XRay機(jī)器的指令必須在打開(kāi)他的指令后的 n毫秒內(nèi)執(zhí)行; ? 數(shù)值同源: ? 經(jīng)常包括一些算術(shù)限制。如,一個(gè)矩形的四角需要保持一定的關(guān)系; ? 本體同源: ? 面向?qū)ο笙到y(tǒng)中經(jīng)常使用的限制。兩個(gè)對(duì)象 o1和 o2,每個(gè)都有一個(gè)變量指向另一個(gè)相同的對(duì)象,而且必須總是指向相同的對(duì)象。 動(dòng)態(tài)同源的多樣性 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 10 逆向同源 ? 同源等同于 “ 相同 ” 或 “ 相關(guān) ” ? 逆向同源: “ 差別同源 ” 或 “ 否定同源 ” ? 逆向同源保持了不同性,而不是等同性 ? 例如, ? int I; int j; 若 j改為 I, 則 I必須改名 ? 類 C同時(shí)從類 A和類 B繼承而來(lái),則 A和 B的方法就應(yīng)該有不同的名字。 產(chǎn)生了 A的方法和 B的方法之間的名稱的逆向同源 。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 11 同源與封裝邊界 ? 同源和逆同源 是現(xiàn)代軟件工程的核心; ? 封裝是逆向同源的 一個(gè)檢測(cè)手段 ? 設(shè)想一個(gè)有 10萬(wàn)行代碼的系統(tǒng),需要給一個(gè)新變量起名,簡(jiǎn)直是個(gè)惡夢(mèng)。 ? 同源 也是 OO具有優(yōu)勢(shì)的原因。 OO平滑了在封裝層次 1上的一些同源。例如, ? 封裝層次 1中的 Hash表,更新表的位置和檢索表的位置,具有算法同源。如果想更換 Hash的實(shí)現(xiàn)算法,需要找出所有與此 Hash有關(guān)的代碼; ? 封裝層次 1不會(huì)引導(dǎo)維護(hù)者到達(dá)這些位置;而封裝層次 2可以有效地控制與該 Hash有關(guān)的數(shù)據(jù)和方法在一個(gè)獨(dú)立的組件的邊界之內(nèi)。 方法 類 私有變量 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 12 同源與可維護(hù)性 ? 同源提供了三個(gè)提高系統(tǒng)可維護(hù)性的原則 ? 通過(guò)將系統(tǒng)分割為封裝組件來(lái)減少整體的同源; ? 減少封裝邊界間的任何保留的同源; ? 在封裝內(nèi)部對(duì)同源最大化; 設(shè)計(jì)準(zhǔn)則:將相似的元素結(jié)合起來(lái),將不相似的元素分開(kāi) 方法 類 私有變量 同源代表了軟件互相依賴性的集合; 外在同源在源代碼中很明顯;可以使用編輯器查找; 內(nèi)在同源則只有靠直覺(jué)發(fā)現(xiàn),或參考文檔。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 13 OO系統(tǒng)中的同源濫用 (1/2) ? C++友元函數(shù): 抵消了封裝帶來(lái)的好處 ? C++的友元極大地違反了封裝邊界。它是類邊界之外的組件,可以存取類的對(duì)象的私有元素; ? 友元可用于測(cè)試對(duì)象的內(nèi)部狀態(tài); Class A { public: void display() { cout xendl。} int Getx() {return x。} friend class B。 private: int x。 Class B { public: void Set(int i)。 void display() 。 private: A a。 } void B::Set(int i) { = i。} Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 14 OO系統(tǒng)中的同源濫用 ? 繼承的誤用- 允許子類繼承父類的實(shí)現(xiàn) ? 如果允許一個(gè)類同時(shí)擁有父類的外部可見(jiàn)性和內(nèi)部可見(jiàn)性,那么就在類的主要邊界引進(jìn)了大量的同源性,包括名稱同源、類同源等 ? 對(duì)實(shí)現(xiàn)的依賴: 允許一個(gè)類算法的內(nèi)部設(shè)計(jì)細(xì)節(jié)被另一個(gè)類的代碼所依賴 ? 例如,創(chuàng)建一個(gè)類 SET, 它有 add、 size和retrieve方法。結(jié)構(gòu)和實(shí)現(xiàn)暗含 retrieve查出元素的順序與加入的順序一致。并在應(yīng)用程序中使用了這個(gè)沒(méi)有文檔化的事實(shí),結(jié)果形成了算法同源 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 15 封裝與同源-總結(jié) ? A software system must be held together with some connascence 同源是不可避免的 ? Minimize it 最小化 ? Localize it 局部化 ? Respect encapsulation boundaries 注意封裝邊界 ? Connascence may be why OO “works” ? 對(duì)一些形式的同源,給予一個(gè)較好的處理 1 Minimize overall connascence. 最小化全面同源 2 Minimize connascence across encapsulation boundaries by maximizing it within encapsulation boundaries. 通過(guò)最大化封裝邊界內(nèi)的同源,最小化跨封裝邊界的同源。 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 16 2. OO設(shè)計(jì)原則-域、相關(guān)度和內(nèi)聚 ? 內(nèi)容 ? 對(duì)象類的域 ? 相關(guān)度 encumbrance ? 內(nèi)聚 Cohesion Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 17 對(duì)象類的各種域 ? 應(yīng)用域 valuable within one application ? 事件-活動(dòng)-管理子域 ? 事件-激活-識(shí)別子域 ? 事務(wù)域 valuable for one industry or pany ? Relationship、 Role (entity)、 Attribute ? 架構(gòu)域- 包括對(duì)架構(gòu)實(shí)現(xiàn)有價(jià)值的類 ? 用戶界面、數(shù)據(jù)庫(kù)操作、計(jì)算機(jī)通信 ? 基礎(chǔ)域 Foundation valuable across all industries ? 基礎(chǔ)類、語(yǔ)義類、結(jié)構(gòu)化類 Chap9數(shù)據(jù)抽象與面向?qū)ο蟪绦蛟O(shè)計(jì) 2021/11/10 鮑玉斌 東大信息學(xué)院軟件所 程序設(shè)計(jì)方法學(xué) All Rights Reserved 18 對(duì)象類的各種域- 基礎(chǔ)域 ? 基礎(chǔ)域包含了重用性最廣的
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1