一:基本概念
        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素。
        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处理的主要抽象概念的“第一个关口”。如果期望获得系统的“高级”概念性简述,则可对分析类本身进行维护,分析类还可产生系统设计的主要抽象——系统的设计类和子系统。
二:分析类的性质
        ----->分析类代表系中主要的“职责簇”,这以为着分析类是从功能性需求向计算机实现转化过程中的“第一个关口”
        ----->分析类可以产生系统的设计类和子系统,这代表着计算机实现是可以通过某中途径产生出来,而不是拍脑袋拍出来的。
三:分析类的版型,是类(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. [转载]C# ListView用法详解

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

  2. CSS属性--过渡(transtion)

    首先介绍一下transition的属性取值: transition-property : 主要设置对象中的参与过渡的属性,包括(border-color,background-color,color) ...

  3. GhostDoc:生成.NET API文档的工具 (帮忙文档)

    在 Sandcastle:生成.NET API文档的工具 (帮忙文档) 后提供另一个生成API文档的工具.   1) 准备工作 安装GhostDoc Proc. 收费的哦.... 这个工具的优势是不像 ...

  4. [设计模式] 4 原型模式 prototype

    设计模式:可复用面向对象软件的基础>(DP)本文介绍原型模式和模板方法模式的实现.首先介绍原型模式,然后引出模板方法模式. DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创 ...

  5. spoj 147

    dfs枚举真值 #include <cstdio> #include <cstring> #include <cstdlib> #include <stack ...

  6. 暑假集训单切赛第二场 UVA 10982 Troublemakers

    题意:将点放在两个集合,同一个集合的边保留,不同集合的边删去,使得边至少减少一半.  输出任何一种方案即可.如果不能,输出Impossible 思路:设如果两个人为一对捣蛋鬼,则two[i][j]=t ...

  7. linux入门教程(六) Linux文件与目录管理

    在linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 这就是一个文件的路径.如果你告诉系统这个文件的路径,那么系统 ...

  8. lintcode: 二叉树的锯齿形层次遍历

    题目 二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ ...

  9. JavaWeb项目开发案例精粹-第3章在线考试系统-007View层

    0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  10. Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(<idbag><collection-id>)

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...