软件工程面向对象方法学概述_第1页
软件工程面向对象方法学概述_第2页
软件工程面向对象方法学概述_第3页
软件工程面向对象方法学概述_第4页
软件工程面向对象方法学概述_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程面向对象方法学概述软件工程学系列2022/8/252主要内容面向对象方法学概述面向对象的概念面向对象建模对象模型 动态模型 功能模型3种模型之间的关系前一页2022/8/253面向对象方法学概述模拟人类认识和解决问题的方式遇到问题认识个体对问题空间(问题域)进行划分归类找出每个类中的基本特征抽象找出实现的解法(求解域)2022/8/254面向对象方法学要点将客观世界遇到的问题与计算机中求解建立联系客观世界中的实体抽象为问题域中的对象计算机中的实体称为解空间对象面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体面向对象方法把程序看成对象的集合2022/8/255软件工

2、程的新途径前一页面向对象方法学要点 (1)认为客观世界是由各种对象组成的,任何事物都是对象。因此,面向对象的软件是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象的组合而成。 2022/8/256软件工程的新途径前一页面向对象方法学要点 (2)把所有对象都划分成各种对象类(Class,简称为类),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。2022/8/257软件工程的新途径前一页面向对象方法学要点 (3)按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。在这种层次结构中,通常下层的派生类具有和

3、上层的基类相同的特性(包括数据和方法),这种现象称为继承(Inheritance)。2022/8/258软件工程的新途径前一页面向对象方法学要点 (4)对象彼此之间仅能通过传递消息互相联系,对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作。即一切局部于该对象的私有信息,都被封装在该对象的定义中,这就是“封装性”。 2022/8/259软件工程的新途径前一页面向对象方法学要点面向对象的方法学可以用下列方程表示:OO=Objects+Classes+Inheritance+ Communication with messages 2022/8/2510软件工程的新途径前一页面向对象方法

4、学优点(1)与人类习惯的思维方法一致。 传统的程序设计技术将数据和代码分离,而忽略了数据和操作之间的内在联系。 但实际上用计算机解决的问题都是现实世界中的问题,这些问题都是由相互关联的事物组成。因此,应该把描述事物的数据和对该事物的操作放在一起。 面向对象便是如此。2022/8/2511软件工程的新途径前一页面向对象方法学优点(2)稳定性比较好。 传统的软件开发方法依赖于功能分解,当功能的需求发生变化时则引起软件结构的整体修改。而用户需求的改变大部分是针对功能的,因此传统方法不稳定。 面向对象方法基于对象的构造,因此对系统功能的改变不会引起结构性的变化;又现实中的实体是相对稳定的,以对象为中心

5、构造的软件系统也是稳定的。2022/8/2512软件工程的新途径前一页面向对象方法学优点(3)可重用性好。 重用:也称为再用或复用,是指同一事物不经修改或稍加改动就多次重复使用,是提高生产率的最主要的方法。 传统的软件技术开发的模块,要重用模块的同时,须重用相应的数据,当数据发生变化时,则重用将变得很复杂。 采用面向对象方法开发的对象,具有很强的独立性,满足高内聚要求,因此是理想的可重用部分。2022/8/2513软件工程的新途径前一页面向对象方法学优点(4)可维护性好。 面向对象的软件稳定性好面向对象的软件比较容易修改面向对象的软件容易理解易于测试和调试2022/8/2514喷泉模型喷泉模型

6、是面向对象软件过程的典型模型采用面向对象方法开发软件时,重点是面向问题的对象的分析和定义,这个过程是不断充实和反复迭代的,“喷泉”体现了面向对象软件开发过程迭代和无缝的特性2022/8/2515面向对象的概念对象 其他概念 主要内容前一页2022/8/2516对象在应用领域中有意义的、与要解决的问题有关系的任何事物都可以作为对象对象&实体:对象是问题域中某个实体的抽象例如:学生是个对象,学生王三是实体实体具有静态的属性和动态的行为对象由描述属性的数据和对数据的操作构成2022/8/2517前一页基本概念对象的形象表示2022/8/2518对象的形象表示对象类似于录音机录音机:通过使用不同的按键

