一:基本概念
        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素。
        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处理的主要抽象概念的“第一个关口”。如果期望获得系统的“高级”概念性简述,则可对分析类本身进行维护,分析类还可产生系统设计的主要抽象——系统的设计类和子系统。
二:分析类的性质
        ----->分析类代表系中主要的“职责簇”,这以为着分析类是从功能性需求向计算机实现转化过程中的“第一个关口”
        ----->分析类可以产生系统的设计类和子系统,这代表着计算机实现是可以通过某中途径产生出来,而不是拍脑袋拍出来的。
三:分析类的版型,是类(class)的版型
【1】边界类
                  ---->边界类是一种用于对系统外部环境与内部运作之间的交互进行建模的类。
                --->参与者与用例之间应当建立边界类
                --->用例与用例之间如果有交互,应当为其建立边界类。
                        (1)一个用例如果要访问另一个用例,直接访问用例内部对象是不好的结构,这样将导致紧耦合的发生,而边界类可以格力这种直接访问,其作用相当于门面模式。在最终实现时用例之间的边界类可以演化成一组API,一组JMS消息或是一组代理类。
                --->如果用例与系统边界之外的非人对象交互,例如第三方系统,应当为其建立边界类。
                        (1)这通常是因为异构系统,异构数据,访问权限,安全通道等原因。在具体实现时,边界类可以演化为中介和通信协议。中介的例子如网关,通信中间件,代理服务器,安全认证服务器,webservice,SOA组件。通信协议的例子如HTTP,FTP,SSL,RMI,SOAP等
               ---->在相关联的业务对象有明显的独立性要求,则他们可能在各自的领域内发展和变化,但又希望互不影响时,也应当为它们建立边界类。
               ---->从架构角度上来说,边界类主要位于展现层。边界类的获取对架构设计中展现层有着重要的指导意义。
                一个好的边界类应该有以下特点:
                (1)边界类应该有主语提高系统的可用性
                (2)边界类应该尽可能地保持在较高的层次(如概念层次)上
                (3)边界类应该合理封装介于系统与主角之间的交互。
                (4)如果主角改变他们为系统提供输入的方式,边界类就应该是唯一需要改变的对象。
                (5)如果系统改变为主角提供输出的方式,边界类就应该是唯一需要改变的对象。
                (6)边界类必须“知道”其他对象类型(例如控制对象和实体对象)的需求,以便他们能够得以实施,并且对于“系统内部元素”报纸其可用性和有效性

【2】控制类
                  ----->控制类对于一个或几个用例所特有的控制行为进行建模。控制对象(控制类的实例)通常控制其他对象。因为他们的行为具有协调性质。控制类将用例的特有行为进行封装
        ----->控制类来源于对用例场景中行为的定义,换句话说,控制类来源于对用例场景当中动词的分析和定义,包括限制动词的描述。
        --->例如我们曾经提到过的寄信人到邮局寄信的用例场景。该场景描述为:寄信人到达邮局,购买信封,经信装入信封,写上地址,称重,计算邮资,购买邮票,贴上邮票,邮寄信件,拿走回执。在这个场景中,购买,装入,写上,计算,购买,贴上,邮寄的行为都可以成为控制类的来源。
        ---->在提取控制类时,要认真考察用例场景中的行为,如果这些行为在执行步骤,执行要求,或者执行结果上具有类似的特征,应当考虑进行适当的抽象。例如合并或者抽取超类。同时,也要考察这些行为是否对要建设的系统产生影响进而进行一些取舍。例如上面的场景,装入,写上,贴上的行为是寄信人的人工行为,不会对寄信系统产生影响,因而可以舍去。
        ---->在UML的定义中,认为控制类主要起到协调对象的作用。例如从边界类通过控制类访问实体类。或者实体类通过控制类访问另一个实体类。但是UML的定义也认为不必强制使用控制类,例如边界类也可以直接访问实体类。

【3】实体类
         ---->实体类是用于对必须存储的信息和相关行为建模的类。实体对象(实体类的实例)用于保存和更新一些现象的有关信息。例如,事件,人员或者一些现实生活中的对象。实体类通常都是永久性的。他们所具有的属性和关系是长期需要的。有时甚至在系统的整个生存期都需要。
        ---->实体类源于业务模型中的业务实体。
   
四:分析类的三高
        ---->分析类是从业务需求向系统设计转化过程中最为主要的元素。他们在高层次抽象出系统的实现业务需求的原型。业务需求通过分析类被逻辑化,成为可以被计算机理解的语意。分析类的抽象层次有三高的特点,正是因为这些特点,让分析类成为比设计类“更好用”的元素,也是作者喜欢使用分析类的最重要的原因。分析类的三高分别是:
     

<八>面向对象分析之UML核心元素之分析类的更多相关文章

  1. <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

    设计类

  2. <四>面向对象分析之UML核心元素之用例

    一:基本概念        --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值.        --->所谓用例,就是一件事情,要完成这 ...

  3. <十>面向对象分析之UML核心元素之关系

    关系        --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构.        一,关联关系(association)

  4. <五>面向对象分析之UML核心元素之边界

    一:基本概念

  5. <三>面向对象分析之UML核心元素之参与者

    一:版型        --->在UML里有一个概念叫版型.有些书里也称类型,构造型.        --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...

  6. <十二>面向对象分析之UML核心元素之节点和设备

    节点,设备

  7. <七>面向对象分析之UML核心元素之包

    一:基本概念 

  8. <六>面向对象分析之UML核心元素之业务实体

    一:基本概念

  9. <十一>面向对象分析之UML核心元素之组件

    组件

随机推荐

  1. JavaScript高级---适配器模式

    一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...

  2. jQuery.validate errorPlacement

    在被验证的控件的后一个元素控制显示 errorPlacement: function(error, element) { element.next().css("color",&q ...

  3. TDD三个阶段

    TDD的三个阶段 红灯.绿灯.重构 :明确了实施TDD所要遵循的工作流 (需求--->测试-->代码[重构]) 红灯阶段:      为不存在的代码编写测试 绿灯阶段:      仅编写适 ...

  4. 我30天在Stack Overflow问答网站上回答问题的感受

    想法的萌芽 如果非要总结下我多年来是如何使用Stack Overflow的话,我的答案就是:打开网页,搜索问题,查看Stack Overflow的搜索结果,参考答案,最后再关掉网页. 我的生活已经离不 ...

  5. Windows下获取高精度时间注意事项

    Windows下获取高精度时间注意事项 [转贴 AdamWu]   花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: ...

  6. java:接口实例

    接口:打印机接口 interface Printer { public void read(); } 函数一:佳能打印机 class CanPrinter implements Printer { p ...

  7. IDEA15 File工具栏中没有 Import Project

    使用IDEA准备导入项目时发现没有Import Project选项... 解决办法: Settings > Appearance & Bechavior > Menus and T ...

  8. NSArray 初始化

    //NSArray长度不可变所以初始化的时候就赋值,并且最后以nil结尾 //此外需要注意NSArray不能存放C语言的基础类型 NSObject *obj=[[NSObject alloc]init ...

  9. linux kernel启动流程

    linux kernel启动是从./init/main.c中开始的,其大概流程是: 1. 调用start_kernel()函数: 2. start_kernel()调用rest_init()函数: 3 ...

  10. DNS主配置文件的几个选项

    options块中:   listen-on port 监听DNS查询请求的本机IP地址及端口      eg:listen-on port 53 { 192.168.0.78 };监听本机的192. ...