轉(zhuǎn)重粒子空間:什么是OO思維
發(fā)表時(shí)間:2024-06-18 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]從ASP或者VB轉(zhuǎn)來(lái)的程序員,肯定以前對(duì)于OO思維不太熟悉,開(kāi)心特從重粒子空間轉(zhuǎn)來(lái)此文,希望對(duì)大家有所幫助。 采用OO軟體開(kāi)發(fā)方法的過(guò)程中﹐許多人自然而然偏重于技術(shù)層面﹐例如﹐使用OO分解(object-oriented decomposition) 來(lái)進(jìn)行模組化﹐運(yùn)用繼承功能來(lái)建立類(lèi)別體系(cl...
從ASP或者VB轉(zhuǎn)來(lái)的程序員,肯定以前對(duì)于OO思維不太熟悉,開(kāi)心特從重粒子空間轉(zhuǎn)來(lái)此文,希望對(duì)大家有所幫助。
采用OO軟體開(kāi)發(fā)方法的過(guò)程中﹐許多人自然而然偏重于技術(shù)層面﹐例如﹐使用OO分解(object-oriented decomposition) 來(lái)進(jìn)行模組化﹐運(yùn)用繼承功能來(lái)建立類(lèi)別體系(class hierarchy) 等等。不過(guò)﹐偏好于技術(shù)者﹐往往會(huì)忽略這些技術(shù)背后的心理因素﹔也就是OO思維模式(object-oriented thinking)﹐這是許多人采用OO方法過(guò)程中﹐不斷產(chǎn)生挫折感的重要因素。
OO思維是軟體師的心智(mental)運(yùn)作過(guò)程﹐包括對(duì)問(wèn)題(problem)的看法,以及如何藉由對(duì)問(wèn)題的了解而導(dǎo)出解決方案(solution)﹐然后以可執(zhí)行的軟體系統(tǒng)(working system)來(lái)表達(dá)之。雖然每個(gè)人的思維模式并不盡相同﹐但下述各項(xiàng)是OO軟體師的常見(jiàn)思維模式﹕
(1) 實(shí)體對(duì)應(yīng)(entity mapping)
首先專(zhuān)注于了解問(wèn)題領(lǐng)域(problem domain)中的各實(shí)體(entity)﹐并認(rèn)識(shí)各實(shí)體的結(jié)構(gòu)本質(zhì)﹐然后對(duì)應(yīng)到軟體中的物件(object)。例如﹐圖書(shū)館的購(gòu)書(shū)清單、書(shū)本等等。此外還可延伸到其它實(shí)體,如出版商、學(xué)生課程等。OO軟體師常用心體會(huì)這些實(shí)體的結(jié)構(gòu)﹐以及有關(guān)的資訊﹐然后藉軟體物件表達(dá)之﹐成為軟體中的重要組件(key component) 。
這一點(diǎn)與傳統(tǒng)的程序式(procedural)思維有極大區(qū)別。傳統(tǒng)思維著重于軟體系統(tǒng)的功能(function)上﹐努力思考系統(tǒng)應(yīng)提供那些功能﹐以及使用者使用這些功能的順序。并不常深入去了解各實(shí)體的結(jié)構(gòu)。例如﹐會(huì)優(yōu)先思考如何處理「購(gòu)書(shū)」功能﹐而少去探究購(gòu)書(shū)單的結(jié)構(gòu)及相關(guān)資訊。
(2) 抽象(abstraction)
問(wèn)題領(lǐng)域中的具體實(shí)體(concrete entity) 常激勵(lì)軟體師去發(fā)掘更具通用性的抽象物件(abstract object) 。例如﹐從購(gòu)書(shū)清單可推導(dǎo)出該圖書(shū)館主題(focus subject) ﹐以及學(xué)生的閱讀偏好等等。
無(wú)論是具體實(shí)體或抽象物件﹐在對(duì)應(yīng)到軟體物件時(shí)﹐皆得再運(yùn)用抽象能力﹐將實(shí)體的結(jié)構(gòu)(structure) 隱藏起來(lái)﹐同時(shí)定義出抽象的介面(abstract interface)﹐讓其它物件了解如何使用其引藏之結(jié)構(gòu)與資料。亦即﹐抽象介面說(shuō)明該物件的服務(wù)項(xiàng)目﹐或稱(chēng)為行為(behavior)。
于是軟體師就能確實(shí)了解各實(shí)體的內(nèi)部結(jié)構(gòu)及其行為﹐然后藉由OO語(yǔ)言中的抽象資料型態(tài)(abstract data type)﹐來(lái)表達(dá)之﹔此時(shí)﹐就順利將實(shí)體完整地對(duì)應(yīng)到軟體物件之中了。
(3) 擬人化(anthropomophizing)
物件具有行為﹐使得物件能為其它物件提供服務(wù)﹐也能在團(tuán)隊(duì)或組織(organization)中扮演特定之角色(role)。經(jīng)由擬人化的思維﹐可把實(shí)體或物件看成像人們一樣有智慧、善溝通、可互助合作的東西。如此﹐可賦予軟體物件更多更多的角色(即行為)﹐并呈現(xiàn)于物件的抽象介面之中。例如﹐購(gòu)書(shū)清單內(nèi)含一串待購(gòu)之書(shū)本項(xiàng)目(book item) ﹔在賦予人性、視其為有智慧之實(shí)體后﹐您就可問(wèn)清單﹕購(gòu)書(shū)總金額多少﹖清單會(huì)再問(wèn)各書(shū)本項(xiàng)目﹕單價(jià)為何﹖購(gòu)書(shū)清單累計(jì)而得總金額﹐再傳回答案給您。
軟體師經(jīng)由擬人化思維來(lái)厘清軟體物件之合作關(guān)系﹐安排物件之角色﹐定義物件之介面與行為。
OO思維有助于厘清問(wèn)題(problem) 與軟體解決方案(solution)之間的對(duì)應(yīng)關(guān)系﹐讓問(wèn)題領(lǐng)域?qū)<?domain expert) ──使用者(end user)能藉其對(duì)問(wèn)題的了解而輕易理解軟體的組織與使用方式﹐也讓使用者熱衷參與軟體的開(kāi)發(fā)工作。
參考書(shū)籍
1. Rosson M.B. and Gold E., "Problem-Solution Mapping in Object-Oriented Design", OOPSLA '89 Proceedings, PP.7-10.