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