一、什么是面向对象方法

面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO方法,它是建立在对象概念(对象、类和继承)基础上的方法。自八十年代中期起,人们注重于面向对象分析和设计的研究,逐步形成了面向对象方法学。典型的方法有P.Coad和E.Yourdon的面向对象分析(OOA)和面向对象设计(OOD),G.Booch的面向对象开发方法,J.Rumbaugh等人提出的对象建模技术(OMT),Jacobson的面向对象软件工程(OOSE)等。九十年代中期,由G.Booch,J.Rumbaugh,Jacobson等人发起,在Booch方法、OMT方法和OOSE 方法的基础上推出了统一的建模语言(UML),1997年被国际对象管理组织(OMG)确定作为标准的建模语言。

二、为什么要使用面向对象方法

面向对象方法的出现很快受到计算机软件界的青睐,并成为九十年代的主流开发方法,可以从下列几个方面来分析其原因:

1、从认知学的角度来看,面向对象的方法符合人们对客观世界的认识规律。很长一段时间里,我们分析、设计、实现一个软件系统的过程与我们认识一个系统的过程存在着差异。比如用结构化分析和设计方法、信息工程方法。面向对象的分析和设计采用同样的图形表示形式,分析、设计和实现都以对象为基础,因此面向对象开发的各阶段之间具有很好的无缝连接。当用户的需求有所改变时,由于客观世界中的实体是不变的,实体之间的联系也是基本不变的,因此面向对象的总体结构也相对比较稳定,所引起的变化大多集中在对象的属性与操作及对象之间的消息通信上。总之,面向对象的方法符合人们对客观世界的认识规律,所开发的系统相对比较稳定。

2、面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改。面向对象方法开发的软件系统由对象类组成,对象的封装性很好地体现了抽象和信息隐蔽的特征。对象以属性及操作作为接口(界面),使用者只可通过接口访问对象(请求其服务),对象的具体实现细节对外是不可见的。这些特征使得软件系统的体系结构是模块化的,这种体系结构易于理解、扩充和修改。当对象的接口确定以后,实现细节的修改不会影响其它对象,易于维护。同时也便于分配给不同的开发人员去实现,依据规定的接口能方便地组装成系统。

3、面向对象方法中的继承机制有力支持软件的复用。在同一应用领域的不同应用系统中,往往会涉及到许多相同或相似的实体,这些实体在不同的应用系统中存在许多相同的属性和操作,也存在一些不同的应用系统所特有的属性和操作。在开发一个新的软件系统时,可复用已有系统中的某些类,通过继承和补充形成新系统的类。在同一个应用系统中,某些类之间也存在一些公共的属性和操作,也含有它们各自私有的属性和操作。这也可以通过继承来复用公共的属性和操作。

三、什么是建模

作曲家会将其脑袋中的旋律谱成乐曲,建筑师会将其设计的建筑物画成蓝图,这些乐曲、蓝图就是模型(Model),而建构这些模型的过程就称为建模(Modeling)。软件开发如同音乐谱曲及建筑设计,其过程中也必须将需求、分析、设计、实现、布署等各项工作流程的构想与结果予以呈现,这就是软件系统的建模。

四、为什么要建模

建立大厦和建立狗窝的区别是建设狗窝不需要设计,要生产合格的软件就要有一套关于体系结构、过程和工具的规范。

五、UML明明是图形,为什么说是语言?

语言是包括文字和图形的(文字也是一种图形)!其实有很多内容文字是无法表达的,你见过建筑设计图纸吗?里面有很多图形,光用文字能表达清楚建筑设计吗?在建筑界,有一套标准来描述设计,同样的道理,在软件开发界,我们也需要一套标准来帮助我们做好软件开发的工作。UML就是其中的一种标准,注意这可不是唯一标准,只是UML是大家比较推崇的一种标准而已,说不定以后有一个更好的标准可能会取代它呢!UML并不是强制性标准,没有法律规定你在软件开发中一定要用UML,不能用其它的,我们的目标是善用包括UML在内的各种标准,来提高我们软件开发的水平。

(备注:UML全称是Unified Modeling Language,UML由1.0版发展到1.1、1.2、...,到现在的2.0、2.x。)

六、UML有什么用?

UML不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。

七、UML图为什么要分为结构图和行为图?

1、顾名思义,结构图描述的是某种结构,这种结构某段时间内应该是稳定的,“静态”的;而行为图描述的是某种行为,是“动态”的。

