[轉錄]Re: 請問這樣的物件導向觀念是否正確?

看板SFFamily作者 (iiew )時間20年前 (2004/01/27 13:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
※ [本文轉錄自 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
文章代碼(AID): #105V7cha (SFFamily)
文章代碼(AID): #105V7cha (SFFamily)