C++ Follow Me(1): 你面向對象了嗎?

C++ Follow Me(1): 你面向對象了嗎?

黃國強 2006-7-12

    傳統的C的編程方式是以函數爲中心的編程方式,換句話,整個程序就是函數的集合。有人要問,這有什麼問題嗎?當然沒有問題。在面向對象技術出現之前,用過程式的設計方法依然構建出很多出色的系統,甚至有的現在還在運行。
    那麼我們爲什麼還需要向面向對象的方法轉變呢?一個很現實的問題就是經濟方面的問題。用面向對象的方法構建的系統不但易於開發,而且後期維護方面都存在着巨大的優勢。
    本來,感覺寫這樣的題目似乎有點落伍,難道現在還有人用非面向對象的方法編程?現實情況是,確實如此,而且人還有很多(包括一些用面向對象的工具寫着過程式代碼的程序員)。所以在這裏從幾個角度花點時間羅嗦一下看來還是必要的。
1)高內聚、低耦合
   “高內聚、低耦合”意思是一個模塊的功能是高度內聚的(即:功能越單一越好),而模塊與模塊之間耦合度越低越好。顯然,類似C的這樣過程式的語言要實現這點非常困難,有的時候必須通過企業的規範和紀律來保證,顯然這是很不可靠的。而在面向對象的語言中,良好的設計加上面向對象語言的威力,高內聚、低耦合還是比較容易得到保證的。
2) 編程的易用性
    比如,我們調用一個函數,如果它有很多參數,調用的時候就必須搞清楚每個參數的具體含義。顯然這個函數很不友好,這個在C在中非常常見。而在C++中,由於許多參數已經變成了類的數據成員,所以調用起來非常輕鬆。
3) 抽象性
    軟件的內部編程抽象度的高低,直接決定整個軟件產品的質量。如果對抽象度沒有體會,我們可以做一些比方。你是願意用匯編寫程序還是願意用C這樣的語言寫程序呢?顯然C相比彙編更接近我們的思維方式。所以絕大多數人都願意選擇C或者更高級的語言來寫程序。因爲這些高級語言已經把計算機內部的CPU、內存和磁盤等抽象或隱藏掉了,這樣我們就可以比較輕鬆的編程。那麼我們如果想把需要開發的軟件所面對的領域更進一步的抽象,形成一些與領域對應的基礎模塊的話,選擇面向對象的語言顯然是更合適一些。比如,在用面向對象技術開發的股票系統中,內部類型就不只是簡單的整形數、浮點數等,而是有許多與股票相關的術語類,比如股票類型、多頭類型、空頭類型等。整個這些術語類構成一個複雜的對象模型。
4) 適應未來需求的能力
    過程改變的可能性大大高於對象變動的可能性。所以面向對象的系統在適應未來需求方面顯得更勝一籌。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章