电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

(软件工程)第8章面向对象方法学引论(第一堂课导入)

49页
  • 卖家[上传人]:繁星
  • 文档编号:88148610
  • 上传时间:2019-04-20
  • 文档格式:PPT
  • 文档大小:12.93MB
  • / 49 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第8章 面向对象方法学引论,软件工程,导入,请用C+、Java、C#等任意一种面向对象语言实现一个计算机控制台程序,要求输入两个数和运算符号(+、-、*、/),得到结果。,命名不规范,做3次无用判断,除数是0? 非字符?,用计算机的思维思考 不容易维护、修改和复用,导入,三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下。曹操大悦,于是大宴众文武,在席间,诗兴大发,不觉吟到:“喝酒唱歌,人生真爽” 众文武齐呼:“丞相好诗!” 于是一臣子速命印刷工匠刻板印刷,一遍流传天下。,喝酒唱歌,人生真爽,导入,样张给曹操一看,曹操感觉不妥当,说道:“喝与唱,此话过俗,应改为对酒当歌较好!” 于是此臣就命印刷工匠重新过来。工匠眼看连夜刻板之功彻底白费,心中叫苦不迭。只得照办。,喝酒唱歌,人生真爽,对酒当歌,人生真爽,导入,样张再次出来让曹操过目,曹操细细一品,觉得还是不好,说:“人生真爽太过直接,应改为问语才够意境,因此应改为对酒当歌,人生几何?” 当臣转告工匠时,工匠晕倒,喝酒唱歌,人生真爽,对酒当歌,人生真爽,对酒当歌,人生几何?,问题出在哪里?,没

      2、有活字印刷,要修改字,必须整个刻板都重新刻,导入,1.要改,只需要改要之字可维护性; 2.这些字并非无用,完全可以在后面的印刷中重复使用可复用; 3.此诗若要加字,只需另刻字加入就可以可扩展; 4.字的排序可以横可竖,移动活字即可灵活性好。,喝酒唱歌,人生真爽,对酒当歌,人生真爽,对酒当歌,人生几何?,导入,完成一个windows计算器,刚才的代码是否能够复用呢? 不能简单的复制和粘贴,当代码中重复的代码多到一定程度,维护的时候,可能就是一场灾难。 编码的一条原则是:用尽可能的办法去避免重复。,让业务逻辑和界面逻辑分开,降低耦合度,运算类,让业务逻辑和界面逻辑分开,降低耦合度,客户端代码,利用面向对象的“封装”思想,完成了逻辑和界面的分离。 但是如果增加一个开跟运算如何更改?,让业务逻辑和界面逻辑分开,降低耦合度,运算类,增加sqrt分支,不足: 1.需要其他未修改的加减乘除都来参加编译; 2.容易进行误操作或篡改。,将运算类进一步分解,运算类,将运算类进一步分解,加减乘除类,如何让计算器知道用哪个算法?,实例化对象,简单运算工厂类,实例化对象,客户端代码,修改加法功能: 1.修改Op

      3、erationAdd运算子类; 2.修改运算工厂类。,提纲,8.1 面向对象方法学概述,(1)出发点,模拟人类习惯的思维方式 基于功能的分解 基于对象的分解 (机器世界的观点) (客观世界的观点),(2)要点,人的认识规律 对象-(分类) 类-(分层) 继承- (交互) 消息通信 OO ( Object Oriented ) = Object + Class + Inheritance + Communication with Message 面向对象 = 对象 + 类 + 继承 + 消息通信,(3)主要内容,整个软件是由各种各样的对象构成的; 每个对象都有各自的内部状态和运动规律; 根据对象的属性和运动规律的相似性可以将对象分类; 不同对象的组合及其间的相互作用和联系构成了系统; 对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应。,(4)优点,与人类习惯的思维方式一致 稳定性好 可重用性好 较易开发大型软件产品 可维护性好,(5)过程,结构化范型软件生命周期 (1)陈述需求阶段 (2)规格说明(分析)阶段 (3)设计阶段 (4)实现阶段 (5)维护阶段,面向对象范型

      4、软件生命周期 (1)陈述需求阶段 (2)面向对象分析阶段 (3)面向对象设计阶段 (4)面向对象实现阶段 (5)维护阶段,(5)过程,结构化范型软件生命周期 (1)陈述需求阶段 (2)规格说明(分析)阶段 (3)设计阶段 (4)实现阶段 (5)维护阶段,确定软件产品应该“做什么”,将产品分解为若干模块,设计数据结构和算法,(5)过程,面向对象范型软件生命周期 (1)陈述需求阶段 (2)面向对象分析阶段 (3)面向对象设计阶段 (4)面向对象实现阶段 (5)维护阶段,确定对象,对象是面向对象的模块,因此分析阶段就开始了结构设计的工作,(5)过程,两种软件生命周期对比 结构化范型开发软件,在分析阶段和设计阶段直接有很大转变;分析阶段的目的是确定产品应该“做什么”,而设计阶段的目的是确定“怎样做”,两个阶段有明显不同 面向对象范型开发软件,“对象”从一开始就进入了软件生命周期,软件工程师在分析阶段就把对象提取出来,在设计阶段对其进行设计。在整个开发过程中使用统一概念对象,阶段间转变比较平缓,减少错误。,提纲,8.2 面向对象的概念,(1)对象 对象的理解 在应用领域中有意义的、与所要解决的问

      5、题有关系的任何事物都可以作为对象(Object)。 可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。 例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款和借款等,都可以作为一个对象。 对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统保存有关它的信息并具与它进行交互的能力。,8.2 面向对象的概念,(1)对象 由于客观世界中的实体通常都既具有静态的属性,又具有动态的行为,因此,面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。 对象可以作的操作表示它的动态行为,在面向对象分析和面向对象设计中,通常把对象的操作称为服务或方法。,8.2 面向对象的概念,(1)对象 对象的形象表示,8.2 面向对象的概念,(1)对象 对象的定义 定义(汉语字典中的定义) 被呈现的或被感官识别的物体。 定义1(面向对象程序设计的角度) 对象是具有相同状态的一组操作的集合。 定义2(面向信息模拟的角度) 对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。对象是对属性

      6、值和操作的封装。,8.2 面向对象的概念,(1)对象 对象的定义 定义3(形式化描述) 对象= 其中, ID是对象的标识或名字 IDentification MS是对象中的操作集合 Manipulation Set DS是对象的数据结构 Data Structure MI是对象受理的消息名集合(即对外接口) Message Interface,8.2 面向对象的概念,(1)对象 对象的定义 定义4(结论) 对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。 有唯一的名字来标识 向外界提供一组服务 对象中的数据表示对象的状态 对象的状态只能由该对象的操作来改变 通过发送消息实现对象的通信 对象根据消息模式找出与之匹配的方法并执行该方法来响应消息,8.2 面向对象的概念,(1)对象 对象的特点 以数据为中心。操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态有关。 对象是主动的。为了完成某个操作,必须通过它的公有接口向对象发消息,请求它执行它的某个操作,处理它的私有数据。 实现了数据封装。私有数据对外是隐藏的、不可见的,对私有数

      7、据的访问或处理只能通过公有的操作进行。 本质上具有并行性。不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。因此,本质上具有并行工作的属性。 模块独立性好。对象是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。,8.2 面向对象的概念,1. 类(class) 现实世界中存在的客观事物有些是彼此相似的,例如,张三、李四、王五虽说每个人职业、性格、爱好、特长等等各有不同,但是,他们的基本特征是相似的,都是黄皮肤、黑头发、黑眼睛,于是人们把他们统称为“中国人”。人类习惯于把有相似特征的事物归为一类,分类是人类认识客观世界的基本方法。,8.2 面向对象的概念,在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。 以上先详细地阐述了对象的定义,然后在此基础上定义了类。也可以先定义类再定义对象,例如,可以像下面这样定义类和对象: 类是支持继承的抽象数据类型,而对象就是类

      8、的实例。,8.2 面向对象的概念,2. 实例(instance) 实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽象,类在现实世界中并不能真正存在。 实际上类是建立对象时使用的“样板”,按照这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。 当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象。,8.2 面向对象的概念,3. 消息(message) 消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述3部分组成: 接收消息的对象; 消息选择符(也称为消息名); 零个或多个变元。 4. 方法(method) 方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C+语言中把方法称为成员函数。,8.2 面向对象的概念,5. 属性(attribute) 属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。 在C+语言中把属性称为数据成

      9、员 6. 封装(encapsulation) 从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。,8.2 面向对象的概念,在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些数据和代码。 使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。,8.2 面向对象的概念,综上所述,对象具有封装性的条件如下: (1) 有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。 (2) 有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。 (3) 受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。,8.2 面向对象的概念,封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。 对象类实质上是抽象数据类型。类把数据说明和操作说明与数据表达和操作实现分离开了,使用者只需知道它的说明(值域及可对数据施加的操作),就可以使用它。 7. 继承(inheritance) 广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。,8.2 面向对象的概念,面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组成一个层次结构的系统(类等级):一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的全部描述(数据和操作)。 继承具有传递性。因此,一个类实际上继承了它所在的类等级中在它上层的全部基类的所有描述,也就是说,属于某类的对象除了具有该类所描述的性质外,还具有类等级中该类上层全部基类描述的一切性质。,8.2 面向对象的概念,8.2 面向对象的概念,当一个类只允许有一个父类时,也就是说,当类等级为树形结构时,类的继承是单继承;当允许一个类有多个父类时,类的

      《(软件工程)第8章面向对象方法学引论(第一堂课导入)》由会员繁星分享,可在线阅读,更多相关《(软件工程)第8章面向对象方法学引论(第一堂课导入)》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.