7、完成不同的功能对象:通过对象与外界的界面进行操作对象经过操作后状态发生变化2022/8/2519前一页基本概念对象的定义定义1:对象是具有相同状态的一组操作的集合。定义2:对象是对属性值和操作的封装。2022/8/2520前一页基本概念对象的定义定义3:对象:= 其中:ID是对象的标识或名字; MS是对象中的操作集合; DS是对象的数据结构; MI是对象受理的消息名集合 (即对外接口)。 这个定义是一个形式化的定义。 2022/8/2521对象的定义对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变,且只能由其他对象向该对象发送消息来改变2022/8/2522前一页基本概念用自

8、动机模拟对象2022/8/2523前一页基本概念对象的特点以数据为中心,操作围绕对其数据需要的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态有关。 对象是主动的,是进行处理的主体。为了完成某个操作,不能从外部直接加工它的私有数据,而是必须通过它的公有接口向对象发消息,请求执行它的某个操作,处理它的私有数据。 实现了数据封装,私有数据的完全被封装在盒子内部,对外是隐藏,不可见的,对私有数据的访问或处理只能通过公有的操作进行。2022/8/2524前一页基本概念对象的特点本质上具有并行性,不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。 模块独立性好。

9、对象是面向对象的软件的基本模块,对象内聚性相当强,对象之间的耦合必然比较松。 2022/8/2525前一页基本概念其他概念1. 类(Class) “类”就是对具有相同数据和相同操作的一组对象的定义。也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。 分类是人类认识客观世界的基本方法。2022/8/2526前一页基本概念其他概念2. 实例(Instance) 实例就是由某个特定的类所描述的一个具体的对象。实际上类是建立对象时使用的“样板”,按照这个样板所建立的每个具体的对象,就是类的实际例子,通常称为实例。 当使用“对象”这个术语时,既

10、可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象。 2022/8/2527前一页基本概念其他概念3. 消息(Message) 消息,就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述三部分组成: 接收消息的对象 消息选择符(也称为消息名) 零个或多个变元 2022/8/2528前一页基本概念其他概念4. 方法(Method) 方法,就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C+语言中把方法称为成员函数。 2022/8/2529前一页基本概念其他概念5. 属

11、性(Attribute) 属性,就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。 例如,Circle类中定义的代表圆心坐标,半径,颜色等的数据成员,就是圆的属性。 2022/8/2530前一页基本概念其他概念6. 继承(Inheritance) 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承子类自动地共享基类中定义的数据和方法的机制。 面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组成一个层次结构的系统:一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继

12、承其父类的全部描述。2022/8/2531前一页基本概念其他概念6. 继承(Inheritance) A,B两类为例,其中B类是从A类派生出来的子类,它除了具有自己定义的特性(数据和操作)之外,还从父类A继承特性,当创建A类的实例a1的时候,a1以A类为样板建立实例变量(在内存中分配所需要的空间),但是它并不从A类中拷贝所定义的方法。 2022/8/2532前一页基本概念实现继承机制的原理2022/8/2533前一页基本概念其他概念7. 多态性(Polymorphism) 多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。 即在类等级的不同层次中可以

13、共享(公用)一个行为(方法)的名字,不同层次中的每个类各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。 2022/8/2534前一页基本概念其他概念7. 多态性(Polymorphism) 多态性机制增加了灵活性,减少了信息的冗余,显著提高了软件的可重用性和可扩充性。 在C+中多态性是通过虚函数来实现的。2022/8/2535前一页基本概念其他概念8. 重载(Overloading) 有两种重载:函数重载是指在同一作用域内的若干个不同类型的操作数上面;运算符重载是指同一个操作符可以施加于不同的操作数。 重载进一步提高了面向对象系

14、统的灵活性和可读性。 2022/8/2536前一页面向对象建模 模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。 建模由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。 更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。 2022/8/2537面向对象建模建模可以减少系统的复杂程度模型提供了组织大量信息的有效机制建模比较容易暴露系统分析员的错误建模提供快速的原型亲身体验2022/8/2538前一页面向对象建模 用面向对象方法开发软件,通常需要建立三种形式的模型: 描述系统数据结构的对象模型 描述系统控制结构的动态

