zoukankan      html  css  js  c++  java
  • UML类图相关实践

      最近看了下设计模式,其中无可避免会设计很多类图,UML类图对于学习设计模式很重要,关于设计模式,我也会在这里写上一写,这一篇关于UML类图的就先当个铺垫。

            1.先上一个简单的类图来简单说明下:

           

            1).其中MyClass代表的是类名。

            2).name,gender和age分别代表成员变量,其中+代表public,#代表product,-代表private,冒号后面的String标示的都是成员变量的类型。

            3).getAge和setAge代表的是方法,前面的+跟成员变量标示的意义一样标示public,其中setAge中的String标示接收一个String类型的参数,冒号后面的代表的是返回值。

            2.类与类之间的关系

            类与类之间的关系分为,关联关系,聚合关系,组合关系,依赖关系和泛化关系,下面分别说下

            1).关联关系:两个相对独立的对象,当一个对象的实例与另外一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。关联关系又分为单向关联,双向关联,自身关联和多维关联。

            单关联,写IO相关类时候都写过类似于这样的代码 new BufferInputStream(new FileInputStream("d:\my.txt"));

    其中BufferInputStream类持有一个FileInputStream的引用,通过构造方法传入的,这样就是一个单关联

                              

            双关联,举个简单的例子,我们都当过学生,我们都有很多老师,同样一个老师也有很多学生,类图如下

                              

          代码如下:

    public class Teacher {
        private final static List<Student> students = new ArrayList<Student>();
        public void putStudent(Student student) {
            students.add(student);
        }   
    }  
     
    public class Student {
        private final static List<Teacher> teachers= new ArrayList<Teacher>();
        public void putTeacher(Teacher teacher){
            teachers.add(teacher); 
        }  
    }

             自关联,说实话没想起什么好的例子,可以拿单例看下

               

             多维关联,例如一个页面可以有多个文本框,但一个文本框只能在一个页面下

                      

              2).聚合关系:聚合关联是一种特殊的关联. 它表示类间的关系是整体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成.

    比如一个软件工程专业有很多课程组成,其中Java这个课程从这个专业拿掉,这个专业还是软件工程,而Java还是可以单独存在的。

         

            3).组合关系:整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。

            说个人的例子吧,人由很多部分组成,其中一部分是骨骼,如果人没了,那其实骨骼也就没生命力了,骨骼不可能脱离人这个整体而单独存在。

          

            4).依赖关系:表示一个事物的使用需要另外一个事物的行为,就像老司机开车,除了老司机类的开车方法里需要调用车的移动方法。

           

          5).泛化关系:这就是一种继承关系,它代表父类和子类之间的关系。

          

           其实还有一种就是接口的实现关系

           

           好了这个UML类图就简单到这,画的不好,而且风格不统一(家里的版本和公司的不一样啊!),这个类图看的清楚对设计模式的学习很重要!就酱!

           参考:

                  http://blog.csdn.net/column/details/umlmodelingtechnolog.html

                  http://zhidao.baidu.com/link?url=-lT7C_ESkA-OZ_3onmrPHMI14dv2K2wxAuWhHFdyDd5WZvTTanxYBEZXbMDUlauKVmlNcXOmZwbt1R5QUXS4j4NV3ULgyI_7kMGPqZ-v6Yy

        
         作者: 重名 
         出处: http://www.cnblogs.com/daily-note 
    
  • 相关阅读:
    多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c
    多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c
    多目标遗传算法 ------ NSGA-II (部分源码解析)介绍
    遗传算法,实数编码的交叉操作之SBX(模拟二进制交叉)
    多媒体开发之wis-stream
    嵌入式驱动开发之--- 虚拟磁盘SBULL块设备驱动程序分析
    游戏开发之八卦图形生成
    目标跟踪之光流法---光流法简单介绍
    目标跟踪之高斯混合模型---cv实现
    嵌入式开发之davinci--- ipnc中用到的cmem
  • 原文地址:https://www.cnblogs.com/daily-note/p/5689179.html
Copyright © 2011-2022 走看看