第一章 面向对象技术概述(UML)
第1章 UML与面向对象

2.逻辑视图 作用: 作用:描述如何实现系统内部的功能 ; 适用对象:分析者、设计者、 适用对象:分析者、设计者、开发者 ; 描述使用的图:类图和对象图、状态图、 描述使用的图:类图和对象图、状态图、 顺序图、 顺序图、合作图和活动图 ; 重要性: 重要性:描述了系统的静态结构和因发 送消息而出现的动态协作关系 。
2011-5-5
消息传递(message sending)
在系统中对象是要相互协作的。对象之间的 协作是通过相互发送信息。一个对象发送一 个操作消息给另一个对象,接受消息的对象 就执行这个对象 我们使用空调的遥控器来使用空调,就是控 制器和空调两个对象的通信,通信可以是单 向也可以是双向的。 对象传递信息的接口不一定都相同
2011-5-5
29
3.构件视图
作用:描述系统代码构件组织和实现模 作用: 块,及它们之间的依赖关系 ; 适用对象:设计者、 适用对象:设计者、开发者 ; 描述使用的图: 描述使用的图:构件图 ; 重要性:描述系统如何划分软件构件, 重要性:描述系统如何划分软件构件, 如何进行编程 。
2011-5-5
2011-5-5 3
Home
II. 面向对象的基本概念
对象/实例(object/instance) 类 (class) 封装 (encapsulation) 继承 (inheritance) 多态 (polymorphism) 消息 (message) 接口 (interface)
2011-5-5 4
2011-5-5
20
Home
面向对象的分析
Object Oriented Analysis
用面向对象方法分析问题域,建立基于对象、 消息的业务模型,形成对客观世界和业务本身 的正确认识。 生成业务对象的动、静态模型和抽象类
第三部分UML基础(第一章UML概述)

1、标准的表示方法
人们用各种方法来使用UML,而无论方
法如何变化,它们的基础是UML的图。 这就是UML的最终用途——为不同领域 的人们提供统一的交流标准。 软件开发的难点在于:一个项目的参与 包括领域专家、软件设计开发人员、客 户,以及用户他们之间交流的难题,成 为软件开发的最大难题。
最突出的两条,
一是:注重系统架构的开发 一是:注重过程的迭代和递增性
尽管UML
本身对过程没有任何定义,但 UML 对任何使用它的方法或过程提出的 要求,是支持用例驱动use-case driven 、以架构为中心architecturecentric 以及递增incremental 和迭代 iterative 地开发。
26
四、UML 的应用领域
UML
被用来为系统建模,它可应用的范 围非常广泛:
可以描述许多类型的系统
它也可以用在系统开发的不同阶段,从需
求规格说明到对已完成系统的测试。
软件技术基础-------PPT课件
27
1、在不同类型系统中的应用
的目标是:用面向对象的方式描述 任何类型的系统。 其中最直接的是,用UML 为软件系统创 建模型。但UML 也可用来描述其它非计 算机软件的系统,或者是商业机构或过 程。
UML是一种建模语言,是一种标准的表
示,而不是一种方法或方法学。
方法是一种把人的思考和行动结构化的明
确方式。方法需要定义软件开发的步骤, 告诉人们做什么,如何做,什么时候做以 及为什么要这么做
UML只定义了一些图以及它们的意义。
它的思想是与方法无关。
软件技术基础-------PPT课件 20
软件技术基础-------PPT课件 4
UML第1章 面向对象方法概论