2、分析系统需求时,我们会面对很多业务概念,它们之间会有某些关系,这些内容可以看成是“静态”的,我们可以利用UML的结构图来分析。同时,业务会涉及大量的流程、过程等,这些内容是“动态”的,我们可以用行为图来分析。

3.在我们软件设计时,我们需要考虑需要哪些类、哪些构件、系统最后怎样部署等,这些内容可以看成是“静态”的,我们可以利用UML的结构图来设计。同时,我们也需要考虑软件如何和用户交互,类、构件、模块之间如何联系等“动态”内容,我们可以利用行为图来设计。

八、UML结构图(Structure Diagram)

1、类图(Class Diagram)

请看下面这个类图:

图1.1某模具系统类图

此图截取自某模具管理系统的业务概念分析图,图中一个一个的矩形就是类,这些类之间有各种线条连接,这些线条表示类之间的关系。类图是分析业务概念的首选,类图可能是使用率最高的UML图。

再看下面这个Person类图,这是设计时用到的一个图:

图1.2 Person类图

该Person类有以下属性(Attribute):Name(姓名),Sex(性别),Department(部门)等,有以下操作(Operation):Work(工作)等。类有属性和操作,但用类图分析业务模型时,往往不需要使用操作,如图1.1中的类就只有属性。

Attribute有特性、特征等译法,Operation也称作方法,但本书遵循UML中文术语标准,即Attribute为属性,Operation为操作。

2.对象图(Object Diagram)

一般情况下只有在软件开发中才会使用到对象图,下面的内容以开发的角度来说明对象图。

图1.2中的Person类,用代码实例化如下:

Person person = new Person();

……

类(Class)实例化后就是对象(Object),对象person是类Person的实例,上述代码可以用对象图表示如下:

图 1.3 Person类的对象图

对象图和类图的样子很相似,对象是类的实例化,“person : Person”表示对象person是类Person的实例。对象图往往只在需要描述复杂算法时才会使用,画出来的对象图往往不会只有一个对象,该图只画了一个对象,其目的是尽量简化以便读者的理解什么是对象图。

在需求分析工作中基本上不需要使用对象图,从严谨的角度来看某些情况下应该使用对象图,但我往往还是会用类图来处理,这样更加简便而且容易理解。

3.构件图(Component Diagram)

构件图也叫组件图,两个名字均符合UML中文术语标准。

一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多“物理部件”(如:组件、重用构件等)组成的,构件图就是用来描述软件内部物理组成的一种图。下图是某权限构件设计图:

图 1.4 某权限构件设计图

图1.4右上方有这样标志 的矩形表示一个构件,构件可以再包含构件。

软件需求分析工作中,需要用到构件图的情况不是很多,以下情况除外:

  • 待开发的系统需要与第三方的系统、原有系统、某些老系统等交互,这时可用构件图描述交互要求。
  • 客户对软件设计有某些特殊要求,这时可用构件图来描述要求。

构件图有时不会单独使用,还会和部署图一起结合使用。

4.部署图(Deployment Diagram)

部署图是用来描述系统如何部署、本系统与其他系统是怎样的关系的一种图,如下图:

图 1.5 某24小时便利店的管理系统部署图

图中一个个立体的矩形是部署图的“节点”,一个节点表示一个物理的设备,节点之间的线条表示节点间的物理连接关系。

大部分客户都会具备一定的IT基础环境(如具备局域网、一些服务器、某些软件平台等),软件系统需要基于当前的IT基础环境来规划,这时我们可以使用部署图来做这个规划。

分析系统的需求,不能忽略系统架构、部署、IT架构等方面的要求,我们要基于客户当前的IT基础环境,做一个最符合客户利益的规划。

九、UML行为图(Behavior Diagram)

1.活动图(Activity Diagram)

我们将起床到出门上班这个过程画成活动图,可能是这样的:

图 1.7 起床到出门上班的活动图

活动图中的一个圆边框框表示一个“活动”,多个活动之间的带箭头线条表示活动的先后顺序,该图只是表达了一个顺序流程,活动图还可以表达分支结构。如果你以前曾学过流程图的话,你会发现活动图和流程图很相似。活动图可能是三种能表示流程的UML图中最接近我们思维习惯的一种,下面来学习另外两种能表达流程的图。

2.状态机图(State Machine Diagram)

状态机图又叫状态图,状态机图从某个物品的状态是如何变化的角度来展示流程,下图某请假条审批流程:

图 1.8 请假处理流程

