1、第一部分:UML基础,1 .面向对象技术概述 2. UML基础,面向对象分析与设计 & UML,2,1.面向对象概述,面向对象分析与设计 & UML,3,1.1 软件工程与常用开发过程模型,软件开发的现状 软件工程学科不断发展 软件危机仍然存在 中小型软件开发较为成熟,大型软件存在问题 常见软件开发方法 瀑布模型 快速原型 螺旋模型 极限软件开发,面向对象分析与设计 & UML,4,1.2 控制软件复杂性的基本方法,分解,即“分而治之”或“各个击破” 抽象,抽取系统本质特征,忽略非基本特征 过程抽象 数据抽象 模块化,基本要求是高内聚、低耦合 信息隐蔽,也称封装,面向对象分析与设计 & UML
2、,5,1.3 面向对象技术,Object-Oriented的基本思想 对问题域进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化。 面向对象技术的优点 稳定性较高 易于理解 适应性较好 可靠性较高 各个开发阶段之间过渡平滑,面向对象分析与设计 & UML,6,1.4 面向对象领域的基本概念,OO技术领域存在一些基本术语和概念,需要掌握和理解。,面向对象分析与设计 & UML,7,1.4.1 对象和实例,对象(Object) 它是系统用来描述客观事物的一个实体,是构成系统的一个基本单位。 对象包括:属性和方法
3、对象之间对过消息进行通信。 实例(Instance) 它与对象的概念很类型,但其含义更广泛一些。,面向对象分析与设计 & UML,8,1.4.2 类,类(Class) 它是具有相同属性和方法的一组对象的集合 为某类对象提供统一的描述 类是静态概念,面向对象分析与设计 & UML,9,1.4.3 封装,封装(Encapsulation) 就是把对象的属性和方法结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。 封装使对象具有2个部分:接口部分和实现部分 封装提供2种保护 保护对象,防止直接访问对象内部细节 保护客户,防止对象实现部分的变化影响客户对象。,面向对象分析与设计 & UML,10,
4、1.4.4 继承,继承(Inheritance) 它使子类可以继承父类的属性和方法 继承增加了软件重用的机会 继承中的覆盖 Override与Overload 单继承与多继承,面向对象分析与设计 & UML,11,单继承,多继承,面向对象分析与设计 & UML,12,1.4.5 多态,多态(polymorphism) 在OO技术中,多态指使一个实体在不同上下文条件下具有不同意义或用法的能力 与多态有关的概念 继承 覆盖 动态绑定,面向对象分析与设计 & UML,13,2.UML基础,面向对象分析与设计 & UML,14,2.1 为什么需要UML,使用(或建立)模型在软件开发中的意义:,更好的理
5、解问题 加强参与人员之间的沟通 尽早发现错误或疏漏的地方 获取设计结果 为生成代码提供依据,面向对象分析与设计 & UML,15,面向对象分析与设计 & UML,16,2.1 为什么需要UML,Unified Modeling Language是一种绘制软件蓝图的标准语言,可以用UML对软件密集型系统的制品进行可视化、详述、构造和文档化。,UML统一了各种不同的软件分析和设计的建模语言,成为系统建模语言的事实上的标准。,面向对象分析与设计 & UML,17,2.3 UML的特点,统一的标准, 已经被OMG接受为标准建模语言 面向对象, 支持面向对象开发 可视化, 表示能力很强大 独立于开发过程
6、, 可以适用于不同软件过程 概念明确, 表示简洁, 结构清晰, 容易学习和掌握,面向对象分析与设计 & UML,18,2.4 UML的构成,UML是由图和元模型组成的。图是UML的语法,而元模型则给出图的意思,是UML的语义。UML是用来描述模型的,它用模型来描述系统的结构或静态特征、以及行为或动态特征。它从不同的角度为系统的架构建模,形成系统的不同视图。,面向对象分析与设计 & UML,19,2.5 UML中的视图,逻辑视图 (Logical View),实现视图 (Implementation View),进程视图 (Process View),部署视图 (Implementation m
7、odel view),用例视图 (Use Case View),表示系统功能性需求,表示系统的概念设计和子系统结构等,说明代码的结构,说明系统中并发执行和同步情况,定义硬件结点的物理结构,2.5 UML中的视图,面向对象分析与设计 & UML,20,面向对象分析与设计 & UML,21,2.4 UML的构成,用例图 (use case diagram),活动图 (activity diagram),类图 (class diagram) (简单的),顺序图 (sequence diagram),状态图 (state diagram),类图 (class diagram) (复杂的),协作图 (c
8、ollaboration diagram),需求,构建图 (Component diagram),部署图 (deployment diagram),面向对象分析与设计 & UML,22,2.5 支持UML的工具,Rational Rose Borland Together ArgoUML StarUML Microsoft visio ,视图(1),用例视图(use case view)由专门描述可被最终用户、分析人员和测试人员看到的系统行为的用例组成。 静态方面:用例图 动态方面:行为图 逻辑视图 or 设计视图(logic view or design view)包含了类、接口和协作,这种
9、视图主要支持系统的功能需求,即系统提供给最终用户的服务。 静态方面:类图和对象图 动态方面:行为图,视图(2),进程视图 or 并发视图(process view)包含了形成系统并发与同步机制的线程和进程,该视图主要针对性能、可伸缩性和系统的吞吐量 静态方面:类图和对象图 动态方面:行为图 实现视图 or 组件视图(implementation view or component view)包含了用于装配与发布物理系统的构件和文件,这种视图主要针对系统发布的配置管理 静态方面:构件图 动态方面:行为图,视图(3),实施视图 or 部署视图(deployment view)包含了形成系统硬件拓扑
10、结构的节点(系统在其上运行),这种视图主要描述对组成物理系统的部件的分布、交付和安装 静态方面:实施图 动态方面:行为图,UML中的图,图由各种图形符号组成,用来描述模型元素之间的相互联系,是视图的组成部分。UML定义了9种不同的图,把它们有机地结合起来就可以描述系统的所有视图。,UML中的图-结构图,以下4种UML结构图可用于对系统的静态方面进行可视化、详述、构造和文档化。可以把系统的静态方面看作是对系统的相对稳定的骨架的表示 1。类图(class diagram)显示了一组类、接口、协作及它们之间的关系 2。对象图(object diagram)显示了一组对象及它们之间的关系 3。构件图O
11、R 组件图(component diagram )显示了一组构件及它们之间的关系 4。实施图 OR 部署图(deployment diagram)显示了一组节点及它们之间的关系,UML中的图-行为图1,以下5种UML结构图可用于对系统的动态方面进行可视化、详述、构造和文档化。可以把系统的动态方面看作是对系统变化部分的表示。 软件系统的动态方面是由诸如随时间变化的信息流和在网络上构件的物理运动之类的事物组成。,UML中的图-行为图2,1。用例图(use case diagram )描述了一组用例和参与者(一种特殊的类)以及它们之间的关系,用于组织系统的行为 2。顺序图(sequence diag
12、ram )显示了一组对象和由这组对象发送和接收的消息,注重消息的时间次序 3。协作图(collaboration diagram)显示了一组对象、这组对象间的链以及这组对象收发的消息,注重收发消息的对象的结构组织说明:顺序图和协作图统称为交互图(interaction diagram ),二者在语义上等价,可以相互转换,UML中的图-行为图3,4。状态图(statechart diagram )注重于由事件驱动的系统的变化状态 5。活动图(activity diagram)注重于系统中从活动到活动的流说明:状态图和活动图在语义上等价。,UML 示例,显示“Hello world!”的简单 Ja
13、va Applet程序 -先来看一下代码,import java.awt.Graphics; public class HelloWord extends java.applet.Appletpublic void paint(Graphics g)g.drawString(“Hello world!”,10,10); ,类HelloWorld,第一行表示类名,第三行由类包含的操作或方法构成,第二行为空,因为该类中不需要属性,类的关系,泛化关系,依赖关系,用包来组织类,HelloWorld,java,包被表示为带有标签的文件夹,有向的虚线段描述了对象与包之间的依赖关系,HelloWorld.java的组件图,