15、模型 描述系统功能的功能模型 这三个模型从不同的侧面反映了系统的内容,综合全面地反映了目标系统的需求。2022/8/2539前一页面向对象建模 用面向对象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本、最核心的。 2022/8/2540前一页对象模型 对象模型表示静态的,结构化的系统的“数据”性质。它反映对象以及对象彼此间的关系的映射,描述系统的静态结构。面向对象方法强调围绕功能来构造系统。 为了建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。 2022/8/2541建模语言的发展20世纪70年代中期面向对象建模语言问世至90年代中期其数量已增至5

16、0多种1994年8月UML的开发正式开始1996年6月和10月,Booch、Rumbaugh和Jacobson经过不懈努力,UML0.9和0.91版出版1997年11月OMG国际对象管理组织正式采纳了UML1.12022/8/2542UML特点:UML统一了各种方法对不同类型的系统、不同的开发阶段以及不同内部概念的不同观点,有效消除建模语言的差异UML建模能力比其他建模方法都强UML是一种建模语言,不是开发过程2022/8/2543UMLUML由视图、图、模型元素等构成。一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(view)。UML语言定义了五种类型,8种不同的图,把它

17、们有机的结合起来就可以描述系统的所有视图。2022/8/2544UML视图类图:描述各种类及其关联对象图:描述系统中的各种对象及其相互关系用例图:从用户角度描述系统功能,并指出各功能的操作者。组件图:系统的执行视图实施图:从软件组件到系统物理节点的映射协作图:一组类及这些类发送和接收的消息顺序图:描述类之间的交互状态图:描述执行操作时类的状态和响应2022/8/2545类图的基本符号类图描述类及类与类之间的静态关系类的图形符号为长方形,其中被两条横线分成3个区域,分别是名字、属性和服务属性和服务属于可选区域2022/8/2546类的图形符号2022/8/2547类图的基本符号类名的命名原则使用

18、标准术语使用具有确切含义的名词必要时用名词短语作名字2022/8/2548定义类属性属性语法格式: 可见性 属性名:类型名 = 初值 性质串 可见性:公有(public):加号 +私有(private):减号 -保护(protected):井号#2022/8/2549定义类属性属性名:每个属性都必须有名字属性名之后的类型名表示该属性的数据类型创建类的实例时须给其属性赋值花括号中的性质串明确地列出该属性所有可能的取值2022/8/2550定义类属性举例如:“发货单”类的属性“管理员”,描述如下: 管理员 : String = “ 未定 ”2022/8/2551举例:带有属性的课程类一个具有课程编

19、号、课程名称和学分的课程类Subject,其定义如右图:Subjectcodetitle: Stringcredits: Integer = 15 类Subject有3个属性,其中第一个属性code代表课程编号,没有指明它的类型,即尚未决定以什么样的形式存储课程编号。2022/8/2552定义服务语法格式:可见性 操作名(参数表):返回值类型性质串可见性:定义与属性相同例如:Gettitle ():String当操作的调用者未提供实在参数时,该参数使用默认值操作通常在类图中省略2022/8/2553例:完整定义的类Subjectcodetitle: Stringcredits: Integer

20、 = 15GetTitle() : String类名属性服务2022/8/2554前一页对象模型表示关系的符号 在面向对象分析和面向对象设计中,结构表示了问题域中的复杂关系,是对客观世界实体相互间关系的抽象。类-&-对象间的关系种类可以概括为: 关联、泛化(继承)、依赖、细化 2022/8/2555关系的种类 通常把两类对象之间的二元关系再细分为三种基本类型: ( 1 : 1):一对一 如班主任负责某班级 ( 1 : M):一对多 如教师教授课程 (M : M):多对多 如学生选修课程2022/8/2556前一页对象模型表示关系的图形符号1. 关联关系 关联关系反映对象之间存在某种语义上的联系