整个请假审批流程是围绕“请假条”这个物体进行的,随着不同的审批阶段,请假条具备不同的状态。我们分析业务流程时会发现很多流程其实是围绕某个物品进行的,这时可考虑使用状态机图。

3.顺序图(Sequence Diagram)

你去餐厅吃饭,向服务员点餐到服务员送菜上来,这个过程用顺序图可表示如下:

图 1.9 点菜的顺序图

该图有三个“小人”,每个“小人”下面的文字说明(如:顾客)表示其代表的角色。角色与角色之间有一些线条链接,表示角色之间是如何交互的。该图表示的意思是:顾客向服务员点菜后,服务员将点菜信息传递给厨师,然后厨师做菜,最后再由服务员送菜给你。

点菜过程涉及几个环节,每个环节均由不同的角色来负责,如果遇到类似的情况,你可以考虑使用顺序图来分析。用顺序图来分析的好处是能清晰表达整个过程所参与的角色,角色与角色之间的关系,各角色是如何被卷入这个过程当中的。

4、通信图(Communication Diagram)

UML1.1时,该图英文名为Collaboration Diagram;UML2.x时,英文名为Communication Diagram。将英文名字直接翻译,原来的英文名字可译为协作图,而新的英文名字译为通信图。

通信图是顺序图的另外一种画法,点菜的顺序图,如果用通信图来画可表示如下:

图 1.10 点菜的通信图

三个“小人”分表表示三种角色:顾客、服务员、厨师;角色之间有直线联系表示他们之间有关系;带序号的文字和箭头,表示角色之间传递的信息。

顺序图更强调先后顺序,通信图更强调相互之间的关系。我觉得顺序图实用性更好一点,比通信图能表达更多的信息,更容易读懂,在需求分析工作中我基本不会使用通信图。

5.用例图(Use Case Diagram)

下图是用例图的示意图:

图 1.11 用例图

用例图表达的是什么角色通过软件系统能做什么事情,我们可以使用用例图系统地表达软件系统的绝大部分需求。

十、各种UML图实际应用情况

十一、UML学习难点

学UML之难,不在于学习语法,关键是要改变思维习惯。UML是一种新的工具,但同时也是代表了一种新的先进的思考方法,如果不能掌握这样的方法,只能学到了UML的形,而没有掌握其神髓。

要用好UML,你需要在平时多多培养下面的能力:

1、书面表达能力。

2、归纳总结能力。

3、“面向对象”的思维能力和抽象能力。

平时你可以利用各种机会来提升第1和第2种能力,如多写写项目文档、写写日记或博客等,多思考和总结平时自己的工作得失等。

只要你有进步之心,多练习、多实践、多思考、多总结,一定会取得长足进步!

十二、常用UML建模工具简介

1.Rational Rose

Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。

Rational Rose 是一个完全的、具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C++ )灵活性需求的一套解决方案。Rose 允许开发人员、项目经理、系统工程师和分析人员在软件开发周期内将需求和系统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化,理解和精练。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。

在面向对象应用程序开发领域,Rational Rose是影响其发展的一个重要因素。Rational Rose自推出以来就受到了业界的瞩目,并一直引领着可视化建模工具的发展。越来越多的软件公司和开发团队开始或者已经采用Rational Rose,用于大型项目开发的分析、建模与设计等方面。

Rose2002功能上可以完成UML的9种标准建模,即静态建模(用例图、类图、对象图、组件图、配置图)和动态建模(合作图、序列图、状态转移图、活动图),为了使静态建模可以直接作用于代码,Rose提供了类设计到多种程序语言代码自动产生的插件。同时,作为一款优秀的分析和设计工具,常用UML建模工具Rose具有强大的正向和逆向工程能力。正向工程这里指的是由设计产生代码,逆向工程指由代码归纳出设计。通过逆向工程Rose可以对历史系统作出分析,然后进行改进,再通过正向工程产生新系统的代码,这样的设计方式我们称之为再工程。

2.VISIO

VISIO原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到VISIO 2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的UML支持仅仅是其中很少的一部分)。它跟微软的office产品的能够很好兼容。能够把图形直接复制或者内嵌到WORD的文档中。但是对于代码的生成更多是支持微软的产品如VB,VC++,C#,MS SQL Server 等(这也是微软的传统),所以它可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发则有点牵强。

3.StarUML

StarUML(简称SU),是一种创建UML类图,是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强。唯一不足之处,在反向工程时,只能生成类图,不能生成类之间的关系。

转自:今日头条

统一建模语言UML基础知识相关推荐

  1. 统一建模语言UML整理之开篇

    引言: 这段时间将致力于写UML方面的博客,由于个人能力的有限,如果博客中出现错误的地方还请广大博友批评指正.为了更好地了解一个过程或者事物,人们通常根据所研究对象的某些特征(形状.结构.或行为等)建 ...

  2. 『软件工程13』浅谈面向对象方法,统一建模语言UML

    浅谈面向对象方法UML 一.UML的含义 二.UML的主要内容 1.UML的概念模型 2.UML概念模型图例 三.UML的基本构造块 1.UML中的事物 (1)UML中的四种事物 (2)UML中各种事 ...

  3. 统一建模语言UML(四):领域模型和类图

    统一建模语言UML(四):领域模型和类图 领域模型 领域模型是对领域内概念类或现实世界中对象的可视化表示,也称为概念模型.是更为完整的业务模型的一个特例.从UML的表示法角度,领域模型被描述为一组没有 ...

  4. 统一建模语言UML轻松入门系列

    第五讲:统一建模语言UML轻松入门之综合实例 第四讲:统一建模语言UML轻松入门之动态建模 第三讲:统一建模语言UML轻松入门之静态建模:类和对象 第二讲:统一建模语言UML轻松入门之静态建模:用例 ...

  5. 统一建模语言UML轻松入门(3)――静态建模:类和对象

    统一建模语言UML轻松入门(3)――静态建模:类和对象 --------------------------------------------------------------------- 宋宝 ...

  6. 统一建模语言UML轻松入门(1)――基本概念

    统一建模语言UML轻松入门(1)――基本概念 --------------------------------------------------------------------- 宋宝华 ema ...

  7. 统一建模语言UML(1)概述

    uml概述 uml(UNIFIED MODELING LANGUAGE) uml是一种工具,隐藏在其后面的是面向对象的想法 url非常适合面向对象分析和设计,在软件开发中想法很重要,而uml是用来表达 ...

  8. 软件工程—统一建模语言UML

    一.ULM概述 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档.它记录了对必须构造的系统的决定和理解,可用于对系统的理解.设计.浏览.配 ...

  9. 统一建模语言UML要点全面简析

    前言 uml就是一些图,一些由框框和线条构成的图,框框称为事物,线条表示4种关系,加点这些框框和线条的说明注释. 一.uml概述 统一建模语言(UML)是面向对象软件的标准化建模语言. UML由3个要 ...

  10. uml 时序图_面向对象设计与统一建模语言UML

    面向对象设计 自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来. 首先要提出一个问题,就是设计的工作是要做什么? 它包括的范围其实是很广泛的,从搜集用 ...

最新文章

  1. 费用保险单,如何失焦时自动补零
  2. ztree.js的使用整理
  3. python画圆简单代码-Python 用turtle实现用正方形画圆的例子
  4. str、tuple、dict之间的相互转换
  5. r23中文测试软件,Maxon公布最新的CINEBENCH R23测试软件
  6. jquery|javascript 回车事件
  7. 前端安全系列(二):如何防止CSRF攻击?
  8. Java数据类型BooleanDemo
  9. 软考高级网络规划设计师5天修炼
  10. 华为交换机stp原理透析及实战
  11. php5d,php挖洞基础知识篇以及防范方法
  12. 电池SOC仿真系列-基于RNN的电池SOC估算研究
  13. Linux基础-日志管理
  14. 01读书笔记:《编码》-隐匿在计算机软硬件背后的语言(01-11章)
  15. 字符在计算机中的存储
  16. 【沃顿商学院学习笔记】领导力——Business Impact:03商业如何驱动影响力的案例Some Cases
  17. Opencascade 帮助手册学习1 Overview
  18. 使用visio来进行画类图
  19. 35岁程序员被公司辞退,生活压力太大痛哭,中年危机如何自救?
  20. 河南南阳:筹备火热 卧龙岗文化园春节大庙会1月22日启幕

热门文章

  1. 最新免费wap网址大全
  2. conficker病毒
  3. GANs是如何创造出高分辨率的图像的
  4. 犀牛脚本插件-添加文本-Python-显示窗口-rhino脚本
  5. python多维列表索引越界怎么处理_python列表索引越界
  6. CCF-CSP真题《202206-2—寻宝大冒险》思路+python满分题解
  7. linux加载显卡驱动模块,linux怎样加载显卡驱动,急,在线等
  8. Google帝国研究——Google的产业构成
  9. android studio httpclient包导入,HttpClient不会导入Android Studio
  10. java 网吧管理系统_java网吧信息管理系统