软件工程导论class13面向对象方法学引论

上传人:nu****n 文档编号:253315614 上传时间:2024-12-11 格式:PPT 页数:41 大小:632.50KB
收藏 版权申诉 举报 下载
软件工程导论class13面向对象方法学引论_第1页
第1页 / 共41页
软件工程导论class13面向对象方法学引论_第2页
第2页 / 共41页
软件工程导论class13面向对象方法学引论_第3页
第3页 / 共41页
资源描述:

《软件工程导论class13面向对象方法学引论》由会员分享,可在线阅读,更多相关《软件工程导论class13面向对象方法学引论(41页珍藏版)》请在装配图网上搜索。

1、,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,软件工程导论 第,13,课,第,9,章 面向对象方法学引论,发展概述,面向对象并非是一个新的概念,实际上它已有,30,多年的历史。寻其根源可追溯到,60,年代的挪威,当时挪威计算中心的,Kristen Nygaard,和,Ole-Johan Dahl,开发了一种称作,Simula67,的语言。,Simula67,首次引入了类、协同程序和子类的概念,这很象今天的面向对象语言。,,7

2、0,年代中期,,Xerox Palo Alto,研究中心的研究人员设计了,Smalltalk,语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及相关的各个方面都是面向对象的。,,但是,面向对象的推广很慢。例如:,Samlltalk,的成果直到,1981,年,8,月因,Byte,杂志的介绍才为外界所知,许多软件开发人员了解,Samlltalk,时,都把它看作是一个窗口系统,而不是程序设计技术的一次革命。,,80,年代,,C,成为很受欢迎的程序设计语言,它不仅可用在微机上,还可用在多种结构的系统和环境中。,80,年代早期,,AT&T,贝尔实验室的,Bjarne Stroustrup,把

3、,C,语言扩展为支持面向对象程序设计的,C++,。在,C++,中,程序员可以在其熟悉的语言环境下学习掌握面向对象的程序设计技术,而不必去探究一种新的语言和环境。,,自,90,年代以来,软件与硬件之间的差距至少有两代处理器之多,并且这种差距还在增大。当软件系统变得更加复杂时,常规软件工具、技术和概念已不足以应付,从而使软件开发者陷入了困境。但面向对象的方法能够控制软件的复杂性,从而促进了面向对象的发展,掀起了一股“面向对象”热。,9.1.1,面向对象方法学的要点,OOM,的出发点和基本原则:,,尽可能,模拟人类习惯的思维方式,,使描述问题的,问题空间,与实现解法的,解空间,在结构上尽可能,一致,

4、。,,面向对象方法是一种以,数据和信息,为主线,把数据和处理相结合的方法:,,面向对象方法,把对象作为由数据及可以施加在这些数据上的操作所构成的统一体,9.1.1,面向对象方法学的要点,解空间与问题空间的,“,语义断层,”,,对象,,解空间对象和问题空间对象,,解空间对象的呆板,,问题空间对象,具有,静态属性,又具有,动态行为,,OOM,的,4,个要素,(1),对象,(object),:世界由对象组成。,,(2),类,(class),:具有相同属性和操作的对象可划分为类; 单个对象可视为某一类的实例,(instance),,(3),继承,(inheritance),:类可分层下层子类与上层父类

5、有相同特征,称为继承,,(4),消息,(message),:对象间只能通过发送消息进行联系, 外界不能处理对象的内部数据,只能通过消息,,基于对象(,objects,-,based,)方法,,使用对象,-,消息,,基于类(,class-based,)方法,,使用类,-,对象,-,消息,,面向对象(,objects-based,)方法,,使用类,-,对象,-,消息,-,继承,,9.1.2,面向对象方法学的优点,与人类习惯的思维方式一致,,稳定性好,,可重用性好,,可维护性好,,注意,:,OOM,并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件

6、的质量。,,1,与人类习惯的思维方式一致,传统方法,:面向过程设计,以计算为核心,数据与操作分离,不易理解。,,②,OOM,:以,object,为核心,,,基本原理,:使用现实世界的概念抽象地思考问题从而自然地解决问题,强调对现实概念的模拟而不强调算法。,,面向对象方法学的,基本原则,,是按照人们习惯的思维方式建立问题域的模型,开发出尽可 能直观、自然地表现求解方法的软件系统。,,Class,:由特殊到一般的归纳,(induction),,Inheritance,:由一般到特殊的演绎,(deduction),,2,稳定性好,传统方法:结构依赖于功能,不稳定。,,,OOM,:以,object,模

