zoukankan      html  css  js  c++  java
  • UML类图

    通过实例搞清类与类的关系以及类与接口的关系,同时学会类图。

    开始:


    注意:有资料对接口的表示法分为:矩形表示法,棒棒糖表示法,本文用Rational Rose工具画的图,Rational Rose没有矩形表示法表示接口一项。

    看上面类图分三层:第一层:表示类名。第二层表示类的特性,通常是字段或属性。第三层表示类的操作,通常指的是方法和行为。

    这张图表示唐老鸭实现了讲人话的接口。用java代码表示为:

    接口用一个带有圆圈来进行表示,同过一条Realize线与实现它的类相连接。

    interface  Language{
      
      void speak();
    }


    该图表示的是继承关系,用空心三角形和实线来表示。

    class  Bird extends Animal{
    
    }
    关联关系,用实现箭头表示,企鹅需要知道气候变化来了解气候规律,当一个类知道另一个类时,可有关联表示。

    class Penguin extends Bird{
    
      private Climate climate; //在企鹅中引用到气候Climete 对象。
    }


    大雁是群居动物,每一个大雁属于一个雁群,一个雁群可以有多个大雁。它们属于聚合关系。术语这样讲:聚合表示一种弱的”拥有“关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。刚开始我不太理解这句话,后来想通了,大雁离开了雁群依然是一个独立的个体,从代码上也许更好理解这句话。

    class WideGooseAggregate{
    
      private WideGoose  []  arraryWideGoose; //在雁群WideGooseAggregate类中,有大雁数组对象arrayWideGoose。
          } 
    
    聚合关系用空心的菱形和实现箭头表示。

    合成也叫组合是一种强的”拥有关系“体现了严格的部分和整体的关系,部分和整体的生命周期一样。合成关系的连线两端有数字表示基数,表明这一段类可以有几个实例。一个鸟俨然只有两个翅膀。若一个类有无数个实例的话,用n表示。关联关系和聚合关系也可以有基数。合成关系用实心的菱形和实线箭头表示。

    class Bird{
    
     privite Wing wing;
       
       public Bird(){
          wing  = new Wing();//在Bird类中初始化时,实例化wing,它们之间同时生成。
        }
    }


    动物依赖水和氧气才能存在。它们是依赖关系,用虚线箭头表示。

    abstract class Bird{
    
      public metaBolism(Oxygen oxygen,Water water){
    }
    }

    看一个不错的实例分析,加深理解:


    上图用Enterprise Architect 7.5所画。

    1. 通知分为一般通知、割接通知、重保通知。这个是继承关系。

    2. NoticeService和实现类NoticeServiceImpl是实现关系。

    3. NoticeServiceImpl通过save方法的参数引用Notice,是依赖关系。同时调用了BaseDao完成功能,也是依赖关系。

    4. 割接通知和故障单之间通过中间类(通知电路)关联,是一般关联。

    5. 重保通知和预案库间是聚合关系。因为预案库可以事先录入,和重保通知没有必然联系,可以独立存在。在系统中是手工从列表中选择。删除重保通知,不影响预案。

    6. 割接通知和需求单之间是聚合关系。同理,需求单可以独立于割接通知存在。也就是说删除割接通知,不影响需求单。

    7. 通知和回复是组合关系。因为回复不能独立于通知存在。也就是说删除通知,该条通知对应的回复也要级联删除。


    用Rational Rose 工具生成java代码:

    注意:工具本身没有达到生成的代码准确无误。

    步骤:【1】选择Tools(工具)|java/j2EE|Project Specification(项目规范)命令。

    【2】在classpath下添成的路径,可以选择的目标是生成一个jar/zip文件中或在一个目录中

    【3】选择Tools|java/j2EE|Generate Code(生成代码命令来生成代码)。

     以下面的类模型为例:

        生成的代码如下:

    //Source file: C:\Users\xx\Desktop\Book.java
    
    import Title;
    
    public class Book 
    {
       private Long bookId;
       private Integer titleId;
       private String iSBN;
       private String author;
       private String publisher;
       private String name;
       private Date publishDate;
       
       /**
        * @roseuid 548EC70F0019
        */
       public Book() 
       {
        
       }
    }
    


    也可以逆向工程:

    为了方便用刚刚生成的代码来逆向工程。选择工具Tools|java/j2EE|Reverse Engineer命令来逆向工程。

    为了避免影响,我们把上面的代码:

    //Source file: C:\Users\xx\Desktop\Book.java
    /**
    * @roseuid 548EC70F0019
    */     去掉,最后生成的就是我们上面的那个类模型。



    结束


    参考:

     http://www.uml.org.cn/oobject/201104212.asp


    注意注意

    注意:

  • 相关阅读:
    ZendFramwork配置
    JS控制页面前进、后退
    PHP乱码
    php 文件和表单内容一起上传
    mysqli常用命令
    图解SQL多表关联查询
    mysql默认字符集修改
    mysql控制台命令
    Nanami's Digital Board

  • 原文地址:https://www.cnblogs.com/bigdata1024/p/8387465.html
Copyright © 2011-2022 走看看