概述

设计模式中常常使用UML来表示类与类,类与接口之间的关系,UML类图是设计模式入门必备的技能,感觉各种关系比较多,这里做一下总结。

类与接口的表示

类与接口通常是一个矩形框表示,一般分为3层,第一层显示类的名称,如果是抽象类则类名用斜体表示。第二层代表类的特性,通常是字段和属性,第三层是类的操作,通常表现为方法或者行为,其中+表示public,-表示private,#表示protect

常用关系

  • 继承

    继承关系用空心三角形+实线来表示,在java中体现为extends关键字

  • 实现接口

    实现接口用空闲三角形+虚线,在java中体现为implements关键字

  • 聚合关系

    聚合关系表现为一种弱拥有关系,体现为A对象可以包含B对象,但是B对象不是A对象的一部分。

    实现用空心菱形+实线;

    在java中可以体现为,一个类的数组或者通过setter或者getter方式注入到整体对象中

//数组对象形式
public class wideGooseAggregate{
    private WideGoose[] arrayWideGoose;//雁群类中有大雁的数组对象
}
//注入方式存在
public class Car {
        private Engine engine;  

        //构造注入
        public Car(Engine engine) {
            this.engine = engine;
        }  

        //设值注入
    public void setEngine(Engine engine) {
        this.engine = engine;
    }
    ……
    }  

    public class Engine {
        ……
    }

  • 组合关系

    组合关系也表示整体和部分之间的关系,体现出的是一种强拥有关系,即整体可以控制成员对象的生命周期,整体对象一旦不存在成员对象也将不存在。通常体现为成员对象在整体类构造方法中被new出来。

    用实心菱形+实线表示。
public class Bird{
    private Wing wing;
    public Bird(){
    wing = new Wing();
    }
}

  • 依赖关系

依赖关系,顾名思义,产生了依赖就会出现这个类的改变会带动另一个类的变化,一般体现在某个类的方法使用另一个类的对象作为参数。

用虚线+箭头表示。

abstract class Animal{
    public Metabolism(Oxygen oxygen,Water water){
    ……
    }
}

  • 关联关系

    一种结构化关系,用于表示一类对象和另一类对象有联系。在Java中通常表现为一个类的对象作为一个类的成员变量,即表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。

    用实线表示
public class Penguin{
    private Climate climate;
    ……
}

参考:

《大话设计模式》

http://blog.csdn.net/lovelion/article/details/7842898

UML类图简介的更多相关文章

  1. 18、面向对象基本原则及UML类图简介

    18.1.面向对象基本原则 18.1.1.面向抽象原则 抽象类特点: a.抽象类中可以有abstract方法,也可以有非abstract方法. b.抽象类不能用new运算符创建对象. c.如果一个非抽 ...

  2. 设计模式--UML类图简介

    UML:Unified Modelling Language是一种统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言. “+”表示pu ...

  3. UML类图的6大关系

    <小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...

  4. 设计模式-UML类图基础

    设计模式之序-UML类图那点事儿 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐的书 ...

  5. 设计模式之序章-UML类图那点事儿

    设计模式之序-UML类图那点事儿 序 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐 ...

  6. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  7. UML——在Visual Studio 2013/2015中设计UML类图

    1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...

  8. 图解六大UML类图关系

    在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...

  9. Visual Studio 2015中设计UML类图

    1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...

随机推荐

  1. Linux Debugging(八): core真的那么难以追踪吗?

    本周遇到了好几个core都很有典型性.在这里和大家分享下. 相信有过Linux编程经验的人,肯定都遇到过.感觉周围人很多对core有天然的恐惧感,尤其对刚入行不久的同学来说.当然了,也有工作好几年看到 ...

  2. Intent和PendingIntent的区别

    intent英文意思是意图,pending表示即将发生或来临的事情.  PendingIntent这个类用于处理即将发生的事情.比如在通知Notification中用于跳转页面,但不是马上跳转.  I ...

  3. SSH深度历险(七) 剖析SSH核心原理(一)

    接触SSH有一段时间了,但是对于其原理,之前说不出来莫模模糊糊(不能使用自己的语言描述出来的就是没有掌握),在视频和GXPT学习,主要是实现了代码,一些原理性的内容还是欠缺的,这几天我自己也一直在反问 ...

  4. Android 震动马达系统

    Android之 看"马达"如何贯通Android系统 (从硬件设计 --> 驱动 --> HAL --> JNI --> Framework --> ...

  5. 北大青鸟Asp.net之颗粒归仓

    自从小编走进编程的世界以来,学习的编程知识都是和C/S这个小伙伴握手,直到做完牛腩老师的新闻发布系统,才开始了小编的B/S学习生涯,和B/S初次谋面,小宇宙瞬间爆发了,看着自己的第一个B/S系统,牛腩 ...

  6. java方法重写和super关键字

    //java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //sup ...

  7. iOS中发送短信/发送邮件的实现 韩俊强的博客

    需要引入框架: MessageUI.framework 布局如下: 短信和邮件: #import "ViewController.h" #import <MessageUI/ ...

  8. Spring boot之hello word

    环境准备 一个称手的IDE(首选Myeclipse,也可以选Eclipse) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用I ...

  9. eclipse如何正确部署tomcat7

    eclipse如何正确部署tomcat7 单独运行apache-tomcat-7.0.65(startup.bat)后,在浏览器输入  http://localhost:8080  可以正常出现tom ...

  10. 【Unity Shaders】Using Textures for Effects——打包和混合textures

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...