软件工程导论(第9章)课件.ppt

上传人:牧羊曲112 文档编号:1786855 上传时间:2022-12-18 格式:PPT 页数:73 大小:1.32MB
返回 下载 相关 举报
软件工程导论(第9章)课件.ppt_第1页
第1页 / 共73页
软件工程导论(第9章)课件.ppt_第2页
第2页 / 共73页
软件工程导论(第9章)课件.ppt_第3页
第3页 / 共73页
软件工程导论(第9章)课件.ppt_第4页
第4页 / 共73页
软件工程导论(第9章)课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《软件工程导论(第9章)课件.ppt》由会员分享,可在线阅读,更多相关《软件工程导论(第9章)课件.ppt(73页珍藏版)》请在三一办公上搜索。

1、第9章:面向对象方法学引论,9.1 面向对象方法学概述9.1.1 面向对象方法学的要点 面向对象方法学的基本原则:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。,客观世界中的实体问题域中的对象;计算机中的实体解空间对象;解空间对象取决于程序设计语言: 汇编语言的对象:存储单元; 面向过程的高级语言的对象:变量、数组、记录、文件等; 面向对象的高级语言的对象:除上述元素外,还包括窗体、菜单、按钮、等等。,与传统方法不同,面向对象方法以数据为主线,将数据和操作方法封装在对象中,通过消息请求对象主动执行它的内部操作,改变其内部私有数据。,面向对象方法

2、具有四个要点: A认为客观世界是由对象组成; B把所有对象都划分成各种对象类(Class); C把若干对象类组成一个层次结构的系统(类等级); D对象彼此间仅通过传递消息互相联系。 OO = Objects + Class + Inheritance + Communication with message,9.1.2 面向对象方法的优点 1与人们习惯的思维方法一致; 2稳定性好; 3可重用性好; 4较易开发大型软件产品; 5. 可维护性好。,9.1.3 喷泉模型,9.2 面向对象的概念,9.2.1 对象,1、对象的形象表示,1)定义1:对象是具有相同状态的一组操作的集合。2)定义2:对象是对

3、属性值和操作的封装。3)定义3:对象:= 其中,ID是对象的名字;MS是对象中的操作集合;DS是对象的数据集合;MI是对象受理的消息名集合(即对外接口)。,2、对象的定义,3、对象的特点 1)以数据为中心; 2)对象是主动的; 3)实现了数据封装; 4)本质上具有并行性; 5)模块独立性好。,9.2.2 其他概念,1、类(Class) 类就是对具有相同数据和相同操作的一组相似对象的定义。 如:Circle类具有相同的数据(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置)。,又如:下面C+语言定义的Queue类,可用于实现一个队列(即先进先出的表): Class Q

4、ueue int q 100; int sloc, rloc; public: void init ( ); /成员函数 void qput (int i); int qget( ); ;,类有私有变量(Private)和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。,实例就是由某个特定的类所描述的一个具体的对象。如:Circle a ; /声明Circle类实例a Queue Q1, Q2; /声明Queue类实例Q1和Q2,2、实例(Instance),消息就是用来请求对象执行某个处理或回答某些信息的要求

5、。 消息既可以是数据流,也可以是控制流。一条消息可以发送给不同的对象,对消息的解释完全由接收信息的对象来完成,不同的对象对相同形式的消息可以有不同的解释。,3、消息(Message),与传统程序的“调用/返回”所不同的是,对于传来的消息,对象可以返回相应的回答信息,也可以不返回。 一个消息由三个部分组成: 1)接收信息的对象; 2)信息选择符(即消息名); 3)零个或多个变元(参数)。 如:MyCircle.Show(GREEN);,4、方法(Method) 方法,是对象所能执行的操作。 C+中把方法称为成员函数,如Circle类中定义的成员函数:Show(int color),5、属性(At

6、tribute) 属性,是类中定义的数据。 C+中把属性称为数据成员。,6、封装(encapsulation) 封装就是信息隐藏,通过封装对外界隐藏了对象的实现细节。,7、继承(Inheritance),继承,是指能够直接获得已有的性质和特征,而不必重复定义它们。,8、多态性(Polymorphism) 多态性,指子类对象可以象父类对象那样使用,同样的消息既可以发送给父类对象,也可以发送给子类对象。 即不同等级的类,可以公用一个方法的名字。 C+中,多态性是通过虚函数来实现的。在不同层次的类中,虚函数实现算法不同,在运行时根据接收消息的对象所属于的类来决定执行虚函数的版本,称为动态联编。,9、

