在談程序導向(Procedure-Oriented)與物件導向(Objected-Oriented)前,我們先來談談為什麼會有這些東西。
程式語言是人創的,所以很多行為都可以以人的觀點來思考。
非程序導向
在最古老的程式中,人沒有程式庫(Libery)的觀念,所以有一些常常使用到的程式功能,大部分程式碼都是相近或是稍加修改就可使用,但是這些code總是被複製來複製去,每個版本的差異性越來越大,導致日後的有錯誤時要debug就會變得很困難,因而衍生出程序導向。 (Procedure-Oriented)
程序導向(Procedure-Oriented) 簡單的說,就是Libery的誕生,一般的編譯器廠商都會提供一些大家會常使用的函式,並且將一些函式集集結起來成為函式庫。這是解決了之前的問題,但是人是會不斷創新的,因此有時候函式會需要更新,又會有了版本不同的問題,因此如果程式出錯了,debug仍然是有難度的,這時物件導向的觀念就出來了。
物件導向(Objected-Oriented)
說到物件導向,大家都很容易會聯想到C++或是Class吧,沒錯!!!也就是類別,舉一些簡單的例子,假設我現在有個農場,農場內養了雞、鴨、鵝..etc,這些動物都會下蛋,那麼在這裡農場就稱為"物件",雞、鴨、鵝這些就稱為"屬性",而下蛋就稱為"方法"。
繼續剛剛的話題聯想到程式,我們都知道每個動物所生出的產品是不同的,雞有雞蛋,鴨有鴨蛋,同樣是生產品,若是都以下蛋來命名,那就會出問題,因此每個"生產品"的方法都是各自存在於自己的類別當中,就好像我們在撰寫程式時,你就會看到 雞.下蛋、鴨.下蛋、鵝.下蛋,(物件與屬性和方法之間以 點(.)運算子做連結),如此就讓程式既容易了解也不容易出錯。
但是如果是在程序導向,所有的函式都集中在一起,叫鴨去下雞的蛋,這樣程式當然會有問題。
另外,物件導向有三大觀念,
一、封裝(Encapsulation)
二、繼承(Inheritance)
三、多樣化(Polymorphism)
簡單的提這三個概念:
封裝的目的是避免主程式與類別庫之間的干擾,就好像一台電鍋
,有一些開關或是旋鈕,使用者可以使用最外層的開關,工程師可以做內部的微調,而有些是鎖死不可以調整的。
繼承:簡單的說就是更新,就好比線上遊戲都會有改版一樣,繼承舊有的,再額外創造出新的。
多樣化:簡單的說就是更細部的方法,就好像你說要下蛋,那麼蛋要下在何處。
最後一個.NET Framework的概念
我們都知道程式語言有很多種
而.NET Framework它的主要目標是讓所有程式語言有相同的執行環境及共用基礎類別庫
詳細的資料可以上wiki查詢
沒有留言:
張貼留言