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

正文內(nèi)容

11面向?qū)ο笤O(shè)計(jì)-資料下載頁

2025-08-04 08:01本頁面
  

【正文】 123 設(shè)計(jì)關(guān)聯(lián)之一:關(guān)聯(lián)的遍歷 ? 在應(yīng)用系統(tǒng)中,使用關(guān)聯(lián)有兩種可能的方式: ? 單向遍歷 。某些關(guān)聯(lián)只需要單向遍歷,這種單向遍歷實(shí)現(xiàn)起來比較簡單。 ? 雙向遍歷 。某些關(guān)聯(lián)可能需要雙向遍歷,雙向關(guān)聯(lián)實(shí)現(xiàn)起來稍微麻煩一些。 ? 在使用原型法開發(fā)軟件的時(shí)候,原型中所有關(guān)聯(lián)都應(yīng)該是雙向的,以便于增加新的行為,快速地?cái)U(kuò)充和修改原型。 2022/8/21 124 設(shè)計(jì)關(guān)聯(lián)之二:實(shí)現(xiàn)單向關(guān)聯(lián) ? 用指針可以方便地實(shí)現(xiàn)單向關(guān)聯(lián)。 ? 如果關(guān)聯(lián)的重?cái)?shù)是一元的,則實(shí)現(xiàn)關(guān)聯(lián)的指針是一個(gè)簡單指針; ? 如果重?cái)?shù)是多元的,則需要用一個(gè)指針集合實(shí)現(xiàn)關(guān)聯(lián)。 2022/8/21 125 設(shè)計(jì)關(guān)聯(lián)之三:實(shí)現(xiàn)雙向關(guān)聯(lián) ? 實(shí)現(xiàn)雙向關(guān)聯(lián)有下列 3種方法: ? 只用屬性實(shí)現(xiàn)一個(gè)方向的關(guān)聯(lián),當(dāng)需要反向遍歷時(shí)就執(zhí)行一次正向查找。如果兩個(gè)方向遍歷的頻度相差很大,而且需要盡量減少存儲開銷和修改時(shí)的開銷,則這是一種很有效的實(shí)現(xiàn)雙向關(guān)聯(lián)的方法。 ? 兩個(gè)方向的關(guān)聯(lián)都用屬性實(shí)現(xiàn)。這種方法能實(shí)現(xiàn)快速訪問,但是,如果修改了一個(gè)屬性,則相關(guān)的屬性也必須隨之修改,才能保持該關(guān)聯(lián)鏈的一致性。 ? 用獨(dú)立的 關(guān)聯(lián)對象 實(shí)現(xiàn)雙向關(guān)聯(lián)。關(guān)聯(lián)對象不屬于相互關(guān)聯(lián)的任何一個(gè)類,它是獨(dú)立的關(guān)聯(lián)類的實(shí)例,如圖所示。 2022/8/21 126 設(shè)計(jì)關(guān)聯(lián)之四:關(guān)聯(lián)對象的實(shí)現(xiàn) ? 可以引入一個(gè)關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,關(guān)聯(lián)中的每個(gè)連接對應(yīng)著關(guān)聯(lián)類的一個(gè)對象。 ? 實(shí)現(xiàn)關(guān)聯(lián)對象的方法取決于關(guān)聯(lián)的重?cái)?shù)。 ? 對于一對一關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與參與關(guān)聯(lián)的任一個(gè)對象合并。 ? 對于一對多關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與 “ 多 ” 端對象合并。 ? 如果是多對多關(guān)聯(lián),則關(guān)聯(lián)鏈的性質(zhì)不可能只與一個(gè)參與關(guān)聯(lián)的對象有關(guān),通常用一個(gè)獨(dú)立的關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,這個(gè)類的每個(gè)實(shí)例表示一條具體的關(guān)聯(lián)鏈及該鏈的屬性。 2022/8/21 127 主要內(nèi)容 ?面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則 ?啟發(fā)規(guī)則 ?軟件重用 ?系統(tǒng)分解 ?設(shè)計(jì)問題域子系統(tǒng) ?設(shè)計(jì)人機(jī)交互子系統(tǒng) ?設(shè)計(jì)任務(wù)管理子系統(tǒng) ?設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng) ?設(shè)計(jì)類中的服務(wù) ?設(shè)計(jì)關(guān)聯(lián) ?設(shè)計(jì)優(yōu)化 2022/8/21 128 “ 設(shè)計(jì)優(yōu)化 ” 主要內(nèi)容 ?確定優(yōu)先級 ?提高效率的幾項(xiàng)技術(shù) ?調(diào)整繼承關(guān)系 2022/8/21 129 確定優(yōu)先級時(shí)要有折衷方案 ? 系統(tǒng)的各項(xiàng)質(zhì)量指標(biāo)并不是同等重要的,設(shè)計(jì)人員必須確定各項(xiàng)質(zhì)量指標(biāo)的相對重要性 (即確定優(yōu)先級 ),以便在優(yōu)化設(shè)計(jì)時(shí)制定折衷方案。 ? 系統(tǒng)的整體質(zhì)量與設(shè)計(jì)人員所制定的折衷方案密切相關(guān)。 ? 最終產(chǎn)品成功與否,在很大程度上取決于是否選擇好了系統(tǒng)目標(biāo)。 ? 最糟糕的情況是,沒有站在全局高度正確確定各項(xiàng)質(zhì)量指標(biāo)的優(yōu)先級,以致系統(tǒng)中各個(gè)子系統(tǒng)按照相互對立的目標(biāo)做了優(yōu)化,這將導(dǎo)致系統(tǒng)資源的嚴(yán)重浪費(fèi)。 2022/8/21 130 在效率和清晰性之間尋求適當(dāng)?shù)恼壑苑桨? ? 在折衷方案中設(shè)置的優(yōu)先級應(yīng)該是模糊的。事實(shí)上,不可能指定精確的優(yōu)先級數(shù)值,如: ? 速度 48% ? 內(nèi)存 25% ? 費(fèi)用 8% ? 可修改性 19% ? 最常見的情況,是在效率和清晰性之間尋求適當(dāng)?shù)恼壑苑桨浮? ? 后面兩小節(jié)分別講述: ? 在優(yōu)化設(shè)計(jì)時(shí)提高效率的技術(shù) ? 建立良好的繼承結(jié)構(gòu)的方法 。 2022/8/21 131 “ 設(shè)計(jì)優(yōu)化 ” 主要內(nèi)容 ?確定優(yōu)先級 ?提高效率的幾項(xiàng)技術(shù) ?調(diào)整繼承關(guān)系 2022/8/21 132 提高效率的幾項(xiàng)技術(shù) ? 提高效率有 3項(xiàng)技術(shù): ? 增加冗余關(guān)聯(lián)以提高訪問效率 ? 調(diào)整查詢次序 ? 保留派生屬性 2022/8/21 133 為什么增加冗余關(guān)聯(lián)? ? 在 OOA過程中,應(yīng)該避免在對象模型中存在冗余的關(guān)聯(lián),因?yàn)槿哂嚓P(guān)聯(lián)不僅沒有增添任何信息,反而會降低模型的清晰程度。 ? 但是,在面向?qū)ο笤O(shè)計(jì)過程中,當(dāng)考慮用戶的訪問模式,及不同類型的訪問彼此間的依賴關(guān)系時(shí),就會發(fā)現(xiàn),分析階段確定的關(guān)聯(lián)可能并沒有構(gòu)成效率最高的訪問路徑。 2022/8/21 134 例子:分析訪問路徑、提高訪問效率 ? 下面用設(shè)計(jì)公司雇員技能數(shù)據(jù)庫的例子,說明分析訪問路徑及提高訪問效率的方法。 ? 下圖是從面向?qū)ο蠓治瞿P椭姓〉囊徊糠帧? ? 公司類中的服務(wù) find_skill返回具有指定技能的雇員集合。例如,用戶可能詢問公司中會講日語的雇員有哪些人。 ? 假設(shè)某公司共有 2022名雇員,平均每名雇員會 10種技能,則簡單的嵌套查詢將遍歷雇員對象 2022次,針對每名雇員平均再遍歷技能對象 10次。如果全公司僅有 5名雇員精通日語,則查詢命中率僅有 1/4000。 2022/8/21 135 例子:使用哈希 (Hash)表提高效率 ? 提高訪問效率的一種方法是使用哈希 (Hash)表:“ 具有技能 ” 這個(gè)關(guān)聯(lián)不再利用無序表實(shí)現(xiàn),而是改用哈希表實(shí)現(xiàn)。 ? 只要 “ 會講日語 ” 是用惟一一個(gè)技能對象表示,這樣改進(jìn)后就會使查詢次數(shù)由 20220次減少到 2022次。 2022/8/21 136 例子:為對象建立索引以提高查詢效率 ? 當(dāng)僅有極少數(shù)對象滿足查詢條件時(shí), 使用哈希 (Hash)表 查詢的命中率仍然很低。在這種情況下,更有效的提高查詢效率的改進(jìn)方法是, 給那些需要經(jīng)常查詢的對象建立索引 。 ? 例如,針對上述例子,可以增加一個(gè)額外的限定關(guān)聯(lián) “ 精通語言 ” ,用來聯(lián)系公司與雇員這兩類對象,如圖所示。 ? 利用適當(dāng)?shù)娜哂嚓P(guān)聯(lián),可以立即查到精通某種具體語言的雇員,而無須多余的訪問。 ? 索引必然帶來開銷:占用內(nèi)存空間,而且每當(dāng)修改基關(guān)聯(lián)時(shí)也必須相應(yīng)地修改索引。因此,通常只給那些經(jīng)常執(zhí)行并且開銷大、命中率低的查詢建立索引。 2022/8/21 137 提高效率的幾項(xiàng)技術(shù) ? 提高效率有 3項(xiàng)技術(shù): ? 增加冗余關(guān)聯(lián)以提高訪問效率 ? 調(diào)整查詢次序 ? 保留派生屬性 2022/8/21 138 調(diào)整查詢次序 ? 優(yōu)化算法的一個(gè)途徑是盡量縮小查找范圍。 ? 例如,假設(shè)用戶在使用上述的雇員技能數(shù)據(jù)庫的過程中,希望找出既會講日語又會講法語的所有雇員。如果某公司只有 5位雇員會講日語,會講法語的雇員卻有 200人,則應(yīng)該先查找會講日語的雇員,然后再從這些會講日語的雇員中查找同時(shí)又會講法語的人。 2022/8/21 139 提高效率的幾項(xiàng)技術(shù) ? 提高效率有 3項(xiàng)技術(shù): ? 增加冗余關(guān)聯(lián)以提高訪問效率 ? 調(diào)整查詢次序 ? 保留派生屬性 2022/8/21 140 保留派生屬性 ? 通過某種運(yùn)算而從其他數(shù)據(jù)派生出來的數(shù)據(jù),是一種冗余數(shù)據(jù)。通常把這類數(shù)據(jù) “ 存儲 ” (或稱為 “ 隱藏 ” )在計(jì)算它的表達(dá)式中。如果希望避免重復(fù)計(jì)算復(fù)雜表達(dá)式所帶來的開銷,可以把這類冗余數(shù)據(jù)作為派生屬性保存起來。 ? 派生屬性既可以在原有類中定義,也可以定義新類,并用新類的對象保存它們。每當(dāng)修改了基本對象之后,所有依賴于它的、保存派生屬性的對象也必須相應(yīng)地修改。 2022/8/21 141 “ 設(shè)計(jì)優(yōu)化 ” 主要內(nèi)容 ?確定優(yōu)先級 ?提高效率的幾項(xiàng)技術(shù) ?調(diào)整繼承關(guān)系 2022/8/21 142 繼承關(guān)系與類繼承 ? 在面向?qū)ο笤O(shè)計(jì)過程中,建立良好的繼承關(guān)系是優(yōu)化設(shè)計(jì)的一項(xiàng)重要內(nèi)容。 ? 繼承關(guān)系 能夠?yàn)橐粋€(gè)類族定義一個(gè)協(xié)議,并能在類之間實(shí)現(xiàn)代碼共享以減少冗余。 ? 一個(gè)基類和它的子孫類在一起稱為一個(gè) 類繼承 。 ? 利用類繼承能夠把若干個(gè)類組織成一個(gè)邏輯結(jié)構(gòu)。 2022/8/21 143 與建立類繼承有關(guān)的問題 ? 抽象與具體 ? 為提高繼承程度而修改類定義 ? 利用委托實(shí)現(xiàn)行為共享 2022/8/21 144 抽象與具體 ? 在設(shè)計(jì)類繼承時(shí),很少使用純粹自頂向下的方法。 ? 通常的作法是,首先創(chuàng)建一些滿足具體用途的類,然后對它們進(jìn)行歸納,一旦歸納出一些通用的類以后,往往可以根據(jù)需要再派生出具體類。在進(jìn)行了一些具體化 (即專門化 )的工作之后,也許就應(yīng)該再次歸納了。對于某些類繼承來說,這是一個(gè)持續(xù)不斷的演化過程。 2022/8/21 145 抽象與具體的例子 ? 如圖用一個(gè)人們在日常生活中熟悉的例子,說明從具體到抽象,再到具體的過程: 2022/8/21 146 與建立類繼承有關(guān)的問題 ? 抽象與具體 ? 為提高繼承程度而修改類定義 ? 利用委托實(shí)現(xiàn)行為共享 2022/8/21 147 從一組相似類中歸納出 “ 一般類 ” ? 如果在一組相似的類中存在公共的屬性和公共的行為,則可以把這些公共的屬性和行為抽取出來放在一個(gè)共同的祖先類中,供其子類繼承,如圖所示: 2022/8/21 148 歸納現(xiàn)有類時(shí)注意的問題 ? 在對現(xiàn)有類進(jìn)行歸納的時(shí)候,要注意下述兩點(diǎn): ? 不能違背領(lǐng)域知識和常識; ? 應(yīng)該確?,F(xiàn)有類的協(xié)議 (即同外部世界的接口 )不變。 ? 更常見的情況是,各個(gè)現(xiàn)有類中的屬性和行為 (操作 ),雖然相似卻并不完全相同,在這種情況下需要對類的定義稍加修改,才能定義一個(gè)基類供其子類從中繼承需要的屬性或行為。 ? 有時(shí)抽象出一個(gè)基類之后,在系統(tǒng)中暫時(shí)只有一個(gè)子類能從它繼承屬性和行為,顯然,在當(dāng)前情況下抽象出這個(gè)基類并沒有獲得共享的好處。但是,這樣做通常仍然是值得的,因?yàn)閷砜赡苤赜眠@個(gè)基類。 2022/8/21 149 與建立類繼承有關(guān)的問題 ? 抽象與具體 ? 為提高繼承程度而修改類定義 ? 利用委托實(shí)現(xiàn)行為共享 2022/8/21 150 利用繼承實(shí)現(xiàn)操作共享的問題 ? 僅當(dāng)存在真實(shí)的一般 特殊關(guān)系 (即子類確實(shí)是父類的一種特殊形式 )時(shí),利用繼承機(jī)制實(shí)現(xiàn)行為共享才是合理的。 ? 有時(shí)程序員只想用繼承作為實(shí)現(xiàn)操作共享的一種手段,并不打算確保基類和派生類具有相同的行為。 ? 在這種情況下,如果從基類繼承的操作中包含了子類不應(yīng)有的行為,則可能引起麻煩。 ? 例如,假設(shè)程序員正在實(shí)現(xiàn)一個(gè) Stack(后進(jìn)先出棧 )類,類庫中已經(jīng)有一個(gè) List(表 )類。如果程序員從 List類派生出 Stack類,則如圖 (a)所示: ? 把一個(gè)元素壓入棧,等價(jià)于在表尾加入一個(gè)元素; ? 把一個(gè)元素彈出棧,相當(dāng)于從表尾移走一個(gè)元素。 ? 但是,與此同時(shí),也繼承了一些不需要的表操作。例如,從表頭移走一個(gè)元素或在表頭增加一個(gè)元素。萬一用戶錯誤地使用了這類操作, Stack類將不能正常工作。 2022/8/21 151 利用委托實(shí)現(xiàn)行為共享 ? 如果只想把繼承作為實(shí)現(xiàn)操作共享的一種手段,則利用 委托 (即把一類對象作為另一類對象的屬性,從而在兩類對象間建立組合關(guān)系 )也可以達(dá)到同樣目的,而且這種方法更安全。 ? 使用委托機(jī)制時(shí),只有有意義的操作才委托另一類對象實(shí)現(xiàn),因此,不會發(fā)生不慎繼承了無意義(甚至有害 )操作的問題。 ? 圖 (b)描繪了委托 List類實(shí)現(xiàn) Stack類操作的方法。Stack類的每個(gè)實(shí)例都包含一個(gè)私有的 List類實(shí)例 (或指向 List類實(shí)例的指針 )。 Stack對象的操作 push(壓棧 ),委托 List類對象通過調(diào)用 last(定位到表尾 )和 add(加入一個(gè)元素 )操作實(shí)現(xiàn),而pop(出棧 )操作則通過 List的 last和 remove(移走一個(gè)元素 )操作實(shí)現(xiàn)。 2022/8/21 152 小結(jié) 1 ?面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^點(diǎn)建立求解空間模型的過程。 ?優(yōu)秀設(shè)計(jì)是使得目標(biāo)系統(tǒng)在其整個(gè)生命周期中總開銷最小的設(shè)計(jì),為獲得優(yōu)秀的設(shè)計(jì)結(jié)果,應(yīng)該遵循一些基本準(zhǔn)則。 ?重用是提高軟件生產(chǎn)率和目標(biāo)系統(tǒng)質(zhì)量的重要途徑,它基本上始于設(shè)計(jì)。 2022/8/21 153 小結(jié) 2 ?用面向?qū)ο蠓椒ㄔO(shè)計(jì)軟件,原則上也是先進(jìn)行總體設(shè)計(jì)(即系統(tǒng)設(shè)計(jì)),然后再進(jìn)行詳細(xì)設(shè)計(jì)(對象設(shè)計(jì)),當(dāng)然,它們之間的界線非常模糊,事實(shí)上是一個(gè)多次反復(fù)迭代的過程。 ?大多數(shù)求解空間模型,在邏輯上由 4大部分組成:問題域子系統(tǒng)、人機(jī)交互子系統(tǒng)、任務(wù)管理子系統(tǒng)、數(shù)據(jù)管理子系統(tǒng)。 ?通過應(yīng)該在設(shè)計(jì)工作開始之前,對系統(tǒng)的各項(xiàng)質(zhì)量指標(biāo)的相對重要性做認(rèn)真分析和仔細(xì)權(quán)衡,制定出恰當(dāng)?shù)南到y(tǒng)目標(biāo)。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1