OOAD 板


LINE

我不是 OO 强者,我都是硬干的写 OO [挺] 所以,我没办法回答你太高深的问题 只能分享一下 n 年前从 QB 转到 Java 来的时候跨过的障碍.... [远目] 首先,以某种角度而言,OO 里头的 method 跟平常的 function... 棍... 根本没什麽差别... Orz 反正需要的话,参数还是要传、该 return 的还是要 return 在同一个 class 里头互相用的 method 更是有这种感觉 (前头不用写 xxxx.fooMethod(),只要写 fooMethod() 就可以用啦 XD) 棍... 那差别在哪? 不如来看字串... 如果你要把一个字串里头所有的 ps 都变成 87 传统 function 情况下大概是这样写... String aString = "I am ps"; String bString = "ps is 87"; aString = replace(aString, "ps", "87"); bString = replace(bString, "ps", "87"); function replace(sourceString, targetString, replaceString){ //跳过,要 return 新字串就是了 //要不 return 也可,不过那跟 oo 比较没啥关系,就跳过 } 用 OO 的写法... 喔... 因为 String 这个 class Java 已经提供了 所以直接看用法,那会是 String aString = "I am ps"; String bString = "ps is 87"; aString = aString.replace("ps", "87"); bString = bString.replace("ps", "87"); 基本上,正常人(或是像我这种异常人 XD)会觉得 OO 的写法比较好读 不过,光是这样好像也没什麽 那麽,来设计一下桥牌的游戏 如果在传统(没有 OO)的写法大概要这样写 //第一个是哪一个玩家,第二个是 13 张排,後面一个塞花色一个塞点数 int card[][][] = new int[4][13][2]; //每个人的墩数,英文应该叫做 trick 吧? (错了就算了) int trick[] = new int[4]; //其他懒得写了,现在已经没办法用这种方法思考 //请自行想像发挥,然後跟後头 OO 版本的坐个对应 可是 OO 的话,大概会写成 //包 card 物件 class Card{ int number; int flower; //花色 lol //getter 跟 setter 之类就请自便 } //包玩家 class Player{ Card card[] = new Card[13]; int trick; //每一轮第一个,可以随便出 public Card aHand(){ //blahblah } //不然就会被限定花色 public Card aHand(int flower){ //blahblah } //赢了一墩 public void winTrick(){ trick++; } } //游戏流程大概就会长成这样 Player player[] = new Player[4]; Card trickCard[] = new Card[4]; int startPlayer; //纪录这一轮由谁开始 //发牌叫牌就跳过 [茶] trickCard[0] = player[startPlayer].aHand(); for(int i=1; i<4; i++){ trickCard[i] = player[(startPlayer+i)%4].aHand(trickCard[0].getFlower()); } player[this.getTrickWiner()].winTrick(); private int getTrickWiner(){ //根据 trickCard 跟 startPlayer 写一堆判断之类 blahblah } 上面讲的这些,大概是封装 encapsulation 的范畴 如果之前已经写过不少程式,那麽有了这个基础(或是跨过这个障碍) 再看其他 OO 的东西,或许会比较快乐一点 是说,我也只会这个 [远目] -- 侃侃长论鲜窒碍 首页:http://www.psmonkey.idv.tw 众目睽睽无心颤 Blog:http://ps-think.blogspot.com 茕居少聊常人事 杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.218.58.96
1F:推 andrew43 :你的文字让我懂蛮多的, 大感谢! 09/02 17:55







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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP