加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖,关联,聚合,组合

发布时间:2020-12-13 20:33:19 所属栏目:百科 来源:网络整理
导读:1.实例化(依赖) A将B作为局部变量进行使用. 程序1 void A::foo() { B b; b.SomeMethod(); } 2.关联 A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式. 第一种,作为参数: 程序2 void A::foo(B b) // (B* b) or (B b) { b.SomeMethod(); }

1.实例化(依赖) A将B作为局部变量进行使用. 程序1 void A::foo() { B b; b.SomeMethod(); } 2.关联 A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式. 第一种,作为参数: 程序2 void A::foo(B& b) // (B* b) or (B b) { b.SomeMethod(); } 第二种,作为成员变量: 程序3 class A { public: A(B& b) { b_ = b; } void foo() { b_.SomeMethod(); } private: B& b_; // B* b_ }; 3.聚合 聚合是一种特殊的关联,聚合更明确指出聚合的主体具有整体-部分关系. 代码的表现形式见程序3. 4.组合 组合是一种特殊的聚合,组合中的某个主体控制着另外一个主体的生命周期,而且他们还存在整体-部分关系. 程序4 class A { public: A() { b_ = new B; } ~A() { delete b_; b_ = NULL; } void foo() { b_->SomeMethod(); } private: B* b_; }; 一直以来总觉得OMT的类关系更合理一些; 查资料和实际应用之后,发现UML的类关系相对来说更精确一些. 欢迎大家讨论.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读