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

正文內(nèi)容

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

2025-08-04 08:01本頁(yè)面
  

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