• 机房收费系统(合作版)总结——技术篇(二)


    二、面向对象分析


    (一)根据用例描述获取对象类。

        关于用例描述我上一篇已经讲解了用例的核心是用例描述,在用例描述里面,我们要根据用例来获取对象类。

     

        

        由上我们可以看到,我们按照用例描述分析出来了很多的对象,这些对象都需要用么,或者是到底用哪些呢?


    (二)抽象关键类


    1.获取关键类的表格


        刚才大家也看到了,对象很多,也是很杂乱,那应该怎么办呢?

        所以我们要学会获取关键类。

        怎么获取?

        请看下图

     


        按照上面确定关键类文档你肯定要问我你怎么知道要排除这个类的,而不是其他类的,或者你怎么知道排除原因的?

        答:其实是通过CRC卡来过滤的。请看下一部分。


        下面是关于抽取关键类的一点知识拓展:

        1)关于关键类的来源:

        确定关键抽象我觉得并不是从零开始做的,应该是最大程度利用资源,我们要尽可能分析出来对象,并抽取为关键类。很多人喜欢在分析对象按照:边界对象,控制对象,实体对象划分。(笔者也是这样)所以在抽取关键类的时候,笔者是在“实体对象”里面抽取的。所以关键抽象通常被称为实体类。

        2)如何识别关键抽象

        其实识别关键抽象并不是很复杂,主要有以下两点:

        首先,从来源上找出关键抽象集合,并且做出相应的分配;其次,将被确定的关键抽象以类的形式加入简单模型去,为每个关键抽象做出文字说明。 

         

    2.CRC卡进行职责分配


        首先先了解什么是CRC卡,CRC卡的全称Class-Responsibility-Collaborator。翻译成中文就是类名、类的职责、类的协作关系,在这里,我把它用来作为过滤候选关键抽象,确定系统要处理的核心概念。

        要识别一个候选关键抽象是否是一个真正的关键抽象,应该先确定这个候选关键抽象担负的职责,同时是否有写作的关系。

    如下图


        根据上图可以看到我已经分配了职责,协作,下面是步骤:

        1) 选取一个候选关键抽象

        2) 从用例描述里面查找职责和协作

        3) 更新获取关键类的表格。

        下面是关于CRC一点扩展:

        问:为什么用 CRC 卡,而不用文档或者更先进的 UML 工具?


       1)   卡片上面的空间很小,这样就可以防止我们给这个类太多的职责。如果一个类的职责太多的话(比如,超过 4 个) ,尝试以更抽象的方式去考虑一下,将职责划分。


       2)  CRC 卡主要是用在探索或者讨论类的设计的阶段。如果我们觉得这个设计不行的话,我们既不用修改文档,也不用修改类图,只要把卡片丢了就行了。此外,一旦设计完成,我们就可以把所有的卡丢了。它们不是用
       来做文档的。


       3.如果我们觉得现在的卡片不合适,之前设计的比较好,我们只要简单的把之前的卡片拿出来组合就行了。 CRC 卡主要是用来快速的组织设计。我们不应该花很长的时候在做 CRC 卡上,也不要指望按照 CRC 卡的设计就一切 OK 了。在编码的时候,肯定还会不断的调整设计。将设计与编码结合起来,我们才能做出好而有效的设
    计。


       对于 CRC 的使用方法并没有一个正式的定义,或者说,它要怎么用,并没有任何限制。我们不用太在意每张卡上写了什么,遗漏了什么。对于有些人来说,在每张卡上写个类名就足够了。而有些人认为,把职责也写在 CRC卡上,会帮助他们更好的思考。而有些人则希望把协作关系也写上去。我们也不用在意每张卡要跟哪张卡放在一
    起。一句话,CRC 是用来帮忙理清设计的思路,它不是 UML 图,也不是精确的类结构图。只要我们在处理这些卡的时候不断的讨论,我们设计的思路将会变成非常清楚。

  • 相关阅读:
    各种集群服务
    cdn
    网页请求的完整过程
    html
    ajax异步请求技术
    浅谈前端渲染与后端渲染的区别
    html与php
    Ubuntu安装anaconda3
    win10安装Ubuntu系统
    删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/tanqianqian/p/5975040.html
Copyright © 2020-2023  润新知