[计算机软件及应用]数据抽象与面向对象的程序设计3.ppt

[计算机软件及应用]数据抽象与面向对象的程序设计3.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]数据抽象与面向对象的程序设计3

Outline 1.大型程序设计概述 2.数据抽象 3.抽象数据类型的形式规范描述 4.面向对象概述 4.1 OO技术优势 4.2 OO基本概念 5. 面向对象设计的过程 6. OOM vs 传统面向过程方法 7. 面向对象设计的基本原则 9.7 OOD的基本原则 封装和同源 域、相关度和内聚 类和子类的属性 继承和多态的危险性 类接口 可复用OO设计原则 1. OO设计原则-封装和同源 Encapsulation structure封装结构 Connascence同源 1. OO设计原则-封装和同源 Level 2: The object /class structure 对象/类结构 1. OO设计原则-封装和同源 控制封装层次交互的设计标准 显示哪种标准适合于哪个层次; 结构化编程的原则规定了代码行和同一过程的其他代码行之间的关系 扇出:是在一个给定过程中代码行从其他过程中所作引用的数目 内聚:是一个给定过程的代码行对实现过程目标的聚合度 耦合:描述过程之间联系的数目和力度 类内聚:表示与实现类目标有关的各个方法之间相互之间的聚合度 类耦合:描述类间联系的数目和力度 1. OO设计原则-封装和同源 Two software elements that are connascent share the same fate for at least one reason 两个软件元素在生命中有相同的命运 Could use the term coupling 耦合 两个软件组件同源的含义是指: 为保持正确性,改变一个元素,另一个必须随之改变,或至少需要检查它; 可以假定某种变化,需要两个同源的组件同时变化以保持整体的正确性。 Simple example 类型同源 名字同源 同源的多样性 外在同源 如名字同源和类型同源 内在同源 如汇编代码中: X: JUMP Y+38 … Y: Clear R1 … // 这里有38个字节 Z:Clear R2 // 这是从X处跳转过来执行的指令 …. 在Y和Z之间有精确的38字节 同源表现的越内在,发现同源的时间耗费越多,除非在合适的位置做了详细的文档说明。在类库或其他文档中相距较大的同源处理起来很费时且很难发现。 同源的多样性 静态同源的多样性 名称同源 例如两个变量需要有相同的名字指向相同的东西 类继承中,子类明显地使用了父类的变量名字。 类型或者类同源 Int I; …… I:=7; 意义同源 例如,假设帐号acc_num为正,表示个人帐号,为负表示企业的,为零属于内部的,则代码 If order.acc_num0 then … 在所有同帐号相关的软件组件之间就有意义上的同源 算法同源 例如,检验帐号的算法和检查帐号的算法之间; 构造Hash函数和利用Hash函数查找的算法 位置同源 过程化单元中的多数代码有位置同源,需要以正确的顺序执行;形式化参数和实在参数之间具有位置同源 同源的多样性 动态同源是基于代码的执行形式的同源 执行同源: 与位置同源等价的同源 时间同源: 出现在实时系统中,如,关闭X-Ray机器的指令必须在打开他的指令后的n毫秒内执行; 数值同源: 经常包括一些算术限制。如,一个矩形的四角需要保持一定的关系; 本体同源: 面向对象系统中经常使用的限制。两个对象o1和o2,每个都有一个变量指向另一个相同的对象,而且必须总是指向相同的对象。 逆向同源 同源等同于“相同”或“相关” 逆向同源:“差别同源”或“否定同源” 逆向同源保持了不同性,而不是等同性 例如, int I; int j;若j改为I,则I必须改名 类C同时从类A和类B继承而来,则A和B的方法就应该有不同的名字。产生了A的方法和B的方法之间的名称的逆向同源。 同源与封装边界 同源和逆同源是现代软件工程的核心; 封装是逆向同源的一个检测手段 设想一个有10万行代码的系统,需要给一个新变量起名,简直是个恶梦。 同源也是OO具有优势的原因。OO平滑了在封装层次1上的一些同源。例如, 封装层次1中的Hash表,更新表的位置和检索表的位置,具有算法同源。如果想更换Hash的实现算法,需要找出所有与此Hash有关的代码; 封装层次1不会引导维护者到达这些位置;而封装层次2可以有效地控制与该Hash有关的数据和方法在一个独立的组件的边界之内。 同源与可维护性 同源提供了三个提高系统可维护性的原则 通过将系统分割为封装组件来减少整体的同源; 减少封装边界间的任何保留的同源; 在封装内部对同源最大化; OO系统中的同源滥用(1/2) C++友元函数:抵消了封装带来的好处 C++的友元极大地违反了封装边界。它是类边界之外的组件,可以存取类的对象的私有元素; 友元可用于测试对象

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档