21、。(1)普通关联 最常见,类与类之间存在连接关系即可表示为普通关联,图示符号为连接类的直线。 关联是双向的,可以在直线的两个方向上分别标注名字,并加上表示关联方向的黑三角。2022/8/2557表示关系的图形符号作家计算机使用被使用*1*2022/8/2558表示关系的图形符号重数(multiplicity):表示在关联的直线两端,用以说明类有多少个对象与对方的一个对象连接如: 0 1 表示0到1个对象 * 表示0到多个对象2022/8/2559表示关系的图形符号(2)关联的角色为了清楚反映关联的对象中各个类的作用,可以在类的旁边标注角色2022/8/2560表示关系的图形符号(3)限定关联限

22、定关联一般用在一对多或多对多的关联中,可以把模型中的重数从一对多变成一对一,或从多对多变成多对一。限定词放在关联关系末端的一个小方框内2022/8/2561表示关系的图形符号(4)关联类使用关联类记录关联性质中的附加信息上图中原本一对多的关系变成了一对一的关系。2022/8/2562表示关系的图形符号2.聚集聚集也称为聚合,是关联的特例聚集反映类与类之间整体与部分的关系2022/8/2563聚集示例2022/8/2564表示关系的图形符号(1)共享聚集处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集为共享聚集如图9.10,在整体类旁标注空心菱形2022/8/2565表示关系的图形符

23、号(2)组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则称为组合聚集如图9.11在整体类旁标注实心菱形2022/8/2566表示关系的图形符号 3.泛化即继承关系,反映通用元素与具体元素在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。泛化关系反映“一般特殊”关系,高层类(即基类)说明一般性的属性,低层类(派生类)说明特殊属性。2022/8/2567表示关系的图形符号(1)普通泛化反映的是基本的继承关系;抽象类是父类,描述子类公共属性和行为,在图示的类名下标注abstract具体类均有自己的对象,且操作都有具体的实现2022/8/

24、2568表示关系的图形符号(2)受限泛化附加约束条件,进一步说明泛化关系的使用方法或扩充方法预定义的约束有: 多重、不相交、完全和不完全2022/8/2569表示关系的图形符号多重继承:一个子类可以同时多次继承同一个上层基类不相交继承:子类不能同时继承同一个基类完全继承:父类所有的子类都在类图中穷举出来不完全继承:与完全继承相反2022/8/2570表示关系的图形符号4.依赖和细化(1)依赖关系:两个模型元素,其中一个独立,另一个依赖于独立的模型元素UML类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类类B类A2022/8/2571表示关系的图形符号(2)细化关系两个模型元素A和

25、B描述同一事物,B是在A的基础上的更加详细的描述,则称B细化了A,或称A细化成了B符号为由B指向A一端为空心三角形的虚线分析类设计类反映不同阶段模型的关系2022/8/2572对象模型总结类图类的定义:类名、属性和服务的定义类之间关系的定义:关联关系使用被使用*1*2022/8/2573对象模型总结聚集关系:反映整体与部分共享聚集组合聚集*1*包含由.组成*2022/8/2574对象模型总结泛化关系:继承关系父类子类A子类B2022/8/2575对象模型总结依赖和细化 依赖类B类A细化分析类设计类2022/8/2576前一页动态模型 动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象

26、模型中的对象的合法变化序列。 2022/8/2577前一页动态模型术语 状态 所有对象都有自己的生命周期,在每个不同的阶段对象有不同的行为。 状态是对象在其生命周期中的某个特定阶段。 状态:是对对象属性的一种抽象。状态有持续性,占用一段时间间隔。 2022/8/2578前一页动态模型术语 事件 事件即是一个触发行为,是对引起对象从一种状态转换到另一种状态的现实世界中的事件的抽象。 事件就是引起对象状态转换的控制信息。 事件没有持续时间,表示时刻的概念,是瞬间完成的。2022/8/2579前一页动态模型术语 行为 所谓行为,是指对象达到某种状态时所做的一系列处理操作。这些操作是需要耗费一定的时间的。 UML中用状态图(状态转换图)来描绘对象的状态、触发状态转换的事件及对象的行为。2022/8/

温馨提示

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

评论

0/150

提交评论