(类之间的关系C.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(类之间的关系C

类之间的关系在大体上分为两种,一种是纵向的,另一种是横向的。 一、纵向的就是继承,它是OO的三个特征之一。 在UNL中称作: 泛化(Generalization) 表示为: 实现(Realization) 表示为: 泛化 泛化关系: 是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行为表示类与类之间的继承关系,接口与接口之间的继承关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。// Animal.h class CAnimal { public: ????// implement ????virtual HRESULT EatSomething() ????{ ????????// Do something ????} }; // Tiger.h #include Animal.h class CTiger : public CAnimal { ????// Do something }; 实现 实现关系: 是一种类与接口的关系, 表示类是接口所有特征和行为的实现// Animal.h class CAnimal { public: ????// interface ????virtual HRESULT EatSomething() = 0; }; // Tiger.h #include Animal.h class CTiger : public CAnimal { ????// Do something }; 注: 泛化和实现的区别就在于子类是否继承了父类的实现, 如有继承则关系为泛化, 反之为实现.Dependency),表示为:--------? 即虚线+箭头 关联(Association), 表示为: 实线+箭头 聚合(Aggregation),表示为: 空心菱形+实线 组合(Composition),表示为: 实心菱形+实线 它们的强弱关系是:依赖 关联 聚合 组合,依赖就是某个对象的功能依赖于另外的某个对象,而被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。是一种使用的关系,??即一个类的实现需要另一个类的协助, 所以要尽量不使用双向的互相依赖.类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;// Car.h class CCar { ????// Do something }; // Person.h #include Car.h class CPerson { void MoveFast(CCar pCar); }; 上图中人的快速移动需要有车的协助, 但是这种依赖是比较弱的, 就是人也可以不用车而用其他工具, 与关联不同的是人不必拥有这辆车只要使用就行. 关联就是某个对象会长期的持有另一个对象的引用,而二者的关联往往也是相互的。关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量; 双向关联是指双方都拥有对方的引用, 都可以调用对方的公共属性和方法程序代码 // Husband.h #include wife.h class CHusband { public: ????CWife* pWife; }; // Wife.h #include Husband.h class CWife { public: ????CHusband* pHuband; }; 上图中丈夫和妻子是比较公平的关系, 都可以使用对方公共的属性.单向关联是指只有某一方拥有另一方的引用, 这样只有拥有对方者可以调用对方的公共属性和方法. 如下程序代码 // Husband.h class CHusband { public: ????int nMoney; ????void GoShopping(); }; // Wife.h #include Husband.h class CWife

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档