Download presentation
Presentation is loading. Please wait.
1
第十章 面向对象方法学 (1)
2
第十章内容概要 面向对象方法学概述 面向对象的概念 面向对象建模 UML可视化建模基础 面向对象的需求提取 面向对象分析 ★
软件工程-2011-第十章 面向对象方法学
3
软件工程-2011-第十章 面向对象方法学
4
什么是面向对象 Coad和Yourdon给出了一个定义:“面向对象=对象+类+继承+通过消息进行通信” 这个定义的要点 :
一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。 这个定义的要点 : 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成; 软件工程-2011-第十章 面向对象方法学
5
什么是面向对象 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。;
按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级); 对象彼此之间仅能通过传递消息互相联系。 软件工程-2011-第十章 面向对象方法学
6
面向对象方法学的优点 与人类习惯的思维方法一致:
传统的程序设计技术忽略了数据和操作之间的内在联系,用这种方法所设计出来的软件系统其解空间与问题空间并不一致,难于理解。 面向对象的软件技术以对象(object)为核心 , 而对象是数据和操作的统一体,是对现实世界实体的正确抽象。 面向对象的设计方法与传统的面向过程的方法有本质不同: 软件工程-2011-第十章 面向对象方法学
7
面向对象方法学的优点 面向对象的环境提供了强有力的抽象机制,便于用户在利用计算机软件系统解决复杂问题时使用习惯的抽象思维工具;
面向对象方法学中普遍进行的对象分类过程,支持从特殊到一般的归纳思维过程; 面向对象方法学中通过建立类等级而获得的继承特性,支持从一般到特殊的演绎思维过程; 先设计出由抽象类构成的系统框架,随着认识深入和具体化再逐步派生出更具体的派生类——符合人们认识客观世界解决复杂问题时逐步深化的渐进过程。 软件工程-2011-第十章 面向对象方法学
8
面向对象方法学的优点 稳定性好: 传统的软件开发方法以算法为核心,建立起来的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。 面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定的。 软件工程-2011-第十章 面向对象方法学
9
面向对象方法学的优点 面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性:实例化、继承。
软件工程-2011-第十章 面向对象方法学
10
面向对象方法学的优点 可重用性好: 传统的软件重用技术是利用标准函数库,但是,标准函数缺乏必要的“柔性”。
即使是具有功能内聚性的模块也并不是自含的和独立的,相反,它必须运行在相应的数据结构上。 面向对象方法所使用的对象是数据和操作的统一体,因此,对象具有很强的自含性。对象固有的封装性和信息隐藏机制,使得对象的内部实现与外界隔离,具有较强的独立性。 软件工程-2011-第十章 面向对象方法学
11
面向对象方法学的优点 面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性:实例化、继承。
软件工程-2011-第十章 面向对象方法学
12
面向对象方法学的优点 较易开发大型软件产品:
面向对象范型中构成软件系统的每个对象就像一个微型程序,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理 。从而有利于对开发工作的管理。 软件工程-2011-第十章 面向对象方法学
13
面向对象方法学的优点 可维护性好: 面向对象的软件稳定性比较好。 面向对象的软件比较容易修改:封装,继承和多态性。
面向对象的软件比较容易理解。 易于测试和调试。 软件工程-2011-第十章 面向对象方法学
14
第十章内容概要 面向对象方法学概述 面向对象的概念 面向对象建模 UML可视化建模基础 面向对象的需求提取 面向对象分析 ★
软件工程-2011-第十章 面向对象方法学
15
面向对象的概念 对象:在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。 对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。 软件工程-2011-第十章 面向对象方法学
16
面向对象的概念 对象的形象表示: 界 面 操作1 操作2 操作1,2,3的实现 操作3 对象的形象表示 状态 S
界 面 软件工程-2011-第十章 面向对象方法学
17
面向对象的概念 对象的定义: 定义1:对象是具有相同状态的一组操作的集合。(从OO程序设计角度)
定义2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。(从信息模拟角度) 定义3:对象∷=(ID,MS,DS,MI)。其中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。 软件工程-2011-第十章 面向对象方法学
18
面向对象的概念 对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。每当需要改变对象的状态时,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。 状态 S 操作:f1,f2,…,fn 转换:g1,g2,…,gn 输出fi(X,S) 输入 fi , X 转换 :新状态S’=gi (X,S) 用自动机模拟对象 软件工程-2011-第十章 面向对象方法学
19
对象的特点 以数据为中心 对象是主动的 实现了数据封装 本质上具有并行性 模块独立性好 软件工程-2011-第十章 面向对象方法学
20
面向对象的其他概念 类(class) 实例(instance) 消息(message) 由下述3部分组成: 方法(method)
接收消息的对象; 消息选择符(也称为消息名); 零个或多个变元 方法(method) 属性(attribute) 软件工程-2011-第十章 面向对象方法学
21
面向对象的其他概念 封装:类封装了它的实例对象的属性与行为,隐藏实现细节。 对象具有封装性的条件如下:
有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。 有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。 受保护的内部实现。 软件工程-2011-第十章 面向对象方法学
22
面向对象的其他概念 继承:是指能够直接获得已有的性质和特征,而不必重复定义它们。
根据各类间的异同点把它们组成层次结构,从而表示:位于下层的类继承了上层中某类的特点。 继承是子类自动地共享基类中定义的数据和方法的机制。 或者反方向来看,是从“特殊性”概念归纳“一般性” 概念的一种机制。 抽象类 软件工程-2011-第十章 面向对象方法学
23
面向对象的概念 使用继承的好处: 继承性使得相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息; 易于修改软件;
方便新的应用系统的开发; 利于软件重用; 软件工程-2011-第十章 面向对象方法学
24
面向对象的概念 多态:类的一个行为在其子类中有不同表现形式。 行为(Behavior):是指一个对象所能执行的动作或者变换;
操作(Operation):行为在类的定义中进一步被明确为操作; 方法(Method):一个操作在某个类中的一种特定实现被称为一个方法; 软件工程-2011-第十章 面向对象方法学
25
Concrete operations may also be polymorphic – but this is bad style.
Polymorphism means “many forms”. Polymorphic operations have many implementations. A concrete subclass must implement all the abstract operations that it inherits. With polymorphism, objects of different classes respond to the same message in different ways. Concrete operations may also be polymorphic – but this is bad style. 软件工程-2011-第十章 面向对象方法学
26
Canvas Shape draw(g: Graphics) getArea(): int getBoundingArea(): int
Circle Square 1 * 软件工程-2011-第十章 面向对象方法学
27
面向对象的概念 重载(overloading)
有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。 软件工程-2011-第十章 面向对象方法学
28
使用面向对象方法的开发过程 面向对象开发的优势: 面向对象是一种关于问题及其解答该如何表述的哲学; 面向对象不是一种软件生命周期模型。
易于表示含有大量交互的系统; 能用相同术语来描述问题及其解决方案:对象连接了问题空间和求解空间; 开发过程的不同阶段都能使用同一种术语:对象连接了各开发阶段; 面向对象是一种关于问题及其解答该如何表述的哲学; 面向对象不是一种软件生命周期模型。 软件工程-2011-第十章 面向对象方法学
29
使用面向对象方法的开发过程 软件工程-2011-第十章 面向对象方法学
30
使用面向对象方法的开发过程 喷泉模型 软件工程-2011-第十章 面向对象方法学
31
第十章内容概要 面向对象方法学概述 面向对象的概念 面向对象建模 UML可视化建模基础 面向对象的需求提取 面向对象分析 ★
软件工程-2011-第十章 面向对象方法学
32
面向对象建模 模型:为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。 模型是一种思考工具,把知识规范地表示出来。 模型是现实的简化、化简的实现。 软件工程-2011-第十章 面向对象方法学
33
软件工程-2011-第十章 面向对象方法学
34
软件工程-2011-第十章 面向对象方法学
35
软件工程-2011-第十章 面向对象方法学
36
软件工程-2011-第十章 面向对象方法学
37
软件工程-2011-第十章 面向对象方法学
38
软件工程-2011-第十章 面向对象方法学
39
软件工程-2011-第十章 面向对象方法学
40
软件工程-2011-第十章 面向对象方法学
41
第十章内容概要 面向对象方法学概述 面向对象的概念 面向对象建模 UML可视化建模基础 面向对象的需求提取 面向对象分析 ★
软件工程-2011-第十章 面向对象方法学
42
软件工程-2011-第十章 面向对象方法学
43
软件工程-2011-第十章 面向对象方法学
44
软件工程-2011-第十章 面向对象方法学
45
软件工程-2011-第十章 面向对象方法学
46
软件工程-2011-第十章 面向对象方法学
47
软件工程-2011-第十章 面向对象方法学
48
软件工程-2011-第十章 面向对象方法学
49
软件工程-2011-第十章 面向对象方法学
50
软件工程-2011-第十章 面向对象方法学
51
软件工程-2011-第十章 面向对象方法学
52
软件工程-2011-第十章 面向对象方法学
53
软件工程-2011-第十章 面向对象方法学
54
软件工程-2011-第十章 面向对象方法学
55
软件工程-2011-第十章 面向对象方法学
56
面向对象建模符号系统-UML UML描述模型的三种基本词汇:要素(Things)、关系(Relationships)、图(Diagrams)
表述结构的要素:Use Case、类、接口、协作 表述行为的要素:交互、状态机 用于组织的要素:包 用于辅助说明的要素:注释 软件工程-2011-第十章 面向对象方法学
57
面向对象建模符号系统-UML UML有4种关系: UML有9种图: 关联关系:有联系 依赖关系:使用 泛化关系:特殊到一般
实现关系:规约到解决方案 UML有9种图: Use Case图:展示Use Case、Actor及其关系; 类图:展示类、接口、包及其关系; 0..1 * employer employee 软件工程-2011-第十章 面向对象方法学
58
面向对象建模符号系统-UML 顺序图:按时序展示对象间消息传递; 协作图:强调收发消息的对象间的组织结构;
状态图:展示对象在其生命周期中的可能状态以及在这些状态上对事件的响应; 活动图:展示系统从一个活动转到另一活动的可能路径和判断条件; 对象图:某个时间点上系统中各对象的快照; 构件图:展示系统各构件及其关系; 配置图:展示交付系统中软硬件间物理关系; 软件工程-2011-第十章 面向对象方法学
59
Use Case(用例)图简介 Use Case图主要用于描述系统和外部环境的关系。
Use Case:对系统提供的功能的一种描述。(A use case describes behavior that the system exhibits to benefit one or more actors.) Actor:是可能使用这些Use Case的人或外部系统。(Actors are roles adopted by things that interact directly with system. A role is like a hat that something wears in a particular context.) 系统边界:Use Case在内,Actor在外; 用例之间的关系:《extend》、《include》、 Generalization 软件工程-2011-第十章 面向对象方法学
60
用例图示例 PlaceOrder CancleOrder ShipProduct Mail order system
Subject name Mail order system system boundary PlaceOrder communication relationship CancleOrder ShipProduct ShippingCompany Customer CheckOrderStatus actor use case RequestCatalog Dispatcher 软件工程-2011-第十章 面向对象方法学
61
用例图示例 软件工程-2011-第十章 面向对象方法学
62
Actor与Use Case间的连线称为通信关联,表示Actor与相应Use Case的交互。
软件工程-2011-第十章 面向对象方法学
63
类图/对象图简介 类图应用最广,可在各个层次上描述系统的静态结构。 方框表示类:上面写类名,中间是类的属性,下面是类的操作。
关联(Association):关联关系表示类的实例之间存在某种稳定的联系。 对象图是类图的一种变形,对象名下面要加下划线。 软件工程-2011-第十章 面向对象方法学
64
类的表述形式: +:public -:private #:protected 关联关系: 软件工程-2011-第十章 面向对象方法学
65
A Class in UML Class name Attributes Operators 软件工程-2011-第十章 面向对象方法学
66
An Object in UML object name and class 软件工程-2011-第十章 面向对象方法学
67
Class Relationships in UML
Generalization Dependency Association These can represent inheritance, using, aggregation, etc. 软件工程-2011-第十章 面向对象方法学
68
Example class diagram 软件工程-2011-第十章 面向对象方法学
69
Association Structural relationship between peer classes (or objects).
Association can have a name and direction, or be bi-directional Role names for each end of the association Multiplicity of the relationship 软件工程-2011-第十章 面向对象方法学
70
Examples of Association
软件工程-2011-第十章 面向对象方法学
71
Association code example
class Person { public: private: Company *employer; }; class Company { Person **employee; Each instance of Person has a pointer to its employer Each instance of Company has a collection of pointers denoting its employees 软件工程-2011-第十章 面向对象方法学
72
Link Attributes Associations may have properties in the same manner as objects/classes. Salary and job title can be represented as 软件工程-2011-第十章 面向对象方法学
73
Aggregation (聚合/共享聚集)
A part of relationship (physical containment) class ProjectGroup { public: ProjectGroup(); private: Person member[n]; }; 软件工程-2011-第十章 面向对象方法学
74
Composition (组合,组合聚集)
软件工程-2011-第十章 面向对象方法学
75
Aggregation vs Composition
Aggregation is a shared containment. Many other classes may have the same type of aggregate. E.g., string, list Composition is aggregates that can not stand by themselves (e.g., foot, arm, etc.) 软件工程-2011-第十章 面向对象方法学
76
Generalization/Inheritance
软件工程-2011-第十章 面向对象方法学
77
软件工程-2011-第十章 面向对象方法学
78
Dependency 依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。 软件工程-2011-第十章 面向对象方法学
79
类图示例:简单手表的组成部分 软件工程-2011-第十章 面向对象方法学
80
类图: 对象图: 软件工程-2011-第十章 面向对象方法学
81
类图/对象图简介 在三个层次上使用类图: 要理解问题:概念层 要理解软件:说明层 概念层:描述应用域中的概念
说明层:考察软件的接口部分,而非实现部分,要区分接口与实现(即类型与类) 实现层:揭示软件实现体的构成情况。只有在这层才有真正严格意义上的类的概念 要理解问题:概念层 要理解软件:说明层 软件工程-2011-第十章 面向对象方法学
82
顺序图简介 顺序图描述几个对象间的动态协作关系,一个对象通过发送消息与其他对象相互作用。一个对象对消息的接收触发一个操作的执行,从而可能给其他对象发消息。 顺序图对识别Use Case 中的附加对象很有用: 包含在Use Case中的对象称为参与对象; 顺序图展示了这些对象间传送消息的时间顺序,反映了对象之间的一次特定交互过程; 软件工程-2011-第十章 面向对象方法学
83
顺序图示例:简单手表调时 软件工程-2011-第十章 面向对象方法学
84
顺序图示例:一台打印服务器 软件工程-2011-第十章 面向对象方法学
85
协作图简介 也是用来描述系统中对象间的动态协作关系; 协作图侧重说明哪些对象间有消息传递; 顺序图侧重表述在某情况下对象间传递消息的时序性;
协作图中要给消息编号来标明消息的执行顺序; 软件工程-2011-第十章 面向对象方法学
86
协作图示例:打印服务器 软件工程-2011-第十章 面向对象方法学
87
协作图中使用的消息层次编号能反映激活的嵌套性质,这在顺序图中能显式地表示出来。
软件工程-2011-第十章 面向对象方法学
88
状态图简介 一个状态是对象满足的一种条件。状态可认为是一个类属性值的抽象; 用对象的多个状态及这些状态间的转换来描述单个对象的行为。
标注状态转移:事件[条件]/动作 动作:伴随转移发生,不会被中断 活动:在某一状态中进行,可以被中断 软件工程-2011-第十章 面向对象方法学
89
简单手表“设置时间”Use Case的状态图
软件工程-2011-第十章 面向对象方法学
90
活动图简介 类似流程图 描述所要进行的各项活动的执行流程 描述一个Use Case的处理流程
活动图可以方便地描述控制转移条件以及并行执行等要求 软件工程-2011-第十章 面向对象方法学
91
活动图示例:打印过程 软件工程-2011-第十章 面向对象方法学
92
软件工程-2011-第十章 面向对象方法学
93
活动图示例:开发软件需求的流程 软件工程-2011-第十章 面向对象方法学
94
活动图示例: 表示并发和同步 软件工程-2011-第十章 面向对象方法学
95
软件工程-2011-第十章 面向对象方法学
96
构件图简介 构件图描述程序代码的组织结构 构件: 源代码构件 二进制目标代码构件 可执行构件 文档构件
软件工程-2011-第十章 面向对象方法学
97
反映程序代码构件间的依赖关系的构件图 软件工程-2011-第十章 面向对象方法学
98
配置图简介 描述系统中软硬件的物理配置情况和系统体系结构 结点表示实际的物理设备 连接表示各物理结点的连接方式
结点内部表示分配到该结点运行的构件或对象 软件工程-2011-第十章 面向对象方法学
99
描述一个系统的物理体系结构的配置图 软件工程-2011-第十章 面向对象方法学
100
UML的三种扩展机制 标记值(Tagged Value) 约束(Constraint) 附属于UML元素的各种信息(Property)
具有形式:{属性名 = 值} 约束(Constraint) UML中限制一种或多个元素语义的规则 形式:{约束条件} 软件工程-2011-第十章 面向对象方法学
101
UML的三种扩展机制 软件工程-2011-第十章 面向对象方法学
102
UML的三种扩展机制 构造型(Stereotype)
构造型机制是指在已有的模型元素基础上建立一种新的模型元素。它与现有元素要相差不多,只是多一些特别的语义 软件工程-2011-第十章 面向对象方法学
103
用视图描述系统 视图:被建模系统的各个方面,它们都反映同一个系统,具有一致性; 建立完整模型所需的视图种类和数量不定,按需选取;
视图把建模语言同开发系统的方法、过程连接起来; 软件工程-2011-第十章 面向对象方法学
104
用UML描述系统的5个视图 Use Case View(用例视图): Logic View(逻辑视图): 视图内容:系统行为、动力
动态表现:交互图、状态图、活动图 观察角度:用户、分析员、测试员 Logic View(逻辑视图): 视图内容:问题及解决方案的术语词汇 静态表现:类图、对象图 软件工程-2011-第十章 面向对象方法学
105
用UML描述系统的5个视图 Process View(进程视图): Component View(实现视图):
动态表现:交互图、状态图、活动图 观察角度:类、接口、协作 Process View(进程视图): 视图内容:性能、可伸缩性、吞吐量 静态表现:类图、对象图 观察角度:线程、进程 Component View(实现视图): 软件工程-2011-第十章 面向对象方法学
106
用UML描述系统的5个视图 Deployment View(实施视图): 视图内容:构件、文件 静态表现:构件图
动态表现:交互图、状态图、活动图 观察角度:配置、发布(Releases) Deployment View(实施视图): 视图内容:部件的发布、交付、安装 静态表现:配置图 观察角度:拓扑结构的节点 软件工程-2011-第十章 面向对象方法学
107
用UML描述系统的5个视图 逻辑视图 实现视图 实施视图 进程视图 用例视图 系统装配 词汇 配置管理 功能 行为 系统拓扑 分布 性能
交付 安装 性能 可伸缩性 吞吐量 软件工程-2011-第十章 面向对象方法学
108
软件工程-2011-第十章 面向对象方法学
109
软件工程-2011-第十章 面向对象方法学
110
软件工程-2011-第十章 面向对象方法学
111
软件工程-2011-第十章 面向对象方法学
112
软件工程-2011-第十章 面向对象方法学
113
软件工程-2011-第十章 面向对象方法学
114
软件工程-2011-第十章 面向对象方法学
115
软件工程-2011-第十章 面向对象方法学
116
软件工程-2011-第十章 面向对象方法学
117
软件工程-2011-第十章 面向对象方法学
118
软件工程-2011-第十章 面向对象方法学
119
软件工程-2011-第十章 面向对象方法学
120
软件工程-2011-第十章 面向对象方法学
121
软件工程-2011-第十章 面向对象方法学
122
软件工程-2011-第十章 面向对象方法学
Similar presentations