7、重载(Overloading)有两种重载:1)函数重载 指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。 如: Show(int a, int b) Show(int x) Show(int x, int y, int z) C+语言中函数重载是通过静态联编实现的。即编译时根据函数变元的个数和类型,决定函数版本。,2)运算符重载 指同一运算符可以施加于不同类型的操作数上面。当被操作数类型不同时,运算符的含义是不同的。 编译时根据被操作数的类型,决定使用算符的哪种语义。,另外,在实现一个类成员函数时,必须通过用类名限定函数名来告诉编译器这个函数属于哪个类。 如,编写qput(

8、)函数: Void Queue : qput (int i) if (sloc = =100) cout “Queue if full” ; return; sloc+; q sloc = i; ,从程序中调用一个类的成员函数,用对象和点运算符。如: Queue ob1, ob2; ob1.init( ); /是对对象ob1的初始化函数init( )的调用 ob1, ob2之间的唯一关系是它们是同一类对象。ob1的初始化不影响ob2。,用面向对象方法开发软件,通常需要建立三种形式的模型,它们分别是:(1)对象模型:描述系统的数据结构;(2)动态模型:描述系统的控制结构;(3)功能模型:描述系统

9、的功能。 3种模型必不可少,其重要程度不同,对象模型是最基本、最重要的。,9.3 面向对象建模,UML(Unified Modeling Language),UML是面向对象的分析与设计(OOAD)方法发展的产物。,公认的面向对象建模语言出现于70年代中期。 90年代中,一批新方法出现了,其中最引人注目的是Booch 1993、OOSE和OMT-2等。,1. 标准建模语言UML的出现,众多的建模语言各有优点,大多类同,但仍存在某些细微的差别,妨碍了用户之间的交流。 统一建模语言在这样的背景下产生。,1995年10月:第一个公开版本UM 0.8(Unified Method)。 1996年6月:

10、UM改名为UML(Unified Modeling Language),发布 UML 0.9。 1996年底:UML占面向对象技术市场的85,成为可视化建模语言事实上的工业标准。 现最新版本:UML2.0,UML是标准的建模语言,而不是标准的开发过程。 在不同组织和不同应用领域,UML应用需采取不同的开发过程。 1998年:RUP( Rational Unified Process)是一种典型的建模过程。,2. 标准建模语言UML的内容,UML的定义包括UML语义和UML表示法两部分。,UML的重要内容可以由五类图(9种图形)来定义:1)用例图:从用户角度描述系统功能,并指出各功能,2)静态图

11、:包括类图、对象图和包图;,类图,2)静态图:包括类图、对象图和包图;,对象图,包图,3)行为图:描述系统的动态模型;4)交互图:描述对象间的交互关系;,交互图,5)实现图:如配置图,定义系统中软硬件的物理体系结构。,3. 标准建模语言UML的应用领域,UML适用于软件开发中从需求分析到测试的不同阶段: 需求获取:用例图、活动图 需求分析:类图、对象图和包图 系统分析与设计:状态图、顺序图、合作图、活动图、部件图和配置图。 测试:单元测试用类图、集成测试用部件图和合作图、确认测试用用例图等。,UML常用于建立软件系统模型,但同样可用于描述非软件领域的系统,如: 机械系统; 企业机构或业务过程;

12、 处理复杂数据的信息系统; 具有实时要求的工业系统或工业过程; 等。,9.4 对象模型,9.4.1 类图的基本符号 1. 定义类,2. 定义属性 UML描述属性的语法格式: 可见性 属性名:类型名初值性质串 可见性:公有(public)/ +、私有(private)/、保护(protected)/# (没有默认可见性) 性质串:可能枚举值或其它性质,如只读 例:管理员:String=“未定” 类变量实例:货单数:Integer(类变量在该类所有对象中的属性值相等),3. 定义服务(操作) UML描述操作的语法格式: 可见性 操作名(参数表):返回值类型性质串 参数的语法: 参数名:类型名默认值

13、 Show(x:integer=0, y :integer, z :integer):integer,9.4.2 表示关系的符号 1. 关联 1)普通关联,重数(multiplicity)的表示方法: 01 表示 0到1个对象; 0* 或* 表示 0到多个对象; 1+ 或1* 表示 1到多个对象; 115 表示 1到15个对象; 3 表示 3个对象。,2)关联的角色,上图是一个递归关联的例子。这种情况下,标明角色名有助于理解类图。,3)限定关联,利用限定词把一对多关系简化成了一对一关系。,4)关联类,控制器对象和电梯对象之间的连接,对应着一个队列(对象),它存储着控制器和电梯内部按钮的请求信息

