<八>面向对象分析之UML核心元素之分析类
一:基本概念
---->在那大数项目中,分析类是被忽视的一种非常有用的元素。
---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处理的主要抽象概念的“第一个关口”。如果期望获得系统的“高级”概念性简述,则可对分析类本身进行维护,分析类还可产生系统设计的主要抽象——系统的设计类和子系统。
二:分析类的性质
----->分析类代表系中主要的“职责簇”,这以为着分析类是从功能性需求向计算机实现转化过程中的“第一个关口”
----->分析类可以产生系统的设计类和子系统,这代表着计算机实现是可以通过某中途径产生出来,而不是拍脑袋拍出来的。
三:分析类的版型,是类(class)的版型
【1】边界类
---->边界类是一种用于对系统外部环境与内部运作之间的交互进行建模的类。
--->参与者与用例之间应当建立边界类
--->用例与用例之间如果有交互,应当为其建立边界类。
(1)一个用例如果要访问另一个用例,直接访问用例内部对象是不好的结构,这样将导致紧耦合的发生,而边界类可以格力这种直接访问,其作用相当于门面模式。在最终实现时用例之间的边界类可以演化成一组API,一组JMS消息或是一组代理类。
--->如果用例与系统边界之外的非人对象交互,例如第三方系统,应当为其建立边界类。
(1)这通常是因为异构系统,异构数据,访问权限,安全通道等原因。在具体实现时,边界类可以演化为中介和通信协议。中介的例子如网关,通信中间件,代理服务器,安全认证服务器,webservice,SOA组件。通信协议的例子如HTTP,FTP,SSL,RMI,SOAP等
---->在相关联的业务对象有明显的独立性要求,则他们可能在各自的领域内发展和变化,但又希望互不影响时,也应当为它们建立边界类。
---->从架构角度上来说,边界类主要位于展现层。边界类的获取对架构设计中展现层有着重要的指导意义。
一个好的边界类应该有以下特点:
(1)边界类应该有主语提高系统的可用性
(2)边界类应该尽可能地保持在较高的层次(如概念层次)上
(3)边界类应该合理封装介于系统与主角之间的交互。
(4)如果主角改变他们为系统提供输入的方式,边界类就应该是唯一需要改变的对象。
(5)如果系统改变为主角提供输出的方式,边界类就应该是唯一需要改变的对象。
(6)边界类必须“知道”其他对象类型(例如控制对象和实体对象)的需求,以便他们能够得以实施,并且对于“系统内部元素”报纸其可用性和有效性
【2】控制类
----->控制类对于一个或几个用例所特有的控制行为进行建模。控制对象(控制类的实例)通常控制其他对象。因为他们的行为具有协调性质。控制类将用例的特有行为进行封装
----->控制类来源于对用例场景中行为的定义,换句话说,控制类来源于对用例场景当中动词的分析和定义,包括限制动词的描述。
--->例如我们曾经提到过的寄信人到邮局寄信的用例场景。该场景描述为:寄信人到达邮局,购买信封,经信装入信封,写上地址,称重,计算邮资,购买邮票,贴上邮票,邮寄信件,拿走回执。在这个场景中,购买,装入,写上,计算,购买,贴上,邮寄的行为都可以成为控制类的来源。
---->在提取控制类时,要认真考察用例场景中的行为,如果这些行为在执行步骤,执行要求,或者执行结果上具有类似的特征,应当考虑进行适当的抽象。例如合并或者抽取超类。同时,也要考察这些行为是否对要建设的系统产生影响进而进行一些取舍。例如上面的场景,装入,写上,贴上的行为是寄信人的人工行为,不会对寄信系统产生影响,因而可以舍去。
---->在UML的定义中,认为控制类主要起到协调对象的作用。例如从边界类通过控制类访问实体类。或者实体类通过控制类访问另一个实体类。但是UML的定义也认为不必强制使用控制类,例如边界类也可以直接访问实体类。
【3】实体类
---->实体类是用于对必须存储的信息和相关行为建模的类。实体对象(实体类的实例)用于保存和更新一些现象的有关信息。例如,事件,人员或者一些现实生活中的对象。实体类通常都是永久性的。他们所具有的属性和关系是长期需要的。有时甚至在系统的整个生存期都需要。
---->实体类源于业务模型中的业务实体。
四:分析类的三高
---->分析类是从业务需求向系统设计转化过程中最为主要的元素。他们在高层次抽象出系统的实现业务需求的原型。业务需求通过分析类被逻辑化,成为可以被计算机理解的语意。分析类的抽象层次有三高的特点,正是因为这些特点,让分析类成为比设计类“更好用”的元素,也是作者喜欢使用分析类的最重要的原因。分析类的三高分别是:
<八>面向对象分析之UML核心元素之分析类的更多相关文章
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <五>面向对象分析之UML核心元素之边界
一:基本概念
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <七>面向对象分析之UML核心元素之包
一:基本概念
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- PHP创建XML文件讲解
<?php #code by coder_apex 2007-6-15 #自动生成一个如下的XML文件 # # <?xml version="1.0& ...
- HDU2594 Simpsons’ Hidden Talents 字符串哈希
最近在学习字符串的知识,在字符串上我跟大一的时候是没什么区别的,所以恶补了很多基础的算法,今天补了一下字符串哈希,看的是大一新生的课件学的,以前觉得字符串哈希无非就是跟普通的哈希没什么区别,倒也没觉得 ...
- ZOJ 3778 Talented Chef(找规律,模拟计算,11届ACM省赛,简单)
题目链接 2014年浙江省赛C题,当时觉得难,现在想想这题真水.. 找规律: 若 最大的那个步骤数*m-总和>=0,那么答案就是 最大的那个步骤数 . 否则 就要另加上不够的数量,具体看代 ...
- hdu 4324 Triangle LOVE(拓扑排序,基础)
题目 /***************************参考自****************************/ http://www.cnblogs.com/newpanderking ...
- IText 生成页脚页码
做doc文档报表的时候可能遇到这样的需求: 每一个页面需要页码,用IText可以完成这样的需求. IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.ja ...
- hdu1874 畅通工程续
http://acm.hdu.edu.cn/showproblem.php?pid=1874 //标准最短路模板 //需要注意的是两点间可能有多组 //需要取最短的 #include<iostr ...
- cojs 白树黑 黑树白 题解报告
黑树白 首先如果不是强制在线,这个题用莫队+树状数组就可以在O(n*sqrt(n)*log(n))的时间内搞定 如果没有修改操作,可以直接上主席树就可以辣 我们考虑修改操作,某一个修改操作对于某一个查 ...
- POJ1118 Lining Up
快弄死我了 最后的原因是abs和fabs的区别... 说点收获:1.cmp函数返回的是int,所以不要直接返回double相减的结果2.define inf 1e9和eps 1e-93.在整数相除得到 ...
- 去掉eclipse的xml和js验证
一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...
- HTML5 增强的页面元素
一.HTML5 改良的 input 元素的种类 1.<input type="number" id="num1"> var n1 = documen ...