一分鐘進一步瞭解面向過程、面向對象、面向接口、面向抽象

計算機是用來解決處理一些問題或事情的,而所謂的問題或事,則是由一個個的客體所觸發的,所以在現實世界中存在的客體,則纔是問題域的主角,這也是人類解決問題的基本思路

* 客體,即是客觀存在是實體,客體由一些屬性和行爲來描述;

舉個例子,如:現實生活中的泥石流事件,我們最好的解決辦法不是針對事件本身,而是針對引起這事件的實體,
所以我們一般會將問題轉移到山這個客體上,然後對山體進行一些如綠化、水泥澆灌等工作從而來解決問題;

再比如:學生打架事件,同樣的,我們應關注的是客體而不是事件本身,無論什麼緣由打架,最終都還是歸咎於客體本身的問題,如果每個學生都一定認知,那麼遇到問題就能夠商討去解決,也不至於什麼問題都用打架來解決。所以針對打架事件我們應該是對學生這個客體進行教育。

回到軟件設計中來,我們需要用計算機來代替人類工作,同樣需要用人類解決問題的思路去分析和描述問題,纔不容易讓問題變得複雜,從而跟容易將問題以代碼的形式表現出來。

在軟件設計目前有以下兩種實現方法,一種是結構化設計方法(也可稱之爲面向過程),一種是面向對象的設計方法

一、結構化設計方法
結構化設計方法所採用的的思路不是將客體作爲一個整體,而是將客體的行爲(方法)抽取出來,以功能爲目標來設計系統,那麼由客體構成的世界將轉變爲由功能構成,這遠遠背離了人類觀察問題和解決問題的基本思路,同時在程序設計中將大大增加了系統的複雜度;

因爲,在任何一個問題域中,客體是穩定的,而行爲(方法)是不穩定的,當問題規模不斷擴大,系統日趨複雜後,一方面,
如果客體的某些屬性發生變化時,將牽扯到系統的很多功能;另一方面,很多問題將會讓我們更加難以分析理解,就很難將人類處理問題的方法,以代碼的形式表示出來交與計算機來處理;

因此,面向對象就應運而生。

二、面向對象
面向對象與結構化設計方法不同,它將客體的屬性和行爲統一抽象出來,讓我們在考慮問題時,以對象爲單位,考慮它的屬性和方法,從而達到對現實世界中客體模擬;站在程序設計者的角度上來說,系統的各個功能是由一個個對象之間相互協作完成,那麼,設計者就只需關係各對象之間的協作關係,而不用關係各對象內部的具體實現。


三、面向接口編程和麪向抽象編程
面向接口編程與面向對象/過程不是一個問題,因爲面向接口編程是站在一個複用性和擴展性的角度上來講的,比如說:我們寫了一個靜態化功能,我們先讀取文件、然後獲取模板所需的數據,然後根據讀取的文件和數據,調用一個execute(f,d)方法來完成靜態化;但是,現在我們還沒開發出execute方法,而且也不知道以後將使用freemarker、jsp還是velocity來實現靜態化,所以我們就可以將execute抽象出來,作爲一個接口,當誰需要使用,則隨便用freemarker或是velocity來實現execute都能讓程序正常運行。

在開發過程中,經常會用到第三方框架或一些插件,同樣的,很多情況下,我們也只需要實現它要求的接口,就能完成對應的功能;

面向接口編程所說的接口,指的是對定義(協議、規範)和實現的分離。接口被分爲兩類,一類是對個體某一方面(行爲)的抽象,即形成抽象面,程序中表現形式爲interface;另一類是對個體的抽象,對應於一個抽象體,程序中表現爲abstract class; 比如,我們可以將牛、馬、羊抽象爲動物一樣;

 

 

參考:

1)百度百科 - 面向對象

2)  百度百科 -  結構化設計方法

2)CSDN博客 - https://www.cnblogs.com/feng9exe/p/5588671.html

 

 

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