Soft_Job 板


LINE

我用我写的程式来说明怎麽用到 OOP。 俄罗斯方块, 俄罗斯方块不是有很多不同的方块吗? ex: ZTetromino ** ** -------- STetromino ** ** -------- OTetromino ** ** -------- ITetromino **** -------- 我实做一个 Tetromino 代表最基本的方块元素, 定义出 move() 这个移动的 member function。 rotate() 则是以 virtual function 来定义。 ZTetromino, STetromino, OTetromino, ITetromino 继承 Tetromino, move() 都是一样的作法, 所以继承之後, 每个方块都有了移动的能力, 这是继承提供的好处。c 也做的到, 就用 function pointer 指到对应的 function。 rotate 旋转的话, 每个方块的旋转都不同, 所以就各自定义出自己的旋转方式。 上面提的是继承与多型。 还少个封装, 封装的话, 每个方块有 4 个点 (x, y), 这 4 个点被我以 private data member 的形式设计在 Tetromino class 内。 其实俄罗斯方块也可以不要用多型 (OOP) 的方式来设计, 但我觉得用多型来设计 非常适合俄罗斯方块的那些方块。 另外一个是编译器的例子, AST 的每个 node 也可以设计成 OOP 方式, 例如: FunctionNode, AddNode, SubNode 之类的, 不过在我的实做中, 我觉得这样 并没有太大的好处, 所以并没有这样设计, 但是 两周自制脚本语言 这本书 是以 java 来实做 AST, 他就是这样设计的。 若你有写过用 OOP 来设计的程式, 把那个思考方式说出来, 也许面试官就能 更清楚你想表达的内容。 ※ 引述《goooeooo (ge)》之铭言: : 以前面试遇到的问题 : 面试官问我什麽是OOP : 当时我觉得我回答不好 : 我想请问以下 这样解释可以吗? : OOP观念 运用得宜可以将开发时间缩至最短 且观念正确下 也可让将来维护人员好维护 : 在大型系统下效果尤其显着 : 譬如今天开发仓库系统(我随意举例实际没有碰过这种系统) : 由上往下分类 譬如有电子类、玩具类 此两类都还有很多继续向下的分类... : 将电子类、玩具类 设计制作成大致物件 : 就是让此两类的向下分类几乎都是以此两物件做为变化继续修正或增加差异的部份来开发 : 譬如:电子类 再向下有手机类、电脑类 : 那将手机类、电脑类会共通的方法、逻辑再加上变数 制作成电子类物件 : 用电子类物件来小幅修正 完成向下的手机类跟电脑类两个小差异的部份就行了 : 照这样的规则一直向下 就是说 也将手机类跟电脑类 继续做成物件 供向下分类使用 : 也就是说你必须在规划开始时就已经思考好整个系统架构 会由几个最上层的物件开始向下 : 一直向下创造物件 让程式码进而达到最简化 但又能完成繁琐的任务 : 让开发人员可以快速开发 将来维护人员也可快速理解维护 : 所以最上层的物件设置规划非常重要 关系到整个系统开发的过程 : 这是我所理解的 请问这样可以解释OOP观念吗? -- 纸上得来终觉浅,绝知此事要躬行。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.214.247.42
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1510492579.A.349.html
1F:推 landlord: 挺好的!game of life 其实也可以 OOD 成这样 :) 11/12 21:36
2F:推 Vick753: 推 11/14 11:25
3F:推 youtuuube000: 也许你在补充多型的扩充性会更好 但这篇已经写的不 11/14 22:09
4F:→ youtuuube000: 错了 11/14 22:09
5F:→ viper9709: 推~这例子不错 11/14 22:45
※ 编辑: descent (175.98.141.254), 11/15/2017 09:01:23







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

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

TOP