21.06.09
老艾的程式設計講座(3)
專有名詞很難懂?沒關係,因為我也不是很懂
名詞不懂不重要,重點是要知道怎麼用
在OO的世界裡面,每個東西都是一個"物件"
每個物件有自己的子物件跟參數
假設我們要設計一個人物好了
人有頭,身體,手腳這幾個物件
所以用程式的寫法就是
class Human
{
int age;
string name;
float height;
float weight;
Head head;
Hand left_hand;
Band right_hand;
Body body;
Leg left_leg;
Leg right_leg;
}
age(年齡)name(姓名)height(身高)weight(體重)是這個人的參數
然後Head(頭),Hand(手),Body(身體)以及Leg(腳)則又是不同的物件
以Head這個物件來作例子好了
class Head
{
Eye left_eye;
Eye right_eye;
Nose nose;
... 以下省略 ...
}
如此一來,各種不同的物件所組成的一個程式就是所謂的物件導向寫法的程式
OO有什麼好處呢?
乍看之下好像是把簡單的事情複雜化
事實上如果OO用的好,可以把程式變得很容易修改
假設我們要作一個簡單計算機好了
有按鈕0~9,+-*/=共15個按鍵
用一般非OO的寫法的話
if (button1_pressed)//如果按下1
{
print 1;//顯示1
}
else if (button2_pressed)//如果按下2
{
print 2;//顯示2
}
... 以下省略 ...
因為我們要作10個數字按鈕,所以上面類似的程式碼會重複10次
如果是用OO的作法的話:
//按鈕物件
class Button
{
//按鈕號碼
int number;
//創建按鈕的基本參數
Button(int i)
{
number = i;
}
//當按鈕按下
void pressed()
{
print number;
}
}
//創立各個按鈕
Button button1 = Button(1);
Button button2 = Button(2);
... 以下省略 ...
當按鈕被按下的話,便會呼叫pressed這個funciton,並且執行裡面的內容
你可能會說,上面那個比下面這個簡單多了不是嗎
的確,第一個作法簡單很多,但是多了許多重複性
而重複性就是造成程式錯誤的主要原因
假設我們現在要改變一下這個計算機
當我們按下一個數字之後他會自動x5
那麼我們就要重新修改第一個程式:
if (button1_pressed)//如果按下1
{
print 1*5;//顯示5
}
else if (button2_pressed)//如果按下2
{
print 2*5;//顯示10
}
... 以下省略 ...
同樣的修改要作10次,而且這還是只有10個數字按鈕的計算機
要是有50個,或者100個按鈕,我們就要修改更多次
越多次的人為修改,出錯的機率就越高
那麼如果是OO要怎麼辦呢?
void pressed()
{
print number*5;
}
就這麼簡單,只要修改一行
不管是有100個按鈕還是1000個按鈕,永遠都只要修改一行的程式碼
這還只是OO的其中一個優點:容易維修
除了容易維修之外,OO還讓程式的重複使用性提高
在這邊我只是稍微說個大概而已
如果開始對OO有興趣的話,可以去網路上找找相關的教學
畢竟OO的好處有很多,不是三言兩語就能解釋清楚的
那麼,有機會的話看看能不能出個講座4吧
雖然可能性很低就是了
畢竟基礎的東西大概到這邊就說完了
剩下的就是不斷的練習以及不斷的練習
我目前也還是需要更多的練習阿




