资源描述
软件工程,任课教师:程丽计算机与信息学院,第八章面向对象基础,8.1面向对象的概念8.2面向对象的开发方法,第八章面向对象基础,课程的任务、目的和基本要求理解面向对象的基本概念了解面向对象的开发方法,第八章面向对象基础,1.为什么引入面向对象的概念?,2.传统软件工程方法问题1、难于解决软件重用;2、难于适应需求变化;3、分析与设计概念及表示法不一致,第八章面向对象基础,3.如何引入面向对象的概念?在解题空间中引入“对象”概念,使之逼真地模拟问题空间中的客观实体,从而达到与人类的思维习惯相一致。,第八章面向对象基础,传统方法分析与设计之间的鸿沟,第八章面向对象基础,传统方法与面向对象方法的区别,面向机器面向代数面向过程面向数据面向人面向文件面向信息面向应用面向功能面向数据流,面向对象是软件方法学的返朴归真,软件科学的发展历程中出现过许多“面向”,软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真。,面向对象,8.1.1面向对象的基本概念8.1.2面向对象的特征8.1.3面向对象的要素,第八章面向对象基础8.1面向对象的概念,1.什么是对象现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现,第八章面向对象基础8.1.1面向对象的基本概念对象,2.对象的含义在现实世界中:是客观世界中的一个实体在面向对象程序中:表达成计算机可理解、可操纵、具有一定属性和行为的对象在计算机世界中:是一个可标识的存储区域,第八章面向对象基础8.1.1面向对象的基本概念对象,3.对象的特点对象是构成系统的一个基本单位。对象由一组属性和对这组属性进行操作的一组服务构成。,第八章面向对象基础8.1.1面向对象的基本概念对象,4.属性属性是用来描述对象静态特征的一个数据项。5.服务服务是用来描述对象动态特征的一个操作序列。,第八章面向对象基础8.1.1面向对象的基本概念对象,6.关于对象两点说明对象只描述事物本质的与系统目标有关的特征。分析过程中过滤掉非本质的与系统目标无关的因素对象的属性和服务不可分,对象的属性值只能够由对象自身的服务来读取和修改,第八章面向对象基础8.1.1面向对象的基本概念对象,1.什么是类具有共同属性和行为的对象的抽象,第八章面向对象基础8.1.1面向对象的基本概念类,2.一般类和特殊类如果类A具有类B的全部属性和全部服务,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。,第八章面向对象基础8.1.1面向对象的基本概念类,消息对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格说明消息内容通常包含接收方及请求接收方完成的功能信息发送方发出消息,请求接收方响应接收方收到消息后,经过解释,激活方法,予以响应,第八章面向对象基础8.1.1面向对象的基本概念消息,所谓方法,实际上是类对象上所有的各种操作。方法描述了对象执行操作的算法,响应消息的方法。,第八章面向对象基础8.1.1面向对象的基本概念方法,第八章面向对象基础8.1.2面向对象的特征,1.对象唯一性2.分类性3.继承性4.多态性,1.什么是继承特殊类拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。,第八章面向对象基础8.1.2面向对象的特征,2.继承的特点继承意味着自动地拥有,或称隐含地复制,由继承机制保证。继承简化了人们对事物的认识和描述,非常有益于软件复用,是OO技术提高软件开发效率的重要原因之一。,第八章面向对象基础8.1.2面向对象的特征,3.一般特殊结构由一组具有继承关系的类所组成的结构称作一般-特殊结构。它是一个以类为结点,以继承关系为边的连通的有向图。,第八章面向对象基础8.1.2面向对象的特征,4.聚合一个(较复杂的)对象由其它若干(较简单的)对象作为其构成部分,称作聚合。聚合刻画了现实事物之间的构成关系。,第八章面向对象基础8.1.2面向对象的特征,5.整体-部分结构由一组具有聚合关系的类所形成的结构称作整体-部分结构。它是一个以类为结点,以聚合关系为边的连通有向图。,第八章面向对象基础8.1.2面向对象的特征,6.多态不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态。,第八章面向对象基础8.1.2面向对象的特征,7.多态的效果用户发送一个通用的消息,而实现的细节则由接收对象自行决定。,第八章面向对象基础8.1.2面向对象的特征,8.多态性的作用增强了操作的透明性,可理解性和可扩展性增强了软件的灵活性和重用性,第八章面向对象基础8.1.2面向对象的特征,第八章面向对象基础8.1.3面向对象的要素,1.抽象2.封装性3.共享性4.强调对象结构而不是程序结构,关于封装封装是软件开发方法的重要原则,有两个涵义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐蔽)。,第八章面向对象基础8.1.3面向对象的要素,封装的重要意义使对象能够集中而完整地描述并对应一个具体的事物;体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据,避免了外部错误对它的“感染”;对象内部的修改对外部的影响很小,减少了修改引起的“波动效应”。,第八章面向对象基础8.1.3面向对象的要素,1.什么是面向对象的开发方法面向对象的开发方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。,第八章面向对象基础8.2面向对象的开发方法,第八章面向对象基础8.2面向对象的开发方法,2.面向对象的开发方法包括哪些内容,第八章面向对象基础8.2面向对象的开发方法,3.面向对象的开发方法涉及软件生命周期的各个阶段,第八章面向对象基础8.2面向对象的开发方法,4.面向对象有哪些开发方法,Berard方法Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法,5.面向对象开发方法的异同体现在以下几个方面概念表示法系统模型开发过程可用性技术支持,第八章面向对象基础8.2面向对象的开发方法,过程模型,对象层结构层主题层属性层服务层,不同的方法,不同的OOA模型,Coad-Yourdon方法,动态模型静态模型,逻辑模型物理模型,Booch方法,Shlaer-Mellor方法,信息模型,状态模型,Rumbaugh方法(OMT),对象模型,动态模型,功能模型,6.不同面向对象的开发方法的相似步骤(1)使用基本需求作为选择类和对象的指南;(2)为对象标识属性和操作;(3)定义组织类的结构和层次;(4)建造对象-关系模型;(5)建造对象-行为模型。,第八章面向对象基础8.2面向对象的开发方法,第八章面向对象基础8.2面向对象的开发方法,
展开阅读全文