07 2008 檔案
摘要:
適應(yīng)變化的能力是衡量軟件質(zhì)量的重要標(biāo)準(zhǔn)
第七課剛一開堂,冒號(hào)就提了一個(gè)問(wèn)題:“如果把一個(gè)Java程序中所有的private關(guān)鍵字換成public,請(qǐng)問(wèn)該程序還能工作嗎?”。。。
軟件的難點(diǎn)有二:其一是邏輯的復(fù)雜,其二是需求的變化。許多程序員看重前者而看輕后者,大部分時(shí)間花在尋求解決方案上,而不是在選擇解決方案上。。。
軟件之軟,體現(xiàn)在適應(yīng)變化的能力。。。
軟件的變化大致分兩種:一種是出于內(nèi)在需求而作的結(jié)構(gòu)性變化,通常以改善軟件質(zhì)量為目的,即所謂的重構(gòu)(refactoring);一種是出于外在需求而作的功能性變化,通常以滿足客戶需要為目的。。。
信息隱藏雖能將抽象接口與具體實(shí)現(xiàn)分離,但仍然封裝在同一類中。橋梁模式則讓二者徹底解耦(decouple),增強(qiáng)了對(duì)變化的適應(yīng)力,具有更大的靈活性和可擴(kuò)展性。。。
閱讀全文
摘要:
OOP中的封裝與信息隱藏
“用廣東話說(shuō),真是有型有料又有性格??!”嘆號(hào)嘖嘖連聲,“這哪里是在設(shè)計(jì)軟件,分明是在設(shè)計(jì)心儀的對(duì)象嘛。”。。。
廣義的封裝僅僅只是一種打包,即package或bundle,是密封的但可以是透明的。。。
狹義的封裝是在打包的基礎(chǔ)上加上訪問(wèn)控制(access control),以實(shí)現(xiàn)信息隱藏。。。
抽象意味著用戶可以從高層的接口來(lái)看待或使用一類對(duì)象,而不用關(guān)心它底層的實(shí)現(xiàn),而黑盒封裝意味著用戶無(wú)權(quán)訪問(wèn)底層的實(shí)現(xiàn)。。。
訪問(wèn)控制不僅是一種語(yǔ)法限制,也是一種語(yǔ)義規(guī)范。。。
“通,則大處圓融合一而小處各具其妙;不通,則大處千變?nèi)f化而小處無(wú)所分別?!泵疤?hào)又打起了禪語(yǔ) ,“領(lǐng)會(huì)OOP的精髓絕非一年半載之功,但若以抽象與封裝為鑰,必可早日開啟通達(dá)之門。。?!?nbsp;
閱讀全文
摘要:
介紹抽象數(shù)據(jù)類型
問(wèn)號(hào)搶著說(shuō):“我知道了:過(guò)程抽象的結(jié)果是函數(shù),數(shù)據(jù)抽象的結(jié)果應(yīng)該是數(shù)據(jù)類型。”。。。
數(shù)據(jù)結(jié)構(gòu)強(qiáng)調(diào)具體實(shí)現(xiàn),側(cè)重應(yīng)用;抽象數(shù)據(jù)類型強(qiáng)調(diào)抽象接口,側(cè)重設(shè)計(jì)。。。
接口是綱,實(shí)現(xiàn)是目。綱若不舉,目無(wú)以張。。。
人們多采取‘整體設(shè)計(jì)以數(shù)據(jù)為中心,局部實(shí)現(xiàn)以算法為中心’的方針,以增強(qiáng)系統(tǒng)的可維護(hù)性。。。
數(shù)據(jù)類型的接口與實(shí)現(xiàn)的分離,有利于開發(fā)時(shí)間的分離以及開發(fā)人員的分離。。。
抽象——接口與實(shí)現(xiàn)相分離;數(shù)據(jù)——以數(shù)據(jù)為中心組織邏輯;類型——單純而定義良好的概念。。。
抽象——尤其是數(shù)據(jù)抽象——才是OOP的核心和起源,盡管它們并非OOP的專利。。。
只有貫徹ADT思想,設(shè)計(jì)出來(lái)的類才會(huì)是‘萬(wàn)人迷’:有優(yōu)雅的外形——抽象,有豐富的內(nèi)涵——數(shù)據(jù),有鮮明的個(gè)性——類型。。。
閱讀全文
摘要:
軟件設(shè)計(jì)中的抽象思維
冒號(hào)健步走進(jìn)教室,學(xué)員們立刻正襟危坐,進(jìn)入戰(zhàn)備狀態(tài)。。。
語(yǔ)言是形,范式是神,這次我們將二者融合,爭(zhēng)取做到形神兼?zhèn)?。?!?
我們的重心不在知識(shí)的枝節(jié),而在知識(shí)的本源。因此無(wú)論討論Java還是OOP,我們不追求系統(tǒng)和全面,但力求從不同的選點(diǎn)、角度和深度來(lái)展示知識(shí)的活性。。。
那么什么是抽象呢?不妨概括為:去粗取精以化繁為簡(jiǎn);由表及里以異中求同。再精煉些,抽象就是作減法和除法。。。
軟件設(shè)計(jì)者的任務(wù)是將復(fù)雜混沌的現(xiàn)實(shí)世界映射到精確嚴(yán)格的虛擬世界,要完成這種多對(duì)一的映射,抽象無(wú)疑是必由之路。。。
這種通過(guò)規(guī)范使代碼的功能與實(shí)現(xiàn)相分離的方法稱為規(guī)范抽象。。。
閱讀全文
摘要: 本文系《冒號(hào)課堂》(又名《冒號(hào)和他的學(xué)生們》)系列的目錄提綱,隨著寫作的深入將逐步完善。歡迎大家多提意見!
閱讀全文