`

Java学习系列(二十七)UML建模的理解和图形整理(一)

 
阅读更多

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要。在uml开始之前,咱先回顾一个OOAD、OOP的主要特征。

 

OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程。它包括OOA 分析阶段和OOD设计阶段。其中分析阶段主要解决“What to do?”的问题,而设计阶段主要解决“How to do?”的问题。具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型)、列出系统必须要完成的核心任务、列出针对此问题域的最佳解决方案;而在设计阶段咱要做的主要工作是:如何解决具体的业务问题,引入咱工作需要哪些支持,设计系统的实现策略。通常OOAD的开发过程是这样的:a)项目分解为几个模块;b)使用UML进行建模;c)USDP(统一软件开发过程)是一个迭代、递增(需求、分析、设计、实现、测试等)式开发。

 

OOP的主要特征:封装、继承、多态、抽象、关联、聚合、组合。

 

下面谈谈我对这些特征的理解:

(1)封装:“合理隐藏,合理暴露”。具体来说就是合理隐藏数据和实现,提供公共方法供咱调用。

(2)继承:发生在子类和父类之间,通常在这两个类型之间存在“is a”的关系,如:香蕉“is a”水果,香蕉为子类,苹果为父类。通过继承可实现代码重用且继承也是多态的基础。

(3)多态:“同一种类型的变量调用同一个方法表现出不同特征或行为”。举例来说:呼吸breath()这个动作,人使用肺来完成,而鱼则使用鳃来完成。

(4)抽象:抽象是一种将方法声明和具体实现分离的一个过程。通过抽象,咱只需关注其本质特征(具体能做什么)而忽略掉一个对象(或实体)具体细节。

(5)关联:关联实质上是对象之间交互时的一种引用方式,当一个对象A通过另一个对象B的引用去调用B对象的方法操作或服务时,A和B便产生了关联。比如说:咱(person)使用手机(phone)来打电话(即咱调用了手机的一个功能--打电话dial()),person和phone之间就存在了关联关系。

(6)聚合:聚合是关联关系中的一种,一个对象A作为另外一个对象B的属性Field而存在,在外部对象(如汽车Car)被产生时,可有咱指定与其关联的内部对象(轮胎Wheel)。什么意思呢?说直白点吧,一辆汽车CarA的轮胎坏了咱可以重新换上新的轮胎WheelA,而轮胎WheelA/WheelC也可以卸下来供别的汽车CarB使用。可以看出聚合中的关联关系并没有那么强烈。

(7)组合:组合是关联关系中最为强烈的一种。当一个对象A包含另外一个对象B时,外部对象A负责管理内部对象B的生命周期。本质上:内部对象B的创建由外部对象A自己控制,就拿电脑与显示器来说吧,外部对象(电脑)不存在时,内部对象(显示器)也不能存在,这个应该很好理解了吧~

 

 

内聚与耦合

内聚:度量一个类独立完成某项工作的能力。组合:度量系统内或系统之间依赖关系的复杂度。咱一般的设计原则是:“高内聚,低耦合”,也就是咱要增加内聚,减少耦合。

下面开始咱们的uml之旅。

 

域模型

域模型也被称为设计模型,它包含两部分组成:一是具体状态和行为的域对象;二是域对象之间的关系,它包括:关联(上面已经介绍了)、依赖(a对象依赖B类中的方法,并且构造B类的实例)、聚集(整体和部分的关系:如手是人的组成部分)、一般化(继承关系)。

uml定义:统一建模语言(Unified Modeling Language),它是一种图形化的语言,可以帮助我们在OOAD阶段标识元素(用例、类、对象等)、构建模块(功能划分)、分析过程并可通过文档(概要说明、详细说明)来说明系统中的重要细节。

uml图形的分类:包括静态模型(static model)、动态模型(dynamic model)。静态建模目的是创建并记录一个系统的静态特征(如:类包含的属性和方法、用例中的参与者和用例以及用例之间的关系、对象之间的关系等)。静态建模包括:用例图、类图、对象图、组件图、部署图;而动态建模包括:时序图(也称顺序图)、协作图、状态图、活动图。

 

静态建模中的用例图:它是用来展示系统的核心功能及其交互的用户或系统等。

===================== 用例图========================
1. 用例:系统为参与者提供的功能,一般取名为带有动作性的词语。
2. 用例之间的关系 --> 虚线 :
a) 包含关系:大功能包含《include》子功能。
b) 扩展关系:将基用例中一段【相对独立并且可选】的动作,用扩展《extends》用例加以封装。 --虚线反向
c) 泛化关系:一般和特殊(抽象类/接口+实现类/子类)的关系。实线三角形箭头反向。

下面用一张图来说明:


总结

今天只是开了个头,讲了一下OOAD、OOP的几个特征以及uml建模中的分类(静态、动态建模),最后一个静态建模中的用例图来开始了咱们的uml建模之旅。接下来会继续讲解uml中的剩下的几个常用uml建模。

 

 

分享到:
评论

相关推荐

    免费UML建模工具ArgoUML

    ArgoUML 是一款开源的UML 建模工具,支持所有UML 1.4 的标准图形。它可以运行在任何Java平台上,并且支持10种语言(地区语言而不是编程语言)。它用Java构造,并遵守开源的BSD协议。

    《UML建模实例教程》【PPT】

    3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 ...

    UML建模软件ArgoUMLv0.34官方安装版

    UML建模软件(Argo UML)是一款开源的uml建模工具支持所有UML1.4的标准图形。它可以运行在任何Java 平台上,并且支持10 种语言(地区语言而不是编程语言)。它用Java构造,并遵守开源的BSD协议。需要的朋友可以下载...

    Eclipse_UML建模插件开发

    了解uML开发应用,对Eclipse插件体系以及插件开发方法进行了研究,并在此基础上开发出了基于Eclipse平台的UML建模插件。该插件实现了用例图以及静态结构图的绘制。其中,静态结构图包含Java类图以及Java接口图,同时...

    ArgoUML--优秀的UML建模工具MOYU

    ArgoUML--优秀的UML建模工具MOYU ArgoUML 是一款开源的UML 建模工具,支持所有UML 1.4 的标准图形。它可以运行在任何Java 平台上,并且支持10 种语言(地区语言而不是编程语言)。它用Java构造,并遵守开源的BSD协议...

    基于UML的图书馆管理系统建模设计

    很多开发人员虽然能够理解UML的所有图形,却仍然不能得心应手的使用UML来构建整个项目,其很大的原因,是仍然在使用原有的软件工程方法,而不清楚如何使用UML来建立系统的这些模型,不清楚分析和设计的区别,以及...

    UML图形详解

    软件工程的概念是参照建筑工程等流程提出来的,与建筑工程相同,软件工程需要可行性分析、需求分析、概要设计、详细设计......建筑需要图纸,软件也需要图纸,设计软件图纸的工具就是UML(统一建模语言)。

    UML类图怎么画学习示例

    UML类图(Class diagram)是统一建模语言(UML)的一种图形表示,用于显示系统的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系。 在类图中,每个类由一个包含类名、属性和方法的矩形表示,...

    uml相关图与java相关代码

    一种能为复杂系统建模,图形化的语言。 一种人/机建模语言 一种比自然语言容易的语言 一种以OO的方式建模的语言 一种应用于需求分析,系统分析和设计的语言 一种是需求人与客户,系统分析员之间,系统分析员和开发...

    MyEclipse6 Java开发中文教程_全部18章

    第一章 安装配置开发环境 第二章 开发第一个Java 应用程序 第三章 Eclipse 的基础概念,配置和使用 第四章 用MyEclipse Database Explorer管理...第十七章 MyEclipse UML 建模 第十八章 图形界面开发-AWT,Swing,SWT

    高级Java软件架构师学习计划

    主要介绍做为一名java软件架构师都需要掌握哪些技能 Java语法与编程基础 面向对象程序设计与编码 Java流操作和文件系统 Java图形用户界面编程 异常处理与事件响应 Java基础类库与中期项目实战 Java多线程编程、网络...

    Java/JavaEE 学习笔记

    Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...

    UML设计核心技术

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,...

    Eclipse Papyrus 2023-06-win-x64

    它提供了一个丰富的建模环境,包括图形编辑器、模型浏览器、代码生成器和文档生成器等工具。 Papyrus 可以与其他 Eclipse 工具和插件集成,例如 Java 开发工具、需求管理工具和版本控制系统等。它还支持模型的共享和...

    MyEclipse.6.Java.开发中文教程

    第二章 开发第一个Java应用程序 第三章 Eclipse 的基础概念,配置和使用 第四章 用MyEclipse Database Explorer管理数据库 第五章 开发JDBC应用 第六章 管理应用服务器 第七章 开发Hibernate应用 第八章 开发Web...

    Java语言程序设计

    不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...

    软件工程师Java班课程

    软件系统架构设计 UML与系统建模和设计、Rational Rose、 软件工程和软件过程模型、版本控制 掌握业界软件开发规范和方式 J2EE商务应用系统项目开发 4~5人一个项目组,项目大小为(25人*工作日左右) 掌握大型商务...

    Java架构师之UML语言与软件架构设计教程

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,...

    uml、架构设计学习资料、课件

    UML是一种建模语言,所有语言都是由基本词汇和语法两部分组成。 元模型 UML定义了一些建立模型所需要的、表达某种特定含义的基本元素,相当于基本词汇。 如“用例”、“类” 表示法/视图 元模型相互之间的关系和规则...

Global site tag (gtag.js) - Google Analytics