[轉錄]Re: 請問這樣的物件導向觀念是否正確?
※ [本文轉錄自 java 看板]
發信人: TAHO.bbs@bbs.nhctc.edu.tw (癡人), 看板: java
標 題: Re: 請問這樣的物件導向觀念是否正確?
發信站: 新竹師院風之坊 (Tue Jan 27 03:26:22 2004)
轉信站: ptt!ctu-reader!ctu-peer!news.nctu!news.NHCTC!nhctc_bbs
其實我看你的敘述裡面,還是充滿很多程序導向的想法
或許是因為你先學過程序導向的語言,或是貴師沒解釋清楚,或是兩者都有
導致你解釋的物件導向有點怪怪的
按照你的說法 所有的 method 都宣告為 static 就好了
首先,先把什麼程式碼的東東丟到腦後去~~
然後看看下面這一段很平常的句子
『我家的小貓阿花,跟隔壁鄰居的小貓阿純,
以及對面鄰居的小狗皮皮,昨天打架了』
我想這句子的意思很容易理解
可是,我們卻不能理解
『我家的秋觥阿花,跟隔壁的秋觥阿純,
以及對面鄰居的碼翋皮皮,昨天撲囉了』是什麼意思
因為我們不瞭解 『秋觥』是什麼,『碼翋』是什麼,『撲囉』 又是什麼
在我們成長的過程中,我們不斷的補充對這世界的知識
因為我們有了一些背景知識,所以我們才能順利理解這第一句話的意思
我們大概瞭解『貓』是什麼東西,『狗』是什麼東西
也知道他們『打架』大概是什麼樣子
所以我們在對話的時候,可以輕易的用『貓』創造出『阿花』跟『阿純』
你可以瞭解他們都是屬於『貓』而且是分開的兩個實際的個體
而『打架』則是他們的一些行為
如果你想瞭解第二個句子
首先我們要先定義出『秋觥』『碼翋』『撲囉』是啥東西
比如說
『秋觥是一種公貓跟母狗的後代,它有貓的頭,狗的身體,以及類似烏龜的殼
他們撲囉時,就是拿殼去撞敵人』
這樣我們就能夠想像出『秋觥』是什麼東西了
我們用已知的分類,如 貓 狗 烏龜 殼,去定義出新的分類
以後我們就能夠直接使用『秋觥』這種東西了
這就是物件導向
我們寫的 class 就是在定義『秋觥』
等到全部定義完之後,最後的 main() 裡面的東西,就等於第二個句子
以資料的觀點來看,程序導向的資料彼此之間並沒有特定的關係
而物件導向的則是將相關的資料跟運算這些資料的方法放在一起
以一個座標點來看
程序導向的程式可能是
int xyz[100][3] = .....; //
其中 (xyz[i][0], xyz[i][1], xyz[i][2]) .... 分別代表每個點的座標
然後分別寫方法去運算每個座標點
如果你不小心將 xyz[0][2], xyz[1][2], xyz[2][2] 做同一個點的座標來做運算
甚至如果呼叫錯資料,算成另外一組 abc[20][3] 的座標,或是代表其它意義的值
程式也不會知道,而且不好除錯
因為這些資料彼此之間沒有關連
如果以物件導向來看,我們先定義點類別
class 3DPoint{
// 三個座標值
private int x;
private int y;
private int z;
// 建構子
public 3DPoint(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
// 定義一個算兩點距離的方法
public int distance( 3DPoint p){
return Math.abs( Math.sqrt(p.x*p.x+p.y*p.y+p.z*p.z
- Math.sqrt(x*x+y*y+z*z));
}
}
於是,三個座標就變成相關的資訊,100 個點變成
3DPoint[] points = new 3DPoint[100];
兩個點之間的距離用 point[0].distance(point[1]); 來得到
甚至可以寫個 static 方法來處理兩點距離
而且完全不用擔心算錯座標,也不會有不是 3DPoint 的東西被誤算
因為這一組資料( x, y, z) 以及它的運算方式,是被綁在一起的
然後你可以用兩個點來定義出一條直線
class Line{
private 3DPoint p1;
private 3DPoint p2;
}
甚至用三個點來定義出一個平面 class Plane
或是用兩條直線定義出一個平面 clss Plane
對於程序導向來說,要用線組成平面,並且做平面間的運算,就麻煩多了
--
歡迎加入 Java 的世界
文章收集區: 新竹師院 風之坊 BBS (140.126.22.6) Java 版 精華區
Java 專業網站: http://www.jsptw.com/jute/index.html
--
○ Origin: 新竹師院 風之坊﹝bbs.NHCTC.edu.tw﹞From: 218-164-3-166.HINET-IP.hinet.net
--
我愛用UD
我希望Blizzard可以讓nec招換出來的骷髏兵強壯一點
最好身高一米九 一拳三百磅
不然骷髏兵實在太廢~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.201.208.96
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):