1.3
面向对象开发的概念
面向对象开发是现实世界中以抽象为基础的 软件思维的一种崭新方式。面向对象开发的本质 是应用领域概念的鉴别和组织,而不是它们在一 种程序设计语言中的最终表示。
1.3.1
面向对象方法学
• • • •
分析 系统设计 对象设计 实现
1.3.2 • 对象模型 • 动态模型 • 功能模型
• 所谓“描述”是指用一种语言把人们对问题域 中事物的认识、对问题及其解决方法的认识描 述出来。最终的描述必须使用一种能够被机器 读得懂的语言,即编程语言。
1.2.2 • • • • • • 标识 分类 多态性 继承 封装 抽象
对象的特性
1.2.3
软件工程学的作用
• 软件工程学从认识事物方面看,它在分析阶段 提供了一些对问题域的分析认识方法。从描述 事物方面看,它在分析和设计阶段提供了一些 从问题域逐步过渡到编程语言的描述手段 。 • 传统的软件工程方法(图1-1)与面向对象的 软件工程方法(图1-2)比较
问题域 需求分析 总体设计和详细设计 编程和测试 软件维护
图1-1
问题域 自然语言 面向对象的编程语言 OOA OOD OOP OOT 计算机
图1-2
• 传统的软件工程方法: 1)需求分析 2)总体设计和详细设计 3)编程和测试 4)软件维护
• 面向对象的软件工程方法 1)面向对象的分析 2)面向对象设计 3)面向对象的编程 4)面向对象的测试 5)面向对象的软件维护
• 面向对象方法的主要优点是 : (1)与人类习惯的思维方法一致 (2)稳定性好 (3)可重用性好
(4)可维护性好 (5)面向对象的软件稳定性比较好 (6)面向对象的软件容易修改 (7)面向对象的软件容易理解 (8)易于测试和调试
Section 1_UML面向对象技术概述