7、拟实体,以对象间的联系刻画实体间的联系。需求变化不会引起结构的整体变化,只需做一些局部修改。因为实体相对稳定,故系统也相应稳定。,,,,3,可重用性好,传统方法:通过建立标准函数库来重用软构件。但标 准函数缺少必要的,“,柔性,”,,难以适应不同场合的不同需要。,,OOM,:封装性,信息隐蔽,独立性,,灵活性:一个,class,所有的,instances,都可重用它的代码;由派生出的新的,class,可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,4,较易开发大型软件产品,构成软件系统的每个对象就象一个微型程序,有自己的数据、操作、功能、用途。把一个大型软件产品分解成一系列本质上

8、相互独立的小产品处理,降低了技术难度。,,便于管理,5,可维护性好,传统方法:可维护性是最令人头痛的问题。,,OOM,:从以下几方面改善了可维护性,,(1),稳定性好,:需求的变化不牵动全局,只需局部修改;,,(2),容易修改,:,Class,独立性强:只要修改不涉及,class,的对外接口,则内部修改完全不影响外部调用;,,继承,(Inheritance),和多态性,(polymorphism),使其易被修改和扩充;,,(3),容易理解、容易测试、调试,5,可维护性好,(3),容易理解,,符合人的思维习惯,软件系统结构与问题空间的结构基本一致,便于理解,,派生类只要理解新生部分,理解量少,,

9、(4),容易测试、调试,,调试只对新派生类进行,类独立性强,只对类内部进行调试,比较容易。,,9.2,面向对象的概念,9.2.1,对象,,在应用领域中,有意义的、与所要解决的问题有关系的,任何事物,都可以作为对象,,对象既可以是具体的物理实体的抽象,也可以是人为的 概念,或者是任何有明确边界和意义的东西。,,例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款、借款等等,都可以作为一个对象。,9.2.1,对象,由于客观世界中的实体通常都具有静态的属性,又具有动态的行为,,面向对象方法学中,的对象是,由描述该对象属性数据以及可以对这些数据施加的所有操作封装在一起的统一体。,,从形式化角

10、度看:,,对象,::=,,其中:,ID,是对象的标识或名字,,MS,是对象中的数据集合,,DS,是对象中的数据结构,,MI,是对象受理的消息名集合。,,1,对象的形象表示,对象很像录音机,,,2,对象的定义,从不同的角度给对象不同的定义,,定义,1,:对象是具有相同状态的一组操作的集合。,,定义,2,:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的 能力,,,定义,3,:对象,::=,,依次表示名字操作集合数据结构 对外接口,,,,3,对象特点,①,以数据为中心,,不设与数据无关的操作;,,②,Object,主动处理而不被动地等待被处理,外部只能通过,me

11、ssage,请求操作;,,③,具有封装性,:外部操作时,无须知道该,object,内部的数据结构及算法;,,④,具有并行性,:不同,object,各自独立地处理自身数据,彼此间仅通过传递,message,完成通信;,,⑤,模块独立性好,:内聚强、耦合松,,,,,其他概念,1,类,:是对具有相同数据和相同操作的一组相似对象的定义。 例 人、圆,,是对象的抽象,是一种对象模型,,2,,实例,:是由某个特定的类所描述的一个具体对象。,,类是建立对象时使用的模板,用这个模板建立的一个具体对象,就是类的实例。,,对象既可以是一个具体的对象,也可以泛指一般的对象;而实例只能是一个具体的对象,。,,,,,3

12、,消息,:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。由,3,部分组成:接受消息的对象、消息选择符,(,名,),、零个和多个变元。,,4,方法,:是对象所能执行的操作;即类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。,,5,,属性,:是类中所定义的数据,是对客观实体所具有的性质的抽象,,,,,6,封装,:是把某个事务包起来,使外界不知道该事物的具体内容。,,封装的条件:,,(1),有一个清晰的边界,,(2),有确定的接口。接口就是对象可以接受的消息。,,(3),受保护的内部实现,继承继 继承继 7 继承,,继承是子类自动地共享基类中定义的数

13、据和方法的机制,其特性是:一个类的上层可以有父类,下层可以有子类。,,继承具有传递性,如果类,C,继承类,B,,类,B,继承类,A,,则类,C,继承类,A,。,,当类等级为树形结构时,类的继承是单继承;当允许一个类有多个父亲时,类的继承是多重继承。,,,,继承性的优点,,共享程序代码和数据结构,大大减少程序中的冗余信息,提高软件的可重用性。,,便于软件修改维护。当需要扩充原有的功能时,派生类的方法可以调用其基类的方法,并在此基础上增加必要的程序代码;当需要完全改变原有的算法时,可以在派生类中实现一个与基类方法同名而算法不同的方法;当需要增加新的功能时,可以在派生类中实现一个新的方法。,,“站在