14、。,聚集表示类与类之间是整体与部分的关系。,2. 聚集,1)共享聚集,处于部分方的对象可同时参与多个处于整体方对象的构成。,部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也随之消失。,2)组合聚集,例子:,3. 泛化(继承) 1)普通泛化,抽象类:描述子类的公共属性和行为,不能生成具体对象的类。,一个比较复杂的类图示例:,2)受限泛化 给泛化关系(继承关系)附加约束条件,说明该泛化关系的使用方法和扩充方法。 约束有:多重、不相交、完全和不完全。,多重继承:一个子类可以同时多次继承同一个上层基类。,不相交继承:一个子类不能多次继承同一个上层基类。(默认为不相交继承),完全继承:指父类的

15、所有子类都已经在类图中穷举出来了。 不完全继承:指父类的所有子类并没有在类图中穷举出来了。 随着对问题理解的深入,不完全继承中可以不断扩充子类。(默认为不完全继承),4. 依赖和细化 1)依赖关系,描述两个模型元素(类、用例)之间的关系,其中一个模型元素是独立的(被箭头指),另一个依赖于独立的模型元素。如,一个类使用另一个类的对象作为自己的函数的参数。,(友元:依赖类可以使用独立类中私有的或保护的成员),2)细化关系,细化用来协调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次模型之间的相关性,通常用于跟踪模型的演变。,例子:,9.5 动态模型,1)事件:事件是某个特定时刻所发生的事情。它

16、是引起对象状态转换的控制信息。 2)状态:状态就是对象在其生命周期中的某个特定阶段所处的某种情形。 3)行为:行为是指对象达到某种状态时所做的一系列处理操作。,通常用UML提供的状态图来描绘动态模型。 注意: 每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。,实例:电话的状态图,9.6 功能模型,通常,功能模型由一组数据流图组成。 UML提供的用例图也是进行需求分析和建立功能模型的有力工具。 以用例图建立起来的系统模型称为用例模型,它描述的是外部行为者所理解的系统功能。,9.6.1 用例图1、系统2、用例(use case) 行为者感受到的一个完

17、整的功能。 用例是类,代表一类功能,用例的实例称为脚本。3、行为者(actor) 与系统交互的人或其他系统。它代表一种角色。,4、用例之间的关系1)扩展关系 向一个用例中添加一些动作后构成另一个用例,它们之间构成扩展关系。 2)使用关系 一个用例使用另一个用例,它们之间构成使用关系。,描述一般行为的变化时采用扩展关系; 两个或多个用例中出现重复描述时可采用使用关系。,9.6.2 用例建模 一个用例模型由若干幅用例图组成。 创建用例模型的工作包括:定义系统、寻找行为者、寻找用例、描述用例、定义用例之间的关系、确认模型。,1、寻找行为者 下述问题有助于发现行为者: 1)谁将使用系统的主要功能? 2

18、)谁需要借助系统的支持来完成日常工作? 3)谁来维护和管理系统? 4)系统控制哪些硬件设备? 5)系统需要与哪些其他系统交互? 6)哪些人或系统对本系统产生的结果感兴趣?,2、寻找用例 可以通过每个行为者回答下述问题来获取用例: 1)行为者需要系统提供哪些功能? 2)行为者自身需要做什么? 3)行为者是否需要读取、创建、删除、修改或存储系统中的信息? 4)系统中发生的事件需要通知行为者吗? 5)行为者需要通知系统某些事情吗? 6)系统需要哪些输入输出? 7)当前使用的系统存在的主要问题是什么?,9.7 三种模型之间的关系,1)针对每个类建立的动态模型,描述了实例的生命周期或运行周期。2)状态转

19、换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。3)功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。,4)数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。5)数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。6)用例图中的行为者,可能是对象模型中的对象。7)功能模型中的处理(或用例)可能产生动态模型中的事件。8)对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。,练习题,填空题:1、用面向对象方法开发软件,通常需要建立3种形式的模型即( )、( )和功能模型。2、用面向对象方法学开发软件过程,是一个主动地多次反复迭代的( )。传统方法学强调( )顺序地完成软件开发的各阶段任务。,名词解释:1、对象2、类3、封装4、继承5、多态性6、重载,简答题:1、简述面向对象方法学的出发点和基本原则?2、面向对象方法的4个要点?3、与传统结构化方法相比较面向对象方法学的优点?4、对象的5个基本特点?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号