OOAD 板


LINE

: tinlans 说的没有错,物件导向并不是要我们做无意义的继承,但是物件导向也没有 : 说一定要套封装、继承、多型。 : 光就「物件导向」这四个字的意义只是以「物件」为基础来模拟 (Model) 真实世界的 : 东西,所以物件导向的分析第一步就是找出有哪些「物件」要被建立,尽管这个例子 : 简单到物件少到只有两三种:河内塔、盘子、或者柱子,但是这个问题是做练习还是 : 无意义什麽的我不管,在这边就是讨论如何以「物件」的角度来设计这样的一个软体。 基本上最古典的 OOP 定义就是指封装、继承、多型, 而仅有封装这类, 一般被称为 Object-based Programming 或 ADT programming, 它的设计精神与 OOP 差别就在於继承和多型, 实际上它们的目的也有所不同; 以这个题目为例子, OOP 可以说是几乎派不上用场, 事实上它也没有必要派上用场, 套 ADT 就可以搞定, 甚至传统的 procedural 就很足够了; 这些状况也是为什麽某语言很坚持支援 multi-paradigm, 而不要变成一个纯 OOPL 的原因之一。 以最後写出的程式来看, 如果不含继承与多型, 我们只能说它是「以物件为基础」设计而成的, 也就是 object-based 或 ADT。 : 在找出所有要被建立的「物件」之後,下一步就是找出每个物件之间的关系。当您了解 : 每个物件之间如何交流互动之後,才有办法决定「物件」拥有哪些「成员」,而这些「 : 成员」也就是所谓的「属性」和「方法」,尽管这个例子简单到有些物件可能连一个「 : 方法」都没有,但是河内塔摆明了就是在做练习而已,我尽可能地描述「物件导向」的 : 精神在哪边,它是以何种思维来开发软体的,如此而已。 这段做法事实上在 ADT 的年代就存在了, 只是大部分的教科书故意举了 well-known 的东西, 譬如 stack 和 queue 之类的, 它们的定义已众所皆知, 所以教科书直接将它们的定义当作 spec, 然後说明怎样怎样弄就会符合 ADT 的要求; 如果一个人的 knowledge 里面并没有 stack、queue、list 这些东西, 那麽他们找寻一个功能与之相同的物件所拥有的属性和操作, 过程其实就是这样子的, 而为它们设置一个名词以及详列规格 (也就是定义) 则是後来的事。 : 话说回来,河内塔问题用一个函式 (function) 就可以解决,它的复杂度低到不适合用 : 物件导向来模拟 (Model) 每个物件,它的所有变化也只有柱子的数目和盘子的数目,这 : 两个变数的改变并不会使河内塔的问题用物件导向就比较好解决,所以真正要解决河内 : 塔问题的话,还是建议写成一个函式就足够了! 所以我觉得, 如果出这题目的是老师, 这位老师可能并不是一位很理想的教师, 如果是自己给自己练习的, 那麽建议是换个题目比较好; 物件导向的用意是程式码再利用、应付多变的需求等等, 并不适合用在这种 case。 -- 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: https://it.muds.net/~uranus --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.221.133 ※ 编辑: tinlans 来自: 61.230.221.133 (04/08 02:12)
1F:推 king19880326:感谢@@ 04/09 22: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灯, 水草

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

TOP