• 关系


    关系:依赖,关联(聚合,组合),泛化,实现

    1,依赖:一个事物的变化会影响到另一个事物的变化。


    依赖存在三种方式:c5包含c6的对象,c5与c6之间传递消息交互,c6作为c5中某个方法的参数。

    指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法协助才行。C5依赖于C6的定义,一般是在C5类的头文件中包含了C6的头文件。ROSE对依赖关系不产生属性。

    注意,要避免双向依赖。一般来说,不应该存在双向依赖。

    ROSE生成的代码如下:

    // C5.h
    #include "C6.h"

    class C5 
    ...{

    };

    // C6.h
    #include "C5.h"

    class C6
    ...{

    };

    虽然ROSE不生成属性,但在形式上一般是A中的某个方法把B的对象作为参数使用(假设A依赖于B)。如下:

    #include "B.h"
    class A
    ...{
              void Func(B &b);
    }

    2,关联

    对象之间存在一种包含关系则是关联,比如学生与班级之间是多对一得关系,那么这个关系就是关联,但是在代码中表现为引用关系。

    关联包含:关联名称,导航,角色,多重性

    单向关联:


    C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。

    单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。

     

    双向关联:

    C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。

    双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。

     

    自身关联(反身关联):

    自己引用自己,带着一个自己的引用。

    就是在自己的内部有着一个自身的引用。

     

    当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。

     聚合:

    表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。

     

    组合:

    组 合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。但这是视问题域而定的,例 如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的, 这就可以用聚合了。在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B的生成和释放。

    他们的代码如下:

    class C7 
    ...{
    public:
        C8 theC8;

    };

    class C8 
    ...{
    };

    可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。


    泛化(继承) 

    泛化关系:如果两个类存在泛化的关系时就使用,例如父和子,动物和老虎,植物和花等。
    ROSE生成的代码很简单,如下:

    #include "C11.h"

    class C12 : public C11
    ...{
    };

     

     实现:

     


    http://talentkep.javaeye.com/blog/691897

  • 相关阅读:
    How to convert VirtualBox vdi to KVM qcow2
    (OK)(OK) adb -s emulator-5554 shell
    (OK)(OK) using adb with a NAT'ed VM
    (OK) How to access a NAT guest from host with VirtualBox
    (OK) Creating manually one VMs from an existing VDI file in CLI (VBoxManage) in Fedora 23
    (OK)(OK) Creating VMs from an existing VDI file in CLI (VBoxManage) in Fedora 23
    (OK) Creating_VMs_from_an_existing_VDI_file.txt
    (OK) Creating VMs from an existing VDI file —— in OS X
    (OK) install_IBM_SERVER.txt
    (OK) install chrome & busybox in android-x86_64 —— uninstall chrome
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1930351.html
Copyright © 2020-2023  润新知