OOAD 板


LINE

※ 引述《hsnucsc (hsnugo)》之铭言: : 学习程式4年了, 一直很想学会一个好的OODesign : 之前买了很多人推的"深入浅出 物件导向分析与设计" : 但是总因为看到一半有很多疑问而打住 : 想问一下 : 1.订定Use case和requirement非常重要吗? : 我知道写程式前应该要先规划好, 但是这本书花了很多的篇幅 : 在思考, 修改它的Use case和requirement : 在很多地方, 都会让我觉得很抽象 很重要啊。 以前常有人听了客户讲的东西就照自己想像的跑去写程式, 写了几个月写得要死结果客户说那不是他要的功能。 弄清楚到底该做什麽, 然後去做对的事情, 避免做了多余的事情, 大都由这里把关。 : 2.要怎麽知道该设计哪些class : 一个很多人建议的方法 => "名词" : 在Usecase里的名词就是一个class, 他拥有的东西就是variable, 他的动作就是method 除了这个叫做 textual analysis 的方法之外, 还有 CRC analysis (你那本书附录应该有讲), 或是把类别分成 bounary/control/entity 三大类, 再用类似 textual analysis 的原理去识别出来。 : 但是有的时候, class A该不该有class B的物件, 也是令人难决定 可以尝试填看看 CRC card 来区分, 或者改走比较传统的 use-case driven 路线先熟悉整个精神, 这样你可以先学习如何找出分析期类别再把它们转换(合并或分割)成设计期类别。 一开始就走 feature-driven 有时候对一些人来说跳太快了, 大概 run 一下传统的做法可能比较抓得到感觉。 学习传统做法的书我建议这本:http://tinyurl.com/4lu3zk 一方面你也可以顺便学会 UML 的各种图大概怎麽应用, 而不是空学每张图的「语法」。 : ex: 在书中有个范例 : 要设计一个狗门, 可以用遥控器控制开关, 或因狗的声音辨识器辨识到的声音而开关 : 这听起来是三个分开的class, 甚至我会觉得Recognizer应该是DogDoor所拥有的 : 但是实际上, remote需要控制DogDoor, 所以必须拥有一份DogDoor的reference : Recognizer需要控制DogDoor, 也必须拥有一份DogDoor的reference : 所以可以说, 一个class拥有哪些variable, 应该是那些东西它需要access吗 上面这行问题的中文文法有点怪我看不太懂。 : 3.物件化程度 : 在同个例子中, 狗叫声Bark, 有两种作法 : 一是String bark; : 二是Bark bark; (後面还有barkList, 不过先简化一点问题) : 如果用二, 就可以将吠声比较交给Bark, 後面即使修改Bark的比较方法 : 也只要不需动到声音辨识器或其他用到Bark的class : 但是这是一个我困扰很久的问题 : 我怎麽知道以後会不会修改? 参考 requirement 那个步骤得到的一些文字资讯来做判断, 上面没有描述到的话就当作不会。 跟物件导向搭配的开发模式大都是 iterative 而不是 waterfall, 你走完 design 还是会往回绕到 requirement 一直反覆, 你手边的那本书可能没有告诉你这件事, 我讲的那本有。 : 如果我99%确定不会再修改, 那我直接用String bark, 程式的效率不是比较好 : 也直接可以看出他比较时做了的事情 : 如果连这样都要物件化, 那不是有很多variable都要设计成物件 : 那像本书的第一个例子: : guitar拥有的builder, model, type等属性, 不如也都改成物件 : 以後就可以拥有很高的弹性, 看是要怎麽比较builder, model等属性 : 谢谢 -- Ling-hua Tseng ([email protected]) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: http://www.tinlans.org --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.116.1
1F:推 hsnucsc :谢谢 01/20 13:12
2F:→ H45 :http://tinyurl.com/4lu3zk: 02/26 00:30
3F:→ H45 :UML 物件导向系统分析与设计 (UML 2 and the Unified 02/26 00:30
4F:→ H45 :Process : Practical Object-Oriented Analysis and 02/26 00:30
5F:→ H45 :Design, 2/e) 02/26 00:30







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

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

TOP