天天看點

面向對象與面向過程

最近在看《大象:Thinking In UML》,這是一本早就想看的書。

裡面提到了面向對象和面向過程的差別與聯系以及各自的優缺點。

我想,軟體開發之是以是從面向過程開始的,是因為計算機被發明出來的目的是用來解決數學問題,而數學問題一般是輸入資料,經過運算,産生結果,單向前進,清晰明了。

而随着計算機的發展,其功能漸漸地向解決其它領域的問題延伸,不再是資料驅動,流程也變得不确定起來,這個時候,本來用于解決确定問題的”面向過程“軟體開發,疲于應對,軟體系統變得既難開發又難維護。逐漸地,随着現實需求和人們思維的轉變,軟體設計逐漸向真實世界演化,用計算機來模拟真實世界。真實世界的模型就是,世界由Object組成,每一樣東西都是Object,包括地球在内,包括太陽,包括宇宙在内。平時各個對象不發生關系,當有需求産生的時候,再利用各個對象的不同屬性,使用不同的方法,去得到結果,這是一個“過程”,面向對象和面向過程,是從兩個不同的次元來觀察世界。