14、巨人的肩头上”。用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。,,8 多态性,,多态性是指,子类对象可以像父类对象,那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象,。,,在,C++,语言中,多态性是通过虚函数来实现的。虚函数机制使得程序员能在一个类等级中使用相同函数的 多个不同版本,称为,动态联遍,,也叫滞后联编。,,多态性机制不仅增加了面向对象软件的灵活性,进一 步减少了信息冗余,而且显著提高了软件可重用性和 可扩充性。,,,,,,9 重载,,函数重载是指在同一作用域内的若干个参数特征不同 的函数可以使用相同的函数名字,,运算符重载是

15、指同一个运算符可以施加与不同类型的 操作数上面,当参数类型不同或被操作数的类型不同 时,实现函数的算法或运算符的语义是不相同的,,在,C++,语言中函数重载是通过静态联编(也叫先前联编)实现的,也就是在编译时根据函数变元的个数和 类型,决定到底使用函数的哪个实现代码;对于重载 的运算符,同样是在编译时根据被操作数的类型,决 定使用该运算符的哪种语义,,,,,,,,9.3,面向对象建模,为了更好地理解问题,采用建立模型的方法,,模型是为了理解事物而对事物作的一种抽象,是对事物的一种无歧义的书面描述。,,模型是一种,把知识规范地表示出来的,工具,,,,用面向对象的方法建立模型,,9.3,面向对象建

16、模,用面向对象方法开发软件,通常要建立,3,种形式的模型:,,描述系统,数据,结构的,对象模型,,描述系统,控制,结构的,动态模型,,描述系统,功能,的,功能模型,,一个典型的软件系统使用,数据结构,(对象模型),,执行操作,(动态模型),并完成数据值的,变化,(功能模型),,,,9.4,对象模型,关于建模语言,,模型通常由一组,图示符号,和组成这些符号的,规则,组成, 定义和描述问题域的术语和概念,,为建立模型,需要用适当的,语言,来表达模型,,建模语言由,记号,(即模型中使用的符号)和使用这些记号的,规则,(语法、语义)组成,,,,,,,,,,9.4.1,类图的基本符号,类图描述类、类与类

17、之间的,静态关系,,是一种静态模型,是创建其他,UML,图的基础,, 一个系统由多张类图来描述,一个类也可以出现在几张类图中,,,,,,,,1,定义类,UML,中类的图形符号为长方形,用两条横线把长方形分成上、中、下,3,个区域(下面两个区域可以省略),,为类命名时应该遵守以下几条,准则,:,,(1),使用标准术语,,(2),使用具有确切含义的名词,,(3),必要时用名词短语作为名字,,,,,,,,2,定义属性,UML,描述属性的语法如下:,,可见性 属性名:类型名,=,初值,{,性质串,},,属性的可见性(即可访问性)通常有下述,3,种:,,–,公有的(,public,) (,+,),

18、,–,私有的(,private,) (,-,),,–,保护的(,protected,)(,#,),,类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型,,用花括号括起来的性质串明列出该属性所有可能的取值,,例:,-,管理员:,String,=,“,未定”,,3,定义服务,UML,描述操作的语法格式如下:,,可见性 操作名,(,参数表,),:返回值类型,{,性质串,},,操作可见性的定义方法与属性相同。,,参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:,,参数名:类型名=默认值,,当操作的调用者未提供实在参数时,该参数就使用默认值。,,9.4.2,表示关系

19、的符号,类与类之间通常有,关联、泛化(继承)、依赖,和,细化,等,4,种关系,,1,关联,,关联表示两个类的对象之间存在某种语义上的联系,,,,,,9.4.2,表示关系的符号,普通关联:,,最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。,,例如,作家使用计算机,我们就认为在作家和计算机之间存在某种语义连接,因此在类图中应该在作家类和计算机类之间建立关 联关系,,,,,,,,,黑三角表示关联方向,,,(2),关联的角色,在任何关联中都会涉及到参与此关联的对象所扮演的角色, 在某些情况下,显式标明角色,名有助于别人理解类图,,例:一个人与另一个人结婚,必然一个人扮演丈夫的角色, 另一个人扮演妻子的角色。如果没有显式标出角色名,则意 味着用类名作为角色名。,,,,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  sobing.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!