- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象介绍-Read
第二讲 面向对象介绍 传统方法的缺点 提出一个实际问题的需求(需要处理变化) 面向对象的主要特征 描述面向对象方法,并在实际问题中展示它的应用。 传统方法的缺点 结构化分析方法:面向功能 数据和操作相分离 需求范例 例:编写代码访问存储在数据库中的几何形状的描述,再把得到的几何形状显示出来。 功能分解法 在数据库中查找几何形状的列表。 打开形状列表。 以某种规则将这个列表排序。 在显示器上显示单个的几何形状。 进一步细分步骤4: 4a 识别形状的具体类型。 4b 获得形状的位置。 4c 调用适当的函数,并传递形状的位 置给它来显示这个形状。 功能分解法的难题 处理变化困难 结论:细节关注越多,越容易导致错误 需求的问题 需求总会发生变化 需求总是不完整的 需求经常是错误的 需求(以及用户)都会使人迷惑。 需求不会说明全部情况。 需求变化的原因: 客户的变化 开发者的变化 软件环境的变化 处理变化:使用功能分解 用模块化来包容变化 例:对步骤4c“调用适当的函数,并传递形状的位置给它来显示这个形状”,可以写一个如下所示的模块。 function: display shape input: type of shape, description of shape action: switch( type of shape) case square: put display function for square here case circle: put display function for circle here 结构化的问题 能找到对所有形状都适用的一致的描述吗? 缺点:低内聚,紧耦合 内聚,耦合的定义 内聚度是指“程序中的操作之间联系紧密的程度”。 耦合度是指“两个子程序之间联系的强度。 耦合度与内聚度成反比。 大多数程序的设计要尽量做到,高内聚,低耦合 函数的问题 多余的副作用 维护成本高 不易于调试 如何应付变化的需求 将责任转移。 使变化最小化。 软件开发过程中的三个视面 概念(conceptual) 视面:表示正在研究的领域中概念 规格(specification) 视面:考查软件的接口,而不是实现 实现(implementation) 视面:代码实现 什么是对象 从视角框架来观察对象: 概念层次:一个对象是一系列责任。 规格层次:一个对象是一系列可以被其他对象或该对象自己调用的方法。 实现层次:一个对象是一些代码和数据。 面向对象的解决方案 类 责任(方法) ShapeDataBase getCollection—获得指定的形状的集合 Shape(抽象类) display—为所有的形状定义接口 getX—返回形状的X坐标(用于排序) getY—返回形状的Y坐标(用于排序) Square(派生自Shape类) display—显示一个正方形(这个类的对象所表现的形状) Circle(派生自Shape类) display—显示一个圆形(这个类的对象所表现的形状) Collection display—告诉包含的所有形状显示自己 sort—对包含的形状排序 面向对象的解决方案(类图) 面向对象主要特征 封装 继承 多态 对比 面向过程 面向对象 内聚 低 高 耦合 高 低 维护 困难 容易 扩展性 弱 强 可重用性 低 高 效率 高 低 总结 面向对象方法限制了需求变更带来的影响。封装机制使得对象使用更容易,变更对象内部代码对外界透明,封装帮助我们防止了副作用出现。 注意:最好把对象想成“拥有责任的某种东西”。 设计原则之一:对象应该对自己负责,并且这种责任应该被清楚地定义出来。 谢谢大家!
文档评论(0)