分析模型
设计模型 实施模型 测试模型
模块结构图表示功能模块,模块之间 的连接/调用是模块的附属形式 体系结构设计
根据文档进行单元测试,集成测试,确 认测试
单元测试采用类图,集成测试用实现图和交互图, 确认测试采用用例图
11
面向对象技术的优点
• 易于理解
• 顺应人类思维习惯,让软件开发人员直接模拟问题空间
7
控制软件复杂性的基本方法
• 分解,即“分而治之”或“各个击破” • 抽象,抽取系统本质特征,忽略非基本特征 • 模块化,基本要求是高内聚、低耦合 • 信息隐蔽,也称封装
• 过程抽象 • 数据抽象
8
面向对象技术
• 结构化的基本思想
理解为止。
• 以过程抽象对待系统的需求,其主要思想是对问题进行
功能分解,直到最后分解得到的功能比较方便地处理和
4
软件开发的基本认识
• 大型软件系统的特点
• 软件系统开发的两个方面 • 软件工程的目的
• 开发代价高、时间长,参与人员多,软件生命周期长。 • 软件开发过程 • 软件开发中资源的协调和管理 • 在规定的时间、规定的费用内开发出满足用户需求的
高质量的软件系统。
低错误率、好用、易用、可维护、可重用、可移植等
• 单继承与多继承
19
Override与Overload
public class A { String name; public String getValues() { return “Value is:” +name; } } public class A{ int age; String name; public void setValue (int i) { age = i; } public void setValue (String s) { name = s; }
第1章面向对象概述1

UML建模语言
3. 建立对象的动态模型 (1)准备脚本 (2)确定事件 (3)准备事件跟踪表 (4)构造状态图 4. 建立系统的功能模型 (1)先列出输入、输出值,输入输出值是系统与外界之间 的事件的参数。 (2)建立数据流图,数据流图可说明输出值是怎样从输入 值转换的,数据流图通常按层次组织。其中的数据流对 应于对象图中的对象或属性。
需求分析和定义
软件快速原型
原型评审
软件设计和实现
UML建模语言
4.XP方法 规定了一组核心价值和方法,消除了大多数重量型开发过程 中的不必要产物,建立了一个渐进型开发过程。将开发阶段的4个 活动(分析、设计、编码和测试)混合在一起,在全过程中采用迭 代增量开发、反馈修正和反复测试。
用户场景
发布计划
UML建模语言
1.瀑布模型(生存周期模型)
UML建模语言
2. 喷泉模型 以对象为驱动,以用户需求为动力的模型,主要用于描述 面向对象的软件开发过程。 采用自下而上、各阶段是 演化 相互重叠和多次反复的, 且各个开发阶段没有特 维护 定的次序要求,可以交 互进行。
实现
设计
分析
UML建模语言
3. 基于构件的开发模型 利用模块化方法将整个系统模块化,并在一定构件模型的支 持下复用构件库中的一个或多个软件构件,通过组合手段高效率、 高质量地构造应用软件系统的过程。融合了喷泉模型的许多特征, 开发过程是迭代的。 软件计划
UML建模语言
1.2
面向对象的基本特征
面向对象的基本特征: 抽象 封装 继承 多态
面向对象的核心元素: 对象 封装 消息 类 继承 多态性 结构与连接
UML建模语言
1.2.1 抽象(Abstraction)
面向对象技术与UML

继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
L01A 面向对象技术概述

传统的软件开发方法
信息建模方法:以数据结构为中心的软件开发方法。 优点: --有关系数据库的良好数学基础,可保证系统的数据完整性、一致性; --适合以数据处理为中心的软件系统; 缺点软件开发方法
结构化方法:采用自顶向下,逐步求精的思想,把一个复杂问题的求 解过程逐层、分阶段进行分解,使得每个阶段处理的问题都控制在人 们容易理解和处理的范围内。
面向对象技术概述
面向对象方法是一种运用对象、类、封装、继承、 多态和消息等概念来构造、测试、重构软件的方 法。 面向对象方法是以认识论为基础,用对象来理解 和分析问题空间,并设计和开发出由对象构成的 软件系统(解空间)的方法。 由于问题空间和解 空间都是由对象组成的,这样可以消除由于问题 空间和求解空间结构上的不一致带来的问题。简 言之,面向对象就是面向事情本身,面向对象的 分析过程就是认识客观世界的过程。
面向对象技术概述
面向对象的语言: 面向对象的语言包含4个基本的分支: 1 基于Smalltalk的; 包括smalltalk的5个版 本,以Smalltalk-80为代表。 2 基于C的; 包括 objective-C, C++, Java 3 基于LISP的; 包括 Flavors, XLISP, LOOPS, CLOS 4 基于PASCAL的。包括 Object Pascal, Turbo Pascal, Eiffel, Ada 95
面向对象设计方法(UML)
L01A 面向对象技术概述 吴小竹
课程目标
掌握面向对象分析,设计的基本理论与方法. 掌握面向对象建模语言UML及其设计软件. 熟悉一门面向对象程序设计语言.
课程学时安排
第1章 面向对象技术概述

第1章面向对象技术概述1.1 软件危机及软件工程20世纪60年代中期开始爆发的软件危机,使人们认识到大中型软件系统与小型软件有本质的不同:大型软件系统的开发周期长、开发费用昂贵、开发出来的软件质量难以保证、开发生产率低,它们的复杂性已远远超出了人脑所能直接控制的程度。
就像用制造小木船的方法不能生产航空母舰一样,大型软件系统的开发不能再延续手工作坊式的开发方式,而必须立足于科学的理论基础上,实行大兵团式的工程化作业,这一认识导致了软件工程学的诞生。
1968年,北大西洋公约组织(NATO)科技委员会在当时的联邦德国Garmisch召开了有近50名一流的计算机科学家、编程人员和工业界人士参加的研讨会,商讨摆脱软件危机的办法,在这次会议上第一次提出了软件工程的概念,这是软件开发史上重要的里程碑,它标志着软件开发进入了划时代的新阶段。
1.2 对软件开发的基本认识如图2.2所示是UML发展历史的简图。
其他方法Booch' 91OMT-1OOSEUML 0.9 & 0.91UML 1.0UML 1.3UML 1.4UML 1.5UML 2.01995年OOPSLA国际会议1996年6月和10月1997年1月1997年9月1999年6月2001年9月2003年3月即将正式发布方法学大战阶段统一阶段标准化阶段工业化阶段图2.2 UML 的发展历史UML 是由世界著名的棉线对象技术专家G .Booch 、J .Rumbaugh 和L .Jacobson 发起,在Booch 方法、OMT 方法和OOSE 方法的基础上,汲取其他面向对象方法的优点,广泛征求意见,几经修改而完成的。
目前UML 得到了诸多大公司的支持,如IBM 、HP 、Oracle 、Microsoft 等,已经成为面向对象技术领域内占主导地位的标准建模语言,Booch 、Rumbaugh 和Jacobson 在一些文献中经常被称作“三个好朋友”(three amigos )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
14
面向对象技术概述
1.1 软件危机及软件工程
2 软件业的发展 软件开发方法: 瀑布式软件开发方法、快速原型发、螺旋式软件开 发方法、变换式软件开发方法等
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
15
面向对象技术概述
1.2 对软件开发的基本认识
软件与硬件的关系 软件不同于硬件,它是计算机系统中的逻辑部件而 不是物理部件;软件样品即是产品,试制过程也就是生 产过程;软件不会因使用时间过长而“老化”或“用 坏”;软件具有可运行的行为特性,在写出程序代码并 在计算机上试运行之前,软件开发过程的进展情况较难 衡量,软件质量也较难评价,因此管理和控制软件开发 过程十分困难;软件质量不是根据大量制造的相同实体 的质量来度量,而是与每一个组成部分的不同实体的质 量紧密相关,软件是一种信息产品,具有可延展性,属 于柔性生产,
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
19
面向对象技术概述
1.3 软件的复杂性及控制
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
5
面向对象技术概述
1.1 软件危机及软件工程
1 国外及我国计算机的发展 1956年,夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时 编写了中国第一本电子计算机原理讲义。 1957年,哈尔滨工业大学研制成功中国第一台模拟式电子计算机。 1958年,中国第一台计算机--103型通用数字电子计算机研制成功,运行速 度每秒1500次。 1959年,中国研制成功104型电子计算机,运算速度每秒1万次。 1960年,中国第一台大型通用电子计算机--107型通用电子数字计算机研制 成功。 1963年,中国第一台大型晶体管电子计算机--109机研制成功。 1964年,441B全晶体管计算机研制成功。 1965年,中国第一台百万次集成电路计算机"DJS-Ⅱ"型操作系统编制完成。 1967年,新型晶体管大型通用数字计算机诞生。 1969年,北京大学承接研制百万次集成电路数字电子计算机 --150机。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
6
面向对象技术概述
1.1 软件危机及软件工程
1 国外及我国计算机的发展 1970年,中国第一台具有多道程序分时操作系统和标准汇编语言的计算机-441B-Ⅲ型全晶体管计算机研制成功。 1972年,每秒运算11万次的大型集成电路通用数字电子计算机研制成功。 1979年,中国研制成功每秒运算500万次的集成电路计算机--HDS-9,王选 用中国第一台激光照排机排出样书。 1981年,中国研制成功的260机平均运算速度达到每秒100万次。 1983年,"银河Ⅰ号"巨型计算机研制成功,运算速度达每秒1亿次。 1985年,华光Ⅱ型汉字激光照排系统投入生产性使用。 1987年,第一台国产的286微机--长城286正式推出。 1988年,第一台国产386微机--长城386推出,中国发现首例计算机病毒。 1990年,中国首台高智能计算机--EST/IS4260智能工作站诞生,长城486计 算机问世。 1991年,新华社、科技日报、经济日报正式启用汉字激光照排系统。 1992年,中国最大的汉字字符集--6万电脑汉字字库正式建立。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 10
面向对象技术概述
1.1 软件危机及软件工程
2 软件业的发展 冯· 诺依曼结构。其特点可以概括为如下几点: (1)使用单一的处理部件来完成计算、存储以及通信的 工作; (2)存储单元是定长的线性组织; (3)存储空间的单元是直接寻址的; (4)使用机器语言,指令通过操作码来完成简单的操作; (5)对计算进行集中的顺序控制。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
12
1.1 软件危机及软件工程
2 软件业的发展 产生软件危机的原因: ①与软件本身的特点有关。
面向对象技术概述
②危机原因来自于软件开发人员的弱点 其一软件产品是人的思维结果,因此软件生产水平最终在相当程度上取 决于软件人员的教育、训练和经验的积累; 其二.对于大型软件往往需要许多人合作开发,甚至要求软件开发人员 深入应用领域的问题研究,这样就需要在用户与软件人员之间以及软件开发 人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的 设计或实现,而要消除这些误解和错误往往需要付出巨大的代价 。 其三,由于计算机技术和应用发展迅速,知识更新周期加快,软件开发 人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益 扩大的应用领域问题研究;软件开发人员所进行的每一项软件开发几乎都必 须调整自身的知识结构以适应新的问题求解的需要,而这种调整是人所固有 的学习行为,难以用工具来代替。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 7
面向对象技术概述
1.1 软件危机及软件工程
1 国外及我国计算机的发展 1993年,中国第一台10亿次巨型银河计算机Ⅱ型通过鉴 定。 1994年,银河计算机Ⅱ型在国家气象局投入正式运行, 用于天气中期预报。 1995年,曙光1000大型机通过鉴定,其峰值可达每秒25 亿次。 1997年,银河-Ⅲ并行巨型计算机研制成功。 1999年,银河四代巨型机研制成功。 2000年,我国自行研制成功高性能计算机"神威”
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 18
面向对象技术概述
1.3 软件的复杂性及控制
1 软件复杂性度量: 1.模块复杂性度量 模块复杂性度量是软件复杂性度量的基础,是一 种曾一度被广泛使用的传统方法,主要有McCabe度量和 程序长度度量两种方法。 (1)长度度量 这是一种通过计算模块的模块大小来度量模块复 杂性的经典方法,由M.Halstead在70年代初从统计学的 观点提出,用程序中所有操作符和操作数的个数之和来 表示程序的长度L。
3
面向对象技术概述
1.1 软件危机及软件工程
1 国外及我国计算机的发展 第一台计算机的诞生 第二次世界大战期间,美国军方为了解决计算大量 军用数据的难题,成立了由宾夕法尼亚大学莫奇利和埃 克特领导的研究小组,开始研制世界上第一台电子计算 机。 经过三年紧张的工作,第一台电子计算机终于在1946年2 月14日问世了
面向对象技术UML教程
武汉纺织大学: 魏 雄 Email:wx_wh@
1
参考资料:
《UML系统分析设计与案例》人民邮电出 版社 作者 翼振燕 《Rational Rose 2003 基础教程》冶金工 业出版社 作者:刘敏莺 杨丽 《UML for Mere Mortals》人民邮电出版 社 作者 Robert A.Maksimchuk Eric J.Naiburg
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 9
面向对象技术概述
1.1 软件危机及软件工程
2 软件业的发展
冯· 诺依曼的贡献主要是:确立了现代计算机的基本结构, 即冯· 诺依曼结构。 输人数据和程序的输入设备 记忆程序和数据的存储器 完成数据加工处理的运算器 控制程序执行的控制器 输出处理结果的输出设备
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 16
1.3 软件的复杂性及控制
1 软件复杂性度量:
面向对象技术概述
作为软件显著特点的复杂性是导致软件错误的 主要原因,软件可靠性问题的本质就是复杂性问题。 软件的可靠性与其复杂性密不可分,当复杂性 超过一定限度时,软件缺陷或错误便急剧上升。此 外,软件的可维护性等质量特性也与之有极大关系。 软件复杂性度量是对软件复杂性的定量描述,是软 件复杂性分析和控制的基础。它针对不同对象,从 不同角度选用不同方法来描述软件的复杂性。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 8
面向对象技术概述
1.1 软件危机及软件工程
2 软件业的发展
杰出代表人物是英国科学家图灵和美籍匈牙利科学家 冯· 诺依曼。
图灵对现代计算机的贡献主要是:建立了图灵机的理论 模型,发展了可计算性理论;提出了定义机器智能的图灵测试。 图灵提出了一种抽象计算模型,用来精确定义可计算函数。图 灵机由一个控制器、一条可无限伸延的带子和一个在带子上左 右移动的读写头组成。这个在概念上如此简单的机器,理论上 却可以计算任何直观可计算的函数。图灵机作为计算机的理论 模型,在有关计算机和计算复杂性的研究方面得到广泛应用。
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 2
第一章 面向对象技术概述
教学目标:了解软件危机产生的原因.
了解软件危机和软件的复杂性
掌握面向对象技术的分解、抽象、模块化、信息隐 藏等思想
了解传统结构化的软件开发方法与面向对象的软件 开发方法的异同点
WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING
软件危机的根源:软件生产的知识密集和人力密集的 WUHAN UNIVERSITY OF SCIENCE AND ENGINEERING 特点
13
面向对象技术概述
1.1 软件危机及软件工程
2 软件业的发展 软件生命期: (1)、需求分析(Requriements Caputre)阶段 (2)、系统分析与设计(System Analysis and Design) 阶段 (3)、实现(Implementation)阶段 (4)、测试(Testing)阶段 (5)、维护( Maintenance)阶段