类:用矩形框表示(类图分三层)

      第一层显示类的名称;(如果是抽象类,就用斜体显示)

      第二层是类的特性,通常就是字段和属性;

      第三层是类的操作,通常是方法或行为。

      (注意前面的符号,“+” 表示 public,“-” 表示 private,“#” 表示 protected)

   接口:(接口有两种表示方法)

      方法一:矩形表示法(矩形表示法与类图的区别主要是顶端有《interface》显示)

         顶端有《interface》

         第一行:接口名称

         第二行:接口方法

      方法二:棒棒糖表示法(小圆圈加一竖线)

         圆圈旁为接口名称

         接口方法在实现类中出现(这样好像看不出来类里面的哪些方法是继承自接口的)

   接下来就可以讲类与类,类与接口之间的关系了:

      继承关系:

          继承关系用空心三角形 + 实线来表示;(从子类指向父类)

            class Bird : Animal
        {         }

      类实现接口:

          空心三角形 + 虚线(从类指向接口)

            class WideGoose : IFly
        {         }

      关联关系:(在一个类中引用到了另一个类的对象,换句话说就是,以被引用类的对象作为一个字段或属性 -- 这里是一种“需要知道”的关系,而不像合成关系中有初始化与实例化的限制)

          关联关系用实线箭头来表示;  (指向字段或属性类)

            class Penguin : Bird
        {
        private Climate climate; //关联关系体现在:在企鹅 Penguin类中,引用到气候 Climate对象
        }

      聚合关系:一种弱的“拥有”关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分(如:在“雁群”类中有“大雁”数组对象)

          聚合关系用空心的菱形 + 实线箭头来表示;

            class WideGooseAggregate
        {
        private WideGoose[] arrayWideGoose; //聚合关系体现在:在雁群类中,有大雁“数组对象”
        }

      合成关系:一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。(鸟和其翅膀就是合成关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的 —— 在“鸟”类中,初始化时需要实例化翅膀类)

          合成关系用实心的菱形 + 实线箭头来表示;(另外,合成关系的连线两端还有一个数字 “1” 和另外一个数字,这被称为基数,表明这一端的类可以有几个实例。如果一个类可能有无数个实例,就用“n”来表示)(聚合关系也可以有基数)

            class Bird
        {
        private Wing wing;
        public Bird()
        {
        wing = new Wing(); //除了说字段中包含Wing类对象,初始化时还需要实例化翅膀Wing
        }
        }

      依赖关系:类的方法中需要以别的类的对象作为参数

          依赖关系用虚线箭头来表示。

            class Animal
        {
        public void MetaBolism(Oxygen yangqi,Water shui)
        {         }
        }

    编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高。

1.11 UML 类图(多看多用就熟悉了)(节选自:《大话设计模式》)的更多相关文章

  1. 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式

    目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...

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

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

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

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

  4. UML类图五种关系与代码的对应关系

    转: UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系 ...

  5. 设计模式——1.概述&UML类图和时序图

    声明:本博客设计模式相关文章均整理和修改自网络,原文地址:图说设计模式 学习设计模式的3个层次—— 1.熟悉所有设计模式: 2.能够用代码实现: 3.运用到工作的项目中. 设计模式指导软件开发,学习设 ...

  6. 从 Java 代码逆向工程生成 UML 类图和序列图

    from:http://blog.itpub.net/14780914/viewspace-588975/ 本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Sof ...

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

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

  8. Visual Studio 2015中设计UML类图

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

  9. 23种经典设计模式UML类图汇总

    在这里23种经典设计模式UML类图汇总       创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基 ...

随机推荐

  1. 用python读写excel的强大工具:openpyxl

    最近看到好几次群里有人问xlwt.wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用of ...

  2. 【Selenium2】【项目实战】

    [public/login.py] from selenium import webdriverfrom selenium.webdriver.common.by import Byimport ti ...

  3. _itemmod_extract_enchant随机附魔提取

    技能 脚本 spell_extract_enchant 提取一条随机FM 随机FM提取 物品脚本:1.spell_extract_enchant 提取一条随机FM2.spell_extract_enc ...

  4. 转一个集成速锐的ss 回头试试 补充加速一、Vultr安装锐速

    https://liyuans.com/archives/ssr-serverspeeder-onekey.html Debian/Ubuntu 系统 ShadowsocksR 一键安装脚本 (集成锐 ...

  5. 【BZOJ】3143: [Hnoi2013]游走

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3143 显然如果一条边期望被走过的次数越多,我们就应该给它的编号越小. 所以问题变为如何求每 ...

  6. CentOS7下搭建LAMP+FreeRadius+Daloradius Web管理

    注意:本文所有命令均在root命令下执行. freeradius服务官网:http://freeradius.org/ daloradius Web管理页面官网:https://sourceforge ...

  7. module.exports小程序模块化,require

    小程序模块化 可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块.模块只有通过 module.exports 或者 exports 才能对外暴露接口. tips:exports 是 mo ...

  8. anusplina 4.36版本使用提示 说明

    1),必须要注意的是,你生成的dat文件中,第一列必须是气象站点编号:第二列必须是经度数值,而且是投影坐标下,以 米 为单位:第三列必须是纬度了:第四列必须是海拔了:之后就是你自己的数据,比如平均温度 ...

  9. ftp服务器搭建(离线安装vsftpd),配置

    1.下载vsftp:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64) 2.检查是否已经安装了vsftp rpm -qa ...

  10. Rest数据服务查询类-根据sql查询

    Rest数据服务查询类 需要iserver data服务支持,但请求的时候,不依赖SuperMap js lib包. 构造函数:QueryById=function(p_params): p_para ...