少走彎路去學習面向對象編程

來源: Veda原型  發布時間: 2012-05-22 19:51  閱讀: 11670 次  推薦: 13   原文鏈接   [收藏]  

  在學習面向對象的過程中,我自己也走了很多的彎路。一般來講,接觸面向對象是做為編程語言的一部分。那時候認為在程序中寫一個 Class 關鍵字就是面向對象,寫 Class A: Class B 就是面向對象的繼承。實際從編程語言的角度來理解是無法掌握面向對象的精髓的,在這里我想以我的經驗來告訴大家我的一些方法。

  面向對象是一種思想理論,要遠遠高于編程語言。不深入理解面向對象理論就無法做到編寫比較高級的軟件,而且往往這些軟件不能有效應對變化,不能復用,不能擴展,不能維護等。使用抽象方法還能應對軟件的復雜度,因為抽象是對事物的簡化方法。

  首先在學習面向對象前明白你的目的然后講方法(這個很重要,如果目的不明,任何事情都做不好,而且肯定方法不對)。那么首先想想面向對象的目的是什么?

  先搞清抽象是什么

  如果搞不清抽象是什么,其他的特性等于白說。

  抽象是具體到一般的過程。雖然抽象是一個簡單的概念或者說過程,但是要領悟其中的涵義不能單從編程語言上來,應該是一種邏輯思維的角度來思考抽象是什么。

  你可以對自然世界的進行抽象演習,同時也是抽象最主要的學習方式。要知道面向對象理論是人們從對現實世界的一個客觀反映,是在參照現實世界,比如你是對你的某某人抽象為人,他的行為怎么抽象。

  接下來思考實現抽象有什么方法

  比如分類法就是抽象的基本方法。然后聯系對行為抽象,因為分類法是主要是針對靜態的東西進行抽象(淡然不排除動態),而行為是對象與對象交互方式,所以對行為抽象也具有重要的意義。

  然后要思考軟件的本質(數據和邏輯)以及軟件的變化特性,以及如何重用(你看設計模式的時候,要注意這書的副標題)。

  抽象可以應對變化,如何應對變化你自己想清楚。抽象是什么,以及如何應對變化,如果搞不清楚的話,面向對象只會停留在語言層面。語言層面的東西是淺顯的,真正要掌握的是思想,就像我們人類一樣。

  思考面向對象的繼承、封裝以及多態

  這三個詞如果從編程語言的角度來講,沒有多大的意義。要軟件根本上來講,如何重用啊,外部如何看待內部以及在運行時如何處理抽象與實現的關系。

  軟件實現為了達到應對變化,提高復用。

  繼承的本質是提高重用,但是繼承不是重用的唯一方法,還有組合這個非常重要的方法。

  繼承從語言層面來講可以簡單理解為 class A : class B,組合才是提高重用的關鍵,現在很多的商業上不都是要整合啊,實際就是組合的一種顯示表述,自己不實際去做,但是掌握著關鍵的東西(核心競爭力)。那具體的上來講,我們的軟件外包不就是組合的一種現實表述嗎,發達國家設計軟件,而把軟件的具體編碼交給別的國家。

  封裝是一種機制,就是對象的外部看到是的對象是一個統一的整體,從語言層面上講就是那些關鍵字啊。真正要掌握的是如何封裝,如何確定哪些東西要封裝,多態可以簡單理解為一個抽象有很多具體實現。 那么在運行期間就需要動態決定采用哪種具體實現。

  最后要真正把握軟件的變化,復雜度以及如何重用才是根本,面向對象對軟件來講只是一種方法手段。

13
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()