java 板


> 發信人: [email protected] (好像冷氣吹太多了), 看板: java > 標 題: Re: 人的特色只有好人與坏人嗎? > 發信站: 批踢踢實業 (Wed Aug 30 14:16:50 2006) > 轉信站: SayYa!ctu-reader!news.nctu!ptt > Origin: sally.csie.ntu.edu.tw > ※ 引述《[email protected] (web)》之銘言: > : 人的特色只有好人與坏人嗎? > 這麼富有哲學性的問題,既然在Java板出現了,就一定要認真地用Java的方式來回答。 > 話說,人類是萬物之靈,所以人類也是物件的一種。然而要具體形容一個人,除了外觀, > 當然還有道德、職業、學經歷、聲望這些因素等等…這些要素,在還沒有能夠具體形容這 > 些要素前,我們能做的,就是暫時將人化做一個簡陋的抽象類別。 > package universe.earth; > public abstract class Human { > protected boolean isNormal; > protected boolean isGoodGuy; > protected String sex; > protected double weight; > protected double height; > protected double BMI; > public Human(){} > public abstract boolean IsNormal(boolean eyebrow); > public abstract boolean IsGoodGuy(String skill); > public abstract void setBMI(double weight, double height); > } > 基本上,人類又可分為帶把與沒帶把的!皆下來我們就要實做這個帶把的男人類別,他繼 > 承自Human這個抽象類別。 呵,自己來隨意改寫看看好了。一個"人" "類"應該要有什麼樣的內容呢?如果原po 所講的,實在太多種實作取向了。若是早個一二年看到這文章,肯定只是覺得很幽 默,與版友一同歡樂觀賞。不過最進有稍為長了一點知識,這例子讓我思考了很久 我們真的要這樣做嗎? 當然這有趣的例子不是原PO用來展示設計用的,所以就讓自 我延伸練習。是否可以改用比較有彈性的作法? 以design pattern的守則之一,變動的部分要被封裝起來。所謂的變動可能是一種 主觀的認定,在只認可男與女二種性別的情況下,性別是不會有什麼變動的。所以 ,這一部分通常關於專案的特性而有所差別。而"人"是好人或壞人,則是屬性一個 人的特質,或個性。但一個人的特質與個性往往難以估計有多少描述方式與分類, 暫且認為其為變動的部分,應該被封裝起來。 要如何來實現封裝這一個動作,回想起剛學習java還不懂封起來要做什麼,除了資 料成了黑盒子內的寶物之外,我們只看得到封裝後所提供的介面。他到底有什麼好 呢? 基本上的好處是擴充性,因為不必被侷限於base class。只要多加個implements 就多了點東西,base class是牽一髮而動全身的。一但把什麼都塞到base class後 ,那只要需求改變了,子類別全都要跟著改變。 俺用極端一點的風格,寫下了這個空虛的人類: ====================================================================== # public class HumanBeing { } 人活著不能如此空虛,回頭看看原先的實作,我們需要一點基本資料。 但是基本資料所蒐集的內容也不盡相同,在這不確定的年代, 我們要為適應變動而設想。將之獨立成"基本資料"介面 ====================================================================== # public interface GeneralInformation { public void setName(String name); public String getName(); public void setHeight(double height); public double getHeight(); public void setWeight(double weight); public double getWeight(); } public class HumanBeing implements GeneralInformation{ ................. } 一個有基本資料的人,我們可以為了這人的用途不同附加不同的介面。 例如為作家提供經歷、著作等資料的界面。為個性,提供個性集合的介面; 為個人特質、狀態提供介面 ====================================================================== # import java.util.Set; public interface Traits { public void setTraits(Set<Trait> traits); public Set<Trait> getTraits(); public void addTrait(Trait t); } public class Trait { String description; } public class HumanBeing implements GeneralInformation, Traits{ ............... } (再加一個諮商記錄幾乎就是諮商師用的application了..orz) ============================================================== 由這樣的想法,為一個基本的人提供不同的介面。而可用於不同的用途 ,比起繼承的方式要容易維護。 此外,由這一篇內容也聯想到,人的特質、好人、壞人等"形容詞"修飾 也適合用裝飾者模式來作。好人、壞人通通都是人,符合裝飾著的基本 條件,裝飾者的型態和被裝飾者是同一個型態 (實作上利用繼承的方式 達到同型態的目的,但把加料的部分塞在method以override的手法達成 )。 class 神奇寶貝 {} interface 基本資料 {學名、生長地區、基本型態} interface 攻擊系統 {一般攻擊、必殺技、攻擊加乘} class 神奇寶貝原型 extends 神奇寶貝 implements 基本資料, 攻擊系統{} class 皮卡丘 extends 神奇寶貝原型{ 學名: 皮卡丘 生長地區: foo place 基本型態: foo type 一般攻擊: foo action , 加乘 * 1.2 必殺技: killer action, 加乘 * 12 (傳說中的十萬伏特電擊!?) 攻擊加乘: 1 * 攻擊型態加乘 + bouns } 用裝飾者修飾皮卡丘 class 爆走皮卡丘 extends 皮卡丘{ 皮卡丘 p; public 爆走皮卡丘(皮卡丘 p) 一般攻擊: 加乘* p.攻擊加乘 * 10; 必殺技: 加乘* p.攻擊加乘 * 10^1.5; } class 好人皮卡丘 extends 皮卡丘{ 皮卡丘 p; public 爆走皮卡丘(皮卡丘 p) 一般攻擊: 加乘* p.攻擊加乘 * 0.1; 必殺技: 加乘* p.攻擊加乘 * 0.9; } orz..好唄。真是一整個胡言亂語。 -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: 163.26.34.20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草
伺服器連線錯誤,造成您的不便還請多多包涵!
「贊助商連結」






like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP