分析业务模型-类图

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

活用UMLUMLUMLUML——需求分析高手第3333章作者:张传波分析业务模型——类图本文档最后更新时间:2011-8-32011-8-32011-8-32011-8-31111/28282828分析业务模型——类图(ClassDiagram)作者:张传波软件知识原创基地特别说明:本文来自《活用UML——需求分析高手》中的第3章“分析业务模型——类图(ClassDiagram)”。点击下面链接,了解本书更多内容:://://://摘要:类图(ClassDiagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOA:Object-OrientedAnalysis)和面向对象设计(OOD:Object-OrientedDesign)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。1.11.11.11.1面向过程与面向对象本小节的内容涉及到编程方面的知识,如果你有相关经验,请认真阅读本小节,本小节目的是澄清开发人员的一些面向过程和面向对象的理解误区。如果你没有编程经验或者对此不感兴趣,可忽略本小节直接阅读下一小节,忽略本小节并不影响你对后文的理解。上世纪90年代初,当我读高中的时候首次接触电脑,并且学习了第一门编程语言Basic。当时不知道什么是面向过程,也不知道何为面向对象,只知道不断地学习Basic语言的算法,感受编程的乐趣。当时学习的Basic语言,现在看来是很老土的面向过程的语言。后来学习了C语言,不久后朋友告诉我应该学习C++,我问:C和C++有什么不同?于是朋友告诉我:C是面向过程的语言,C++是面向对象的语言,C++比C最不同的地方就是C++有类(Class),C没有……这就是我对面向过程和面向对象的第一印象,后来又学习了一些面向对象的知识,似乎将很多东西变成类,类里面有特性和操作,就是面向对象。然而工作后发现完全不是那么回事,面向对象真的是只可意会难以言传啊。下面说说我对面向过程和面向对象的理解,希望对你有帮助。很多年前的程序只有一行行的代码,后来出现代码难以组织、不好阅读、重复代码多等问题。于是“发明”了方法,将一段代码放到方法里面,实现一定的功能,供别的地方调用。方法的“发明”是编程史上的一大进步,其实方法就是一定程度上的封装,只要调用者给出符合要求的输入,方法就会返回合适的输出,调用者完全不用理会方法的具体实现,而方法里面又可以调用方法。随着后来的发展,出现了结构化编程,将编程的艺术更推进一步。无论是方法还是结构化编程,都是我们提高编程技术以更好地解决复杂的、高难度的问题的一种手段而已。但后来发现问题越来越复杂,结构化编程开始招架不住了,于是有人提出面向对象编程。面向对象编码是一种基于类的编程方法,每一个类有特定的作用,类中有属性和方法,一条条语句只存在于属性或方法中。用面向对象的思路来求解问题,就是要设计出能解决问题的一个或多个类,通过类之间的相互操作和协作来解决问题。类是对代码的进一步封装,比方法对代码的封装要进一大步,类的出现要求我们编程的思想更进一步。对于面向过程和面向对象编程存在这样的一些误区:1)面向对象比面向过程更高级,无需注重结构化编程和编程基本功。前面提到的编码发展史,简单说就是以下几个阶段:�一行行的代码�用方法组织起来的代码活用UMLUMLUMLUML——需求分析高手第3333章作者:张传波分析业务模型——类图本文档最后更新时间:2011-8-32011-8-32011-8-32011-8-32222/28282828�结构化代码�面向对象的代码(用类来组织的代码)看上去似乎后面的可以取代前面的,特别是到了面向对象编程阶段,似乎人人都可以喊自己是面向对象的,真正能写出好代码的人并不多。其实编码基本功相当重要,结构化编程也相当重要,如果这些基础不行,面向对象只能喊喊而已。我在以前公司招聘程序员,编程基本功是必考的。2)面向对象编程就是将代码放进一个个类而已。我最开始对面向对象编程的看法基本上就是这样,后来用VB编程还是未能真正体会面向对象编程,直到后来使用真正面向对象的语言C#以及学习了UML和设计模式,才开始真正体会。如何设计、提炼、规划类,是很讲技巧和功力的事情,面向对象一点都不容易。3)将业务概念直接转变为类,赋予合适的属性和操作,就可以解决问题。需求阶段的建模与设计阶段的建模是很不一样的,需求建模是对业务和需求的提炼,优秀的需求建模是设计建模的良好开始,但优秀的设计建模还需要考虑更多的设计上的事情,并不是简单地将业务模型直接转变化设计模型就可以解决问题的。本书不会具体介绍如何面向对象地编程,而是如何面向对象地进行需求分析,我们将会借鉴面向对象编程的思想用于需求分析工作中。有开发经验的人士从事需求分析工作时,受面向过程和面向对象编程的思维习惯影响,容易处于“技术实现”的角度来分析问题。这需要一个转变过程,我强烈建议你先忘掉自己的开发经历。本书接下来的内容,将会通过一个又一个的具体案例和练习,让你体会面向对象分析需求的方法。当完成这个转变时,你会发现编程思想和分析需求的思想有共通之处但又不太一样,你在编程时养成的严谨、全面、深入的分析方法会让你在需求分析工作中受益不浅。1.21.21.21.2类图的基础知识类图有什么用?某项目客户提供的原始需求文档中,有下面这样的一段话,请你仔细阅读,看看能不能将你搞晕?“本项目是在一期的基础上增加对电缆、通讯工程的管理和施工详细数据的记录和统计,使整个系统更好的管理各工程项目从中标开始到竣工验收的全部过程和资料和分析施工过程的数据。本系统将一条或一个标段的架空电力线路工程定为一个单位工程,即系统中的一个工程项目;每个单位工程分为若干个分部工程;每个分部工程分为若干个分项工程;每个分项工程中又分为若干相同单元工程。”这段话中带下划线的文字,可能是本系统的一些关键业务概念。如果你还没有晕的话,请回答下面的问题:1)你能用一句话描述这个系统是做什么的吗?2)这段话有什么业务概念?每个业务概念是什么意思?3)这些业务概念之间是怎样的关系?上面那段文字充斥了大量的术语、概念(带下划线的字),如果你不是专业人士,恐怕难以读懂上述文字。项目初期,我们往往对业务一无所知,我们最急迫需要解决的问题就是理清楚这些业务概念以及它们的关系。每个软件系统都会涉及到很多人、业务概念和物品等,这些东西之间可能会有很多关系,发生很多事情。类图能帮助我们识别出这些人、业务概念、物品和事情等,并理清它们的关系。什么是类?你大概了解了类图的用途了吧?我们暂时不去深究那段让人头晕的业务描述,我们先看看什么是类?需求中提到的各种业务概念、人物等,经过抽象后我们都可以视之为类。为了更好地体验什么是类,请看下面这个练习。练习:如果对本书的读者进行分类,你会如何分类呢?强烈建议你先思考写下答案后才继续往下看。�男人、女人活用UMLUMLUMLUML——需求分析高手第3333章作者:张传波分析业务模型——类图本文档最后更新时间:2011-8-32011-8-32011-8-32011-8-33333/28282828人无非就是男人和女人两种,所以本书的读者不是男人就是女人。这样分类合适吗?男人和女人在看这本书的时候,会有什么差异吗?将书的读者分为男人和女人,有什么好处?如果不分为男人和女人,分为老人与年轻人,这样合适吗?�学生、在职人员学生和在职人士读本书的时候应该是有所差异的,毕竟两者的基础不太一样。如果你是本书的作者,你觉得本书的目标读者是谁呢?编写本书时,你会更照顾学生还是在职人士呢?我们对读者进行分类,并不是为了分类而分类,而是希望通过对读者这个群体进行分析,写出一本内容更精彩销量更好的书。将某类东西归纳为一起,可以称为一个类。类有很多种提炼角度,我们需要根据系统的目标、业务的场景等,选取合适的角度对事物进行归纳。什么是类图?只有一个类的类图,可能就是最简单的类图了,请看下图:图1.1只有一个类的类图一个类就是一个矩形的方框,最上面是类的名字,中间是属性(Attribute),最下面是操作(Operation)。表示一个类时,可只显示类名,也可以只显示类名和属性,或者是类名和操作。我们看看这个属性:+属性1:int。前面的“+”号表示这个属性是public类型的,实际上在需求分析时,不需要管属性是public还是private,全部画成public就可以了。冒号后面的int,表示属性的类型是int型(整数型),往往在需求分析初始阶段,可不必标识属性的类型。至于操作,用类图进行业务建模时,一般不需要标识出来。一个类图通常不止有一个类,有多个类时,我们还需要表达出类之间的关系,后面我们将介绍类之间的关系。如何识别类?用类图获取需求的大致步骤如下:1)识别出类。2)识别出类的主要属性。3)描绘出类之间的关系。4)对各类进行分析、抽象、整理。我们通过下面这个练习来体验一下步骤1、2。练习:你需要做一个培训管理系统,请你用类图识别出课室中有什么人?这些人有什么关键属性?强烈建议你先独立完成才继续阅读下文。课室中有以下两类人:活用UMLUMLUMLUML——需求分析高手第3333章作者:张传波分析业务模型——类图本文档最后更新时间:2011-8-32011-8-32011-8-32011-8-34444/28282828图1.2学生与讲师1说明:该图是类图的简单画法,只表达了类名。这两个类有这样的关键属性:图1.3学生与讲师2说明:上面的类图同时表达了类名和类的属性。属性没有标记public还是private,也没有被标记属性的类型。业务建模时类图的属性可以看成全部是公开的,也不必标记属性的类型。这个练习的场景是:你需要做一个培训管理系统,所以你识别出类以及他们的属性的时候,务必从这个角度出发。如果你得到的类是男人和女人,那就可能没有什么意义了。如果你识别出来的属性是身高、体重,这些属性无论是属于学生还是老师,对于培训管理系统来说,可能是没有什么价值的。思考你识别出来的类的属性,能帮助你判断这个类是否合适。每一个类应该具备能表征它核心特点的关键属性,而一般的无特别意义的属性,可不必标记进去。类图的基本语法是很简单的,但要体会什么是类,准确识别出类就不是那么简单了。实际工作中,我们需要将需求调研中了解到的所有业务对象、人物等列出来,画出他们的关系,反复推敲,逐步才能得到合适的业务模型。下面我们将开始学习类之间的关系。1.31.31.31.3类之间的关系表达类之间关系时,类只需要画出名字就可以了,属性和方法可以省略显示。“直线”关系A、B两个类,它们之间有关系,但又不能确定是怎样的关系,我们

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功