全国计算机软考软件设计师考前练习及答案(9)
上学吧(www.shangxueba.com)
有面向对象. 比如现在我手下这群程序员里有面向对象分析和设计能力的也就一个..
用最面向对象java和C#也可以写出杂乱无章完全不面向对象甚至不结构化的程序.
注意到现在我们的手机号码分成移动和联通两种, 虽然对我们来说,不过是号码不一样收费不太一样,没多少区别,但是两家的短信接口可是完全不一样的.
假设程序要求 用户在界面上输入手机号码(TextBox1),输入一条短信内容(TextBox2),按确定(Button1),就可以把短信发到那个手机上
A 一步一步走,该干什么就干什么...看看伪代码: st***号码 = TextBox1.Text; st***内容 = TextBox2.Text;
int 第3位数字 = int.Parse(号码.Substring(2,1)); //把第3位取出来,用来判断是不是移动的手机 如 1390000000 就取出一个 9 if(第3位数字 > 3) { .... ....
....//这里是一堆长长的代码用来发送***的短信...省略,我们这里只说程序的思想..不涉及技术细节 } else { .... ...
...//又是一堆长长的代码用来发送***的短信 }
B 写一个库,定义出发送***短信的函数和发送***短信的函数,还有判断的函数,假设函数原型分别是
发送移动短信(st***手机号码,st***内容); 发送联通短信(st***手机号码,st***内容); bool 是否是移动号码(st***手机号码); 然后写程序如下:
if(是否是移动号码(TextBox1.Text))
发送移动短信(TextBox1.Text,TextBox2.Text); else
发送联通短信(TextBox1.Text,TextBox2.Text);
C 定义一个抽象接口 \短信接收者\由 \和 \两个类分别实现接口. 各自实现发送短信方法.
然后构造一个 \手机工厂\一时想不到好的名字,暂时叫这个吧) , 接收一个号码,返回一个 \短信接收者\接口(里面根据接收的参数,可能是***或***) 然后程序如下(一行..):
手机工厂.获取接受者(TextBox1.Text).发送(TextBox2.Text); 或写成这样清晰点:
st***号码 = TextBox1.Text; st***内容 = TextBox2.Text;
手机工厂.获取接受者(号码).发送(内容);
第 41 页,共 64页
上学吧为您提供“软件设计师”资料下载:http://www.shangxueba.com/share/e15.html
上学吧(www.shangxueba.com)
OK,对于上面3段伪代码 大家有什么想法? 第3种是不是看起来有点 爽? 也许把,也仅仅是看
起来那么一点爽,没什么大不了.
没错,面向对象是在大型的地方更能体现优势,一小堆是展现不出来的. 我们假设程序中一共有100个这样的地方(比如一个是发短信的,一个接短信的,一个打电话的,一个上网的.....) 那么对于A程序,很抱歉,非常要命,要在100个地方复制代码,复制100份,然后对其中99份做修改(或多或少,总要改点..)
B程序只是在每个调用的地方加几行,可以接受. C程序在调用点也是加1行,同样也可以接受.
这个时候,结构化和面向对象共同的优点体现出来了,复用性 (教科书中讲面向对象总是说说复用是面向对象比其他方法的优势,其实结构化本身就是可复用的)
A方法差不多该抛弃了........这就是结构化发展起来以后, 非结构化很快面临淘汰地步的原因,因为在软件稍微大点,就出麻烦,写写单片机小模块还行.
软件在一天天变大变复杂,仅仅是变大变复杂而已? 当然不是. 也变得多变. 用户的需求时时在变.软件也容易变,.
回到刚才的问题, 现在不是有小灵通么? 你又需要多一种类型,变成 小灵通\\移动\\联通 3种类型.
那么对于 A ,灾难发生....修改程序的成本不比重新做一个少.
对于B 需要去100个调用的地方多加一个if来判断,然后多加一个对应小灵通的函数. 修改量有点大,不过也不是不行,因为毕竟现在的工具发达,你可以查找--替换. 不过程序是需要测试的,你替换一个地方,就需要多测试一个地方,成本高.
对于C 多加一个实现 接口的 \小灵通\类 , 然后修改 \手机工厂\的 \获取接受者(st***号码)\一共2处,测试也只要再测试 这个新类 还有一个方法.
C 方法 面向对象的优势在这个时候体现出来了.
有人这个时候出来抗议了,如果程序写的多了,经验丰富了,有人会看出我上面那些假设的漏洞,就是B 并不是最好的结构化方法, 因为 其实有更好的用一个函数来实现判断类型 那样就跟 C 一样,只要改很少的地方了.
没错, 那样C和B又公平平等了,C还是没什么优势. 请注意2点 第一: \面向对象\不是指 面向对象 的 编程语法, 而是一种思想. 那样写其实 B 已经拿到了一点面向对象的思想了
只是封装在非面向对象的语法中. 第二 不面向对象的确可以写出低耦合的,高效的,可维护的,很牛逼的程序. 但是那是需要很高造诣的人来做的事. 因为没有类的封装性,名字空间的隔绝 还有全局性的变量在程序里走, 要靠程序员自己去避免这些\可以做,可以方便地做\却\会对未来维护带来灾难\的操作, 对程序员要求很高,你要自觉不用全局变量,就像以前自觉不 用goto语句....还要自觉把功能分好摆好, 需要的分析设计技术是很高的. 而写出同样质量的面向对象程序,只要略知道设计模式的人就都可以了. 这就是面向对象大行的原因之一. 有人说,面向对象就真的封装了?可重用了? 可是我看见很多C#和java程序错乱复杂, 根本拿不出一个 \块\出来用,你拿了 \块A\就调用到 \块B\非要把\块B\也拿来..然后又要
用到无关的C,D,E,F.....最后出来一大落,而且99.9999%是我不需要的,我就只需要那0.00001%而已....
这是现实,的确,至少我看见的代码里垃圾代码占多数(这里是指可以实现功能却很\有臭味\的代码), 这主要有一个很大的原因是写代码的人没有面向对象的思想,有的只是面向对象 工具包装的面向过程思想,而且连结构化都说不上. 不是面向对象的错.
差不多,有些人现在认同面向对象了,也知道这不是书上随便说的那些苦涩的概念了,不过还是不明白怎么个面向对象法. 我再换个话题说说,不说手机吧,
说衣服,服装厂生产衣服. 衣服有颜色,有大小,有款式.... 看看一个设计,在不同的人手里是什么不同的方法.
第 42 页,共 64页
上学吧为您提供“软件设计师”资料下载:http://www.shangxueba.com/share/e15.html
上学吧(www.shangxueba.com)
现在服装厂要 生产一批 蓝色的, 小号的, 女款的...的衣服...
A :
衣服 衣服1 = new 衣服(); 衣服1.颜色 = 兰; 衣服1.号码 = 小; 衣服1.款式 = 女式; .....
然后new 出好多件来.赋值好多下....
现在问题是突然说不要兰的了要红的, 哎哟....改啊改.... 当然你可以在循环里做这个,但是如果每件衣服除了颜色和款式一样, 大小是不同的又如何? 有个B想到了一个好的设计了.
定义一个衣服类, 然后把 大衣服 作为一个 子类,小衣服是另外一个子类. 那么方便了一些. 不过又有问题,如果再改需求.....要求大小跟男女固定的,颜色可以变,
难道又再定义出兰衣服类和红衣服类.....那还有完没完啊........依然不是好设计. C
面向对象有一个利器叫 \设计模式\学面向对象基本上这个是必修, 我们用用设计模式中的原型模式,构造出一个原型 假设是一件 大的男装 …… 此处隐藏:5980字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




