Object Oriented Programming/物件導向程式語言(一)
許裕永 著
物件導向是一種觀念,一種知識,一種分析及思考問題解決方案的準則(它不只適用於程式開發)。但它不是語法,也不是功能。當有人說:「我用物件導向的語法,寫了一支程式」。
其實是說:「我以物件導向的觀念,分析並設計了問題的解決方案,並以該解決方案撰寫了一支程式」。
有一種說法:「Java是一種物件導向的語法」。完整的說法應該是:「Java是一種支援物件導向的語法」。因為,並不是只要用Java寫的程式就一定是物件導向的程式。
有一種說法:「Java是一個純物件導向的語言」。也可以說:「Java提供的所有元件,全部都是運用物件導向觀念開發的」。
我常說程式設計師不是靠程式語言吃飯,而是靠思考問題的解決方案,能想出解決方案的人,才是團隊中的 Key-man。
問題要怎麼解決呢?問題的解決不外乎資料的分析及運算。如何有效率的組織資料,撰寫出適當的運算式,便是思考的重點。
假設說我們要開發一個會員管理系統,用來管理會員的基本資料及交易記錄。資料當然是儲存在資料庫,但是我們要讓那些資料用什麼型態儲存在我們的程式之中呢?
想像一下,現在有一位會員在表單中輸入了他的會員編號,並按下確定。所以我們從資料庫中讀入此會員的基本資料後,我們要怎麼去儲存這些讀進來的資料呢?
在專案中,每一個會員都擁有會員編號、姓名、生日及性別的這四種基本資料,所以我們可以宣告四個變數來儲存從資料庫中讀進來的資料。接下來若使用者要進行
資料的變更,我們就把使用者輸入的新值先取代變數中的舊值,並在程式結束時把變數中的新值儲存到資料庫之中,這樣就完成了會員登入並修改基本資料的流程。
但這只適用於會員人數不多,而且網路流量不大(使用人數少)的狀況。因為在這個系統中,一次只能運算(讀入)一個會員的資料。所以,基本上這種架構的專案
是不大可能
出現在現實環境中,它只會出現在程式語言初學者的範例之中。
在上一段的假設中,我們的系統一次只能儲存一個會員的資料。如果我們要把它修改,讓它成為能同時儲存多個會員資料的程式,要怎麼改呢?我們會發現,問題的根源還是資料在程式中的儲存方式。四個變數,儲存一個會員的資料;要宣告幾個變數才能儲存100個會員的資料呢?當然我們沒有那麼笨,所以我們會使用陣列。
但是,會員的四個資料的型別不同(假設為:String,Sgring,Date,boolean),所以我們沒辦法宣告一個二維陣列來儲存所有的會員資
料,而是必須宣告四個一維陣列來儲存資料,但這樣便會造成資料理管上的大麻煩。若有一個會員要取消會員資格,我們必須刪除這四個陣列中的同一個序號中的資料,相信我,你不會想要這麼做的。
想像一下,如果我們把需要用四個變數才能儲存的會員資料,整合成一個單位的話,事情會不會不一樣呢?。
如果我們只要宣告一個變數,就可以儲存一個會員的資料。那麼用一個該變數的一維陣列,就能儲存所有的會員資料了,不是嗎?
把四個資料整合成一個單位,這個單位便是物件導向中的物件了。一個會員物件,擁有四個資料,分別是會員編號、姓名、生日及性別。一個會員物件的陣列(或集合),就可以記錄所有的會員資料。
物件導向最基本的觀念,就是分析解決問題所需要的資料,再將所有資料分類為各個不同的物件。
思考一下,一筆商品交易會用到那些資料。
會員編號、交易日期、商品編號、商品名稱、商品價格、數量、折扣、是否需要發票、送貨日期及付款方式。這些資料你會分析出幾個物件呢?
沒有留言:
張貼留言