查看本系列全部文章:
《OOA&D實踐之路——真實案例解析OO理論與實踐》索引貼
為什么要寫這個系列
“OO都是一個已經被討論爛的話題了,還有什么可寫的!”
不知當你看到文章標題時,是不是有這種疑問,或者鄙夷。不錯,OO從誕生到現(xiàn)在經歷了不短的歲月,與其相關的理論、技術、原則、實踐、模式、語言已經出了一大堆??墒?,你真的了解OO的本質嗎?真的能揮灑自如的將OO應用于軟件開發(fā)中嗎?真的能發(fā)揮OO的能量,從而提高軟件質量嗎?如果對這三個問題,你不能很干脆的點頭說:“是的,當然!”那么也許你可以抽一點時間,往下看一看。
這個系列文章不打算大篇幅重述各種OO理論,也不打算談各種OO心法。這系列文章著重于通過實踐澄清一些對OO的誤會,幫助朋友們更好的使用正確的方法將OO應用于實際開發(fā)中。同時,在必要的地方簡要敘述一下OO相關知識。
所以,這個系列不是關于OO理論的天書或OO參考大全,而是告訴你“你對OO可能存在哪些誤會與認識上的偏差”以及“如何走出誤會更好的OO應用于實踐”。
OO是技術,不是理論
OO,我認為全稱應該叫做“面向對象技術”。其實,OO自誕生那天起其全部目的就是應用于軟件開發(fā)實踐中,提高軟件開發(fā)質量。這也是OO存在的全部意義。所以,搞OO和搞數(shù)論、搞理論物理不一樣,不能脫離應用。搞OO的人應該算是工程師,而不是科學家。兩者最大的區(qū)別是:科學家可以不考慮自己研究的成果有沒有什么應用價值。而工程師不一樣,他們要更“勢利”,要時刻關心自己研究出的東西有什么應用價值。所以一切OO的研究要以可應用性為向導,不能天馬行空夸夸其談。
當然,OO需要理論支撐,但是一定要是有現(xiàn)實意義的理論,而不能像數(shù)學家那樣為了理論而研究理論,更不能將已有理論當做教條機械性使用。
因此,在學習和實踐OO的過程中,要時刻注意和應用性聯(lián)系起來,才能避免走入理論OO和教條OO的歧途。
到底什么是OO
“什么是OO?”對于這個問題,很難一言以蔽之。但正是由于對這個概念的誤解和偏差,才使得某些朋友一直不能正確使用OO,不能讓OO真正服務于軟件開發(fā),到最后開始懷疑OO、鄙視OO甚至唾棄OO。
在所有對OO的偏差性認識中,最普遍的一點就是“金錘”式理論,即“XX就是OO。”例如,“把所有東西看成對象就是OO”,“遵循封裝、繼承、多態(tài)就是OO”,“應用良好的OO原則進行設計就是OO”,“使用UML就是OO”。顯然,這種“一錘子敲定”的方式會讓人割裂的看問題,從而無法從全局角度正確把握OO。
在這里,我斗膽給OO下一個定義:OO,即面向對象技術,是一種旨在提高軟件質量的綜合性技術,其貫穿于軟件系統(tǒng)的調研、分析、設計、開發(fā)、測試、維護、擴展、升級等整個生命周期,它包含一系列概念、思想、理論、目標、原則、實踐、模式、工具、語言等要素,這些要素既相互區(qū)別又相互聯(lián)系,同時從宏觀和微觀兩個角度共同協(xié)作,指導和引導開發(fā)人員開發(fā)出高質量軟件,并指導與開發(fā)有關的一切過程。
從上面可以看出,OO并不是孤立的概念或技術,而是一系列要素的復合體,并貫穿于整個軟件開發(fā)周期。所以,僅僅從某個時間或控件切面切入而應用OO,這樣的OO是不完整的,也不可能發(fā)揮出其應有的作用。打個比方:如果使用OO的方法和工具進行分析、設計,但是編碼過程不能做到OO,就好比制造了一輛豪華的轎車卻找頭驢拉著走,是不能提高你出行效率的。反過來,如果你是一個C#或Java高手,但分析設計過程不遵循OO,直到編碼時才用C#或Java試圖OO,這無異于你聽說開車能提高出行速度,于是你苦學駕駛技術,并掌握了高超的駕駛本領,但最終卻坐在一頭驢子上,于是你開始大喊:駕駛技術是騙人的!根本沒法用!是啊,驢子上連方向盤、離合器都沒有,空有一身駕駛本領又如何發(fā)揮出來呢。
這個系列的文章概要和內容組織
這系列文章的大體寫作方式,是通過一個實際案例《XX食品公司連鎖店在線定料系統(tǒng)》的調研、分析、設計、開發(fā)等一系列過程,幫助大家更好的認清OO如何實踐,同時澄清一些誤會。這個系統(tǒng)是我曾經參與過的實際案例,為了文章需要,將進行一定程度的修改,但一些很關鍵的東西都會原汁原味保留下來。在整個過程中,請各位不拘泥于具體技術相關問題,而要一直保持一個較高的視端,一睹OO的全貌。
文章的大概組織方式:
第一部分:需求分析之前的故事
很多人認為就軟件開發(fā)來說,第一步是需求分析,其實非也。如果想更好實踐OO,需求分析之前還有很多工作,如特性調研、降低風險等環(huán)節(jié),這一部分我們講講需求分析之前的故事。
第二部分:分析步步高
這一部分開始對系統(tǒng)進行真正的分析,讓我們來看看OO是如何引導和指導我們分析的。
第三部分:設計的方方面面
設計是一個繁雜的過程,諸多OO原則與模式都會應用于其中,這一部分不會細講各種原則及模式,而是看看正確應用原則與模式的方式是怎么樣的。
第四部分:讓所有努力開花結果
這一部分,我們將前面的成果付諸實踐。通過這一部分,可以清楚的看到前面做的一切工作都不是飄在云里的空中樓閣,而是開發(fā)高質量軟件不可缺少的部分。
以上是目前的規(guī)劃,當然,在整個過程中可能會出現(xiàn)變化,但是大體條理不會打亂。希望本系列文章能給您帶來幫助。