zoukankan      html  css  js  c++  java
  • 积跬步,聚小流------关于UML类图

    UML的存在

    类图是使用频率比較高的UML图,它用于描写叙述系统中所含的类以及它们之间的相互关系,帮助人们简化对系统的理解,也是系统分析和设计阶段的重要产物,也是系统编码和測试的重要类型根据。


    UML的表示方法


    它的表示方法也比較简单,分成三层,第一层是类名。第二层是属性,第三层是方法。

    而 属性和方法中用到的“+”表示public,“-”表示private,“#”表示protected。以及属性的写法:权限修饰符、属性名(方法名),然后是数据类型(或返回值)。这些都是基本的语法,都比較明显也比較简单。

    当然还有接口和抽象类的表示方法:

    用来描写叙述接口;

    用来描写叙述抽象方法。

    UML描写叙述类图之间的关系

    类图之间的关系有四种:泛化关系、实现关系、依赖关系、关联关系,而关联关系又分为普通关联关系、聚合关系和合成关系。而其实这些关系我们easy理解,可很多其它时候我们要注意怎样转化成java代码:

    泛化关系 

    泛化关系实质上就是我们的继承,类继承与还有一个类,这个代码应该好些,我们仅仅须要记一下UML表示方法就好了


    (图片是从网上任意转载的)
    这里须要注意的是集成的方向,空心箭头加实现表示继承,箭头指向谁表示继承于谁。
    至于 java中关系代码则为public class Tiger extends Animal(){};

    实现 关系 

    这就是来相对于接口的,描写叙述实现接口,这个我们也来简单记下:

    (图片是从网上任意转载)
    作为对照,与继承类似的是都是空心箭头,而与继承不同的则是虚线表示实现;
    而java代码在这里的写法则为public class PenBrush implents IBrush(){};

    依赖关系

    把依赖关系放在第三个。是由于它是类与类之间最浅的关系。它能够是单向的,也能够是双向的,可是我们通常都用单向的。避免双向的。

    (图片是从网上任意转载)
    依赖关系解释起来比起继承和实现来稍微有些麻烦。由于继承和实现我们经经常使用到。并且比較单一。有着明白的上下级,而依赖关系则不然,就像图中的人都依赖于计算机来作某些事情。就像在《大话设计模式》中动物依赖空气和水,空气和水是不同于动物的单独事物,就像计算机是不同于人类的独立的事物一样,它是独立存在的,而人类在计算或者其他行动中须要用到计算机,就像动物的呼吸须要空气,喝水须要水一样,它的行为中可能会用到还有一个独立的存在。而假设不进行这个行为可能就不须要动用这个存在,就像一个死去的动物,已经不要水和空气,但是它仍然是一个动物,这个类是不会变的。

    解释起来可能相比較有些麻烦,可是表示方法还是非常easy的,一个虚线加上实心箭头就够了;
    至于代码实现方法。则就须要详细情况进行详细对待了。

    整体上说,通常能够表现为:

    ①:被指向的类。在指向它的类中,做为一个方法的參数,这是最经常使用的一种方式。
    public class Person{
    	public void count(Computer computer){
    		
    	}
    }
    ②:还能够将被指向的类。在指向它的类中。作为一个方法中的局部变量;
    public class Person{
    	public void count(){
    		Computer computer=new Computer();
    	}
    }
    ③:再有一种方式就是被指向的类中含有静态方法。而指向它的类调用它的静态方法;

    public class Computer(){
           public static void test(){
    
           }
    }
    public class Person{
    	Computer.test();
    }

    关联关系:

    最后就是我们的关联关系了,说它分为三种状态:普通关联关系、聚合关系和合成关系,他们最大的共同之处就是都是关联关系,而代码表现出来的方式就是被指向类会作为指向类的成员变量出现,而我们再来看看它们有什么不同?

    普通关联关系


    (图片是从网上任意转载)
    这是最普通的关联关系。代码也非常easy写:
    public class Customer{
      private Address address。
    }
    而对应的还有自关联和双向关联,而这些也都是将对应的类做成成员变量就可以。自关联将自己,双向关联互相做成。

    聚合关系

    关联关系就像是一个老人讲故事,要想知道这个事情,要从多少多少年说起了,那个年代那个背景可能会让你理解的更深刻。而聚合关系则不不过这样,不不过那个时代造成了这样,而是主人公可能就在一个组织里,那个组织的人的共性,他是组织里的人。组织都是由他这类人组成的。


    (图片是从网上任意转载)
    它的描写叙述形式比起简单的关联来多了一个菱形。而菱形所在的类指向对方。
    它的代码编写,比起普通关联要麻烦了非常多:
    public class Car{
       private Engine engine;
       public Car(Engine engine){
         
      }
      public void setEngine(Engine engine){
    
      }
    }
    它不仅将被指向对象作为了成员变量。还将成员对象作为构造方法以及set方法或其它业务方法的參数。

    合成关系

    合成关系,还有人把它叫做组合关系。它之所以不同于聚合关系,是由于关联的对象在本质上是在一起的。就像四肢对于生物。就像数字对于计算。

    (图片是从网上任意转载)
    鉴于它的同根同源性,菱形变成了实心。而对应的程序也做出了变化:
    public class Head{
       private Mouth mouth;
       public Head(){
           mouth=new Mouth();
       }
    }
    它是在总体的构造方法中直接实例化成员。


  • 相关阅读:
    python+Appium自动化:记录遇到的坑
    python+Appium自动化:Appium元素检测
    python+Appium自动化:id元素定位
    python+Appium自动化:运行第一个appium脚本
    python+Appium自动化:Capability配置简介
    python+Appium自动化:Appium-desktop界面简介
    Appium简介以及环境安装
    monkeyrunner录制和回放功能
    monkeyrunner脚本录制和回放下载
    MonkeyRunner的简介与综合实践
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5180928.html
Copyright © 2011-2022 走看看