<八>面向对象分析之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核心元素之组件
组件
随机推荐
- pureftpd安装配置-pureftp参数详解(一)
1. 下载 #cd /usr/local/src/ #wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.g ...
- 不安装Oracle客户端远程连接Orcale数据库
本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端. 下载地址(此处提供的是官方各版本下载地址): Windows 32位系统中使用的客户端下载地址其他系统环境中使用的客户端下载 ...
- 电脑问题交流QQ群
各种电脑问题交流QQ群号 164853622 系统重装 系统恢复 系统出问题 电脑主页 修改 主页 搜狗 软件卸载 顽固 病毒 讨论
- 高性能网络编程1----accept建立连接
转 http://taohui.org.cn/tcpperf1.html 陶辉 taohui.org.cn 回到应用层,往往只需要调用类似于accept的API就可以建立TCP连接.建立连接的流程大 ...
- Code::Blocks生成的EXE文件执行错误解决:The program can't start because libgcc_s_dw2-1.dll is missing
想用C++弄个简单东东,看有没有可行性, 开发软件,微软的太大太肿,就选用了Code::Blocks. 测试HELLO时,在工程环境中没问题的,但生成的EXE执行有问题, 报什么 libgcc_s_d ...
- Android 监听ListView、GridView滑动到底部
// 监听listview滚到最底部 mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onS ...
- 搭建网站 discuzx ecshop php
1.http://www.comsenz.com/downloads/install/discuzx下载
- *[hackerrank]ACM ICPC Team
https://www.hackerrank.com/contests/w6/challenges/acm-icpc-team 这道题在contest的时候数据量改小过,原来的数据量需要进行优化才能过 ...
- eclipse安装插件的各种方法
做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件.一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了.下面介绍Eclipse插件的安 ...
- 搜索之BM25和BM25F模型
www.netfoucs.com/article/wdxin1322/94603.html#