我對oo的看法(對最近關於oo的認識)

來源:互聯網
上載者:User

看過該文大家的回複,感覺這裡的討論的氣氛不錯,彼此寬容,相互探討才可以有進步。
發表一下自己的看法:
1、oo必然有其價值:要理解這個價值我個人認為(請各位tx指正),要從oo的來源理解。

一、oo從何而來一?
oo就是為瞭解決過程開發方法帶來的軟體危機。
因為既然程式是為瞭解決實際問題在電腦通過建立數學模型來解決實際問題,那麼當人類使用電腦思考方式(例如:過程化方式)這種不是人類自然思考方式進行求解的時候自然會遇到一些問題。尤其是比較複雜的事物。那麼此時大牛們會怎樣去解決這個問題?換作是各位如何去解決這個問題?
自然而然的大家會想到這樣一個道理:既然是建模解決問題為什麼不建立一人類能夠理解的更接近現實的模型?而物件導向這個概念提出的模型恰恰比較接近現實世界能夠適應人類的思考方式。這樣我們只需要將建立好的物件模型轉換為代碼就好了。於是大牛們提出了oo的概念,於是社會各界人士風湧而上,oo火了。
上邊就是我認為oo引入的原因,請各位tx指正探討。
2、oo的優勢?
要想理解oo的優勢我覺得因該這樣去做。
首先從具體的資料模型跳出來,站在比較高的系統架構的層次看。在具體的模型中oo實現體現了建模方面的優勢,讓我們能夠使用人類習慣的思維方式去將問題架構搞清。比如說得到通過user case得到類圖。
然後再深入到一個具體的模型,比如說“亞曆山大同志”舉出的具體的聊天室的例子。給出從分析-〉建模-〉實現-〉複用的例子來,包括代碼的具體實現。我敢說大部分oldtx(包括我)對於對象的代碼實現並不是很清楚,我們更喜歡用代碼來說話。所以方便的話,請亞曆山大給出代碼,架構部分就行。
 
二、oo從何而來二?
解決軟體危機的另一個思路:軟體開發維護的另一個問題在於大家都在閉門造車(碼代碼),從而造成大量的浪費和維護的困難。那麼軟體複用的思想就提了出來。
請問軟體複用的關鍵在於那裡?
一個製作好的軟體(模組,函數怎麼叫都可以。)能不能複用關鍵點在那?我認為關鍵在於能否應付變化。即所謂的擁抱變化。
而應付變化使用過程化的方法是?低耦合,通過建立比較規範簡單的調用介面來提高複用性。
使用oo呢?從概念上講oo由於提出了繼承、重載、封裝等概念在複用上確實有過程化方法的難以企及的優勢。
我正在埋頭苦學,要是有人能夠補充出簡單適用的代碼執行個體就好了。

那麼由oo由來可以看出確實是高於過程的新一代開發方法?分析建模工具?那麼:

三、oo是過程的替代嗎?
我覺得oo是一種高層次的分析方法和產生工具(oo的對象自動產生程式架構真是太方便了),並且由於引入的oo的概念編寫測試案例也變得自然了許多。總之oo帶來的新東西和好處真是太多了。
那麼是不是面向過程的方式就落後了?就該被淘汰了?掌握和使用面向過程的oldtx就該被淘汰被看不起了?
也不盡然:在簡單的領域,面向過程有其獨到的精鍊和魅力,而且我認為具體oo建模了之後具體的代碼實現還是要去碼代碼的。
最關鍵的在與:什麼是偉大的軟體?評價一個軟體好不好的最重要的唯一標準在於:是否讓客戶戶滿意!!!
然後是否維護方便。,最後才是架構是否進階是否易於複用等問題。
所以oo是客戶、架構師、程式員交流建模的工具而已,建議大家掌握尤其是初學者。老手也應該抽出時間去看看.不是帶著眼鏡去看問題,而是思考oo的由來,優點和如何利用。這一點“金色海洋”就是一個好的例子,迷茫但不彷徨,我相信這樣的tx在探索的過程中成長,最終一定會有大成。
而那些oo的擁護者也不必不oo就是發現了什麼大逆不道一樣,誰有誰的世界。你真願意推廣oo,大可以象“亞曆山大同志”那樣以理服人,大可不必動輒提出“如果你只是做做網站,如果你基本是一個人搞定一個網站,如果你沒有試過多人團隊開發的大型項目,那你就朝著你堅信的道路堅定的走下去吧。” 這樣的話真是很傷人也沒有什麼營養.

其實:搞it的碰到不懂的人真的是很好的機會,你要教懂他(她)才能顯示你的水平,更重要是人品。

補充:
1、過程化思考方式個人認為有其獨到之處,甚至學習和掌握也不是一朝一夕的事情,所以一旦掌握以後在開發的過程中會由於人類自動化的原理,自然而然的去使用他。這也不是什麼丟人的事.但是掌握oo的概念並且能夠去應用是一個很好也很必要的技能,各位tx努力吧。
2、關於oo入門的推薦.最近看一本書:前一陣有個tx寫博克翻譯了2章,可能是因為比較忙沒了下文。叫做“Head First OOAD.pdf”網上有電子版,我打出來一邊看一邊標記,看了2章了感覺還不錯,推薦給各位想瞭解oo的tx看看,還可以順便複習英語。
李建忠老師有一套講設計模式的webcast,在講述的過程中著重介紹了設計模式與oo一些關係其中在oo的概念和起源以及應用上下了功夫,我看了5講了,感覺也不錯,推薦給大家.(看webcast比較費時間,一講大約一個半小時,一共好像是24講)
目前網上我還沒有發現誰的博克有很好的oo入門教程,有的話,推薦給我們學習。
沒有的話,我建議就看我推薦的,要不就去msdn比起在網上瞎翻一氣浪費時間強,多做少說因該是優點吧?
祝各位tx進步!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.