`
pingwei000
  • 浏览: 58976 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

UML类图关系(引用)

阅读更多

在Visio里,包和类的关系是包含关系,将类拖入包的文件夹之后,关系就建立了,二元关联符号可以设置为:聚合、合成。
接口:空心圆+直线(唐老鸭类实现了‘讲人话’);
依赖:虚线+箭头(动物和空气的关系);
关联:实线+箭头(企鹅需要知道气候才迁移);
聚合:空心四边形+实线+箭头(雁群和大雁的关系);
合成:实心四边形+实线+箭头(鸟和翅膀的关系);
泛化:空心三角形+实线(动物和鸟的继承关系);
实现:空心三角形+虚线(实现大雁飞翔的接口);



UML类图 


解释UML类图:



1.       首先看“动物”矩形框,它代表一个类。该类图分为三层,第一层显示类的名称,如果是抽象类就要用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法和行为。注意前面的符号,‘+’表示public, ‘—’ 表示private, ‘#’表示protected.  
                                         
2.       “飞翔”矩形框表示一个接口图,它与类图的区别主要是顶端有《interface》显示,第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了“讲人话”的接口。 
              
interface IFly                               interface Ilanguage                            
{                                             {
   void Fly();                                    void Speak();
}                                             }
3.       动物,鸟,鸭,唐老鸭他们之间都是继承的关系,继承关系用空心三角形+实现来表示。  
  
               
4.“大雁”实现了“飞翔”接口。实现接口用空心三角形+虚线来表示。(注:下面的图中应为空心三角形)

class Bird:Animal                      class WideGoose:IFly
{                                       {
   //继承动物类                                 //实现飞翔接口
}                                       }
5.       企鹅与气候有很大的关系,企鹅需要“知道”气候的变化,需要“了解”气候规律。当一个类“知道”另一个类时,可以用关联(association)关系。关联关系用实线箭头来表示。 
 
class Penguin :Bird
{
   private Climate climate;//在企鹅Penguin中,引用到气候Climate对象
}
6.       “大雁”和“雁群”这两个类。大雁是群居动物,每只大雁都属于一个雁群,一个雁群可以有多只大雁。所以它们之间就满足聚合(Aggregation)关系。聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形+ 实线箭头表示。

class WideGooseAggregate
{
   private WideGoose[] arrayWideGoose;
   //在雁群WideGooseAggregate类中,有大雁数组对象arrayWideGoose
}
7.       “鸟”和“翅膀”这两个类。鸟和翅膀似整体和部分的关系,并且翅膀和鸟的生命周期是相同的,在这里鸟和其翅膀就是合成关系。合成(composition)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。合成关系用实心的的菱形+实线箭头来表示。另外,合成关系的连线两端还有一个数字“1”和数字“2”,,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有两支翅膀。如果一个类可能有无数个实例,则就用“n”来表示。关联关系,聚合关系也可以有基数的。

class Bird
{
  private Wing wing;
  public Bird()
  {
     wing=new Wing();
    //在鸟Bird类中,初始化时,实例化翅膀Wing,它们之间同时生成
  }
}
8.       “动物”、“氧气”与“水”之间。动物有几大特征,比如有新陈代谢,能繁殖。而动物要有生命,需要氧气,水以及食物等。也就是说动物依赖于氧气和水。它们之间是依赖关系(Dependency),用虚线箭头来表示。

abstract class Animal
{
   public bolism(Oxygen oxygen,Water water)
   {
   }
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cuijian_ok/archive/2009/05/14/4176218.aspx

 

分享到:
评论

相关推荐

    UML类图关系大全word文件

    在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关 系必须被映射为对象引用或指针。对象引用本身就是有向的,更...

    UML类图关系大全

    在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更...

    对象数据库系统

    本章重要概念 (1)新一代DBS的两条途径:ORDBS和OODBS。 (2)平面关系模型,嵌套关系模型,复合对象模型,引用类型,...8.9 使用UML类图来概念对象建模 (理解) 本文来源于:C#学习网http://www.lmwlove.com/ah/ID47

    UML那些事儿

     本书通过引用UML规格书里的图例和定义详细介绍了UML的特色和发展历史,六类UML图,元模型的说明,并且以StarUML为示范,讲解UML,工具如何落实UML概念,还介绍了活动图、控制节点、交互图、生命线、用例图等内容。...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    2.4.3关系运算 2.4.4逻辑运算 2.4.5运算符的优先级 2.5小结 第3章程序设计基础:流程控制和数组 3.1判断结构 3.1.1为什么需要判断结构 3.1.2if结构 3.1.3switch结构 3.2认识循环结构 3.2.1为什么需要循环...

    uml入门指南

    7. 添加类图 5 8. 设置profile 6 9. 保存工程 7 10. 创造图表 7 11. 添加属性 7 12. 继续进行设计 8 13. 创造 IShape interface 8 14. 添加类和接口的关系 9 15. 添加类基于接口的行为 10 16. 你的图现在应该是这样...

    ObjectBuilder2:C ++ CASE工具,完整的生命周期代码生成器-开源

    我使用它,并且认为面向C ++的树OO接口比UML类图更快速,更强大。 ObjectBuilder可以完美组织各种复杂程度的C ++头文件。 即使在OO层次结构中使用循环引用,也只需要包含一个项目级头文件。 您可以通过在项目内部...

    02 企业 EA -应用软件架构设计规范.docx

    建议采用UML2.0“类图”定义数据逻辑模型。 4.2.3 定义主数据 在本系统及多个系统间共享的基础数据属于主数据,应参照主数据管理平台(SG-MDM)的主数据定 义,决定主数据的参照引用关系。 4.2.4 定义数据...

    编程技能训练与等级考试辅导:类和对象.pptx

    描述类和对象UML类图 Java库中的类 变量分类及垃圾回收机制 数据域封装 巩固练习;使用对象进行程序设计,将数据与对数据的处理封装在一个对象中,通过对象之间的协调(发送消息)来完成一个个任务。 特点: 封装、...

    软件工程-理论与实践(许家珆)习题答案

    A) Booch B) UML C) Coad D) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高 B) 软件产品的质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7. 软件开发方法的主要工作模型有(A B C) A)...

    java 设计模式资料

    1. 增加对每个模式的UML类图,对象图,交互图等。 2. 修正现在的代码。 3. 重新设计一些解决特定问题的示例,并使示例可视化。 4. 增加对每个示例的文字详细说明。 5. 设计一些同时含有多种模式的示例。 6. 考虑C++...

    传智播客扫地僧视频讲义源码

    15_友元函数实现左移右移操作符重载(函数返回值当左值需返回引用)_传智扫地僧 16_友元函数实现操作符重载知识总结 17_重载等号操作符_传智扫地僧 18_数组类小案例_操作符重载需求 19_数组类小案例_重载[]_传智扫地...

    疯狂JAVA讲义

    2.2 UML(统一建模语言)介绍 29 2.2.1 用例图 30 2.2.2 类图 31 2.2.3 组件图 33 2.2.4 部署图 33 2.2.5 顺序图 34 2.2.6 活动图 34 2.2.7 状态机图 36 2.3 Java的面向对象特征 36 2.3.1 一切都是对象 37 ...

    精通MFC (光盘) 源代码

    1.2 面向对象的建模技术UML 1.2.1 类图 1.2.2 交互图 1.2.3 用例图 1.3 面向对象的C++语言 1.3.1 C++对象的内存布局 1.3.2 C++编程技术要点 1.4 小结 第2章 窗口 2.1 窗口结构 2.2 窗口类型 2.3 窗口...

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

    java基础案例与开发详解案例源码全

    3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 经验之谈-常见错误的分析与处理40 3.3.3 Java标识符命名规则41 3.3.4 关键字42 3.3.5 常量42 3.4 运算符43 3.4.1 算术运算符43 3.4.2 ...

Global site tag (gtag.js) - Google Analytics