UML基础之组合与聚合关系

UML基础之关系

UML是统一建模语言([Unifried Modeling Language][6])的缩写。最初用于描述复杂的软件和非软件系统的行为。UML伴随着面向对象的概念和方法而生。它本身不是一种编程语言,但通过构建UML图能够帮助我们很轻松地使用各种语言编写实际代码(基本在面向对象语言中使用如:java,c++,C#)。

面向对象的一些核心概念:

  • 对象
  • 抽象
  • 封装
  • 继承
  • 多态
    它定义了一种能够具有多种形式的机制。基本上有两种类型的多态 性:编译时(也就是早期绑定)和运行时(后期绑定)。
    在编译时多态性中,对象在编译时知道要实现多态性。函数重载是在编译时实现的多态性。编写重载方法时应该使用相同的名称和不同的参数。如:对两个或者三个数字进行加法(sum)运算,而参数的数量由用户调用时根据需要传递,这样程序员就需要创建2个同样为sum的方法,带有2个或者3个参数。
    在运行时多态性中,对象本身不知道在编译时需要实现多态性,而是在运行时需要实现相应的属性和方法。是通过对父类函数重写或者说基于继承的多态性来实现的。

关系

关系是UML中非常重要的构造块,显示元素之间是如何相互关联的,这种元素之间的联系也能反映软件应用的整体功能。主要包含以下不同种类的关系。(这是我用visio画的4种关系图表示:复合即组合)
这里写图片描述

  • 依赖

    依赖关系定义了不同对象之间相互影响的关系。它描述了依赖的对象和依赖关系的方向。
    依赖关系描述的主要内容是当两个元素之中的一个发生变化,另外一个也会相应的发生变化。由如上图所示虚箭头表示。

  • 关联
    关联关系描述了UML图中元素的关联方式。简单的说,描述了多少个元素正在参与。关联关系在类之间通过一个指向关联方向的箭头表示。如果两端都是则是双向关联。

    //Test与Bar类存在关联关系
    public class Test{
      public void doSomething(){
        System.out.println(Bar.doSomething());
      }
    }
    //Message类和Person类存在关联关系
    public class Message{
       private Person per;
       public Message(Person per){
         this.per=per;  
       } 
    }
依赖关系和关联关系的区别?
  当我们将对某个类的引用作为当前类特定操作和函数的一部分时,通常会使用依赖关系。使用依赖关系时,你需要意识到依赖关系中会调用引用类中的某个API,而且对引用类的任何修改必然会破坏当前类。依赖关系是由依赖类开始到独立类的一条虚线箭头来表示的。在依赖关系中通常没有多个依赖共存的情况,都是一对一的关系。
  关联关系表示的是一个实例向另一个实例发送消息的能力。这通常由指针或引用实例变量实现。
  组合关系是一种特殊的关联关系类型,代表类之间一种非常强烈的从属关系。例如上图,ClassA是整体类,ClassB是A的一部分,使用实心菱形来表示。组合关系描述了类之间的包含关系。
  //A类是B,C类的组合
  public class A{
  private B b;
  private C c;
  public A(){
    this.b=new B();
    this.c=new C();
  }  
  //删除了A,则B,C,也会删除,因为是有A构造函数创建的B,C

在聚合关系中,整体类要比部分类起到更重要的作用,但这两个类不是相互依存的,我们使用空心菱形表示一个简单的聚合关系。聚合关系描述类之间存在部分和整体的关系。

    //A是B和C的聚合
   public class A{
     private B b;
     private C c;
     public A(B b,C c){
     this.b=b;
     this.c=c;
     } 
   }
   //如果对A类的删除并不需要删除B,C。
比如:一个人有手,脚,心脏等,这就是组合。
一个人有房子,车子,计算机,这就是聚合关系。
 - 聚合关系是一种弱关联,对象能够彼此进行独立创建。
 - 组合关系是一种强关联,部分对象在其他对象中创建。
 - 在聚合关系中对象可以彼此独立存在
  • 泛化
    泛化关系描述了对象世界中的继承关系,也就是父类与子类的关系。用空心箭头表示,箭头指向的一端表示父元素,另一端则表示子元素。
  • 扩展

UML图
主要有两种基本分类:静态结构图与动态行为图;
四种静态结构图如下:
-类图
-对象图
-组件图
-部署图

UML具有以下5种类型的动态行为图:
-用例图
-顺序图
-协作图
-状态图
-活动图

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值