加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

类的水平关系--依赖,组合,聚合(原创)

发布时间:2020-05-23 06:37:28 所属栏目:程序设计 来源:互联网
导读:在刚开始接触这三个个概念的时候,我也曾经非常的困惑,现在将自己的总结写给大家看看!希望对大家有所帮助!在大的层面来说,可以吧组合聚合看成一类而与依赖区别开!我先说说组合,聚合:这两个概念都是用来说明两个类之间的一种“包含概念”,可以把一方看成另一

在刚开始接触这三个个概念的时候,我也曾经非常的困惑,现在将自己的总结写给大家看看!希望对大家有所帮助!在大的层面来说,可以吧组合聚合看成一类而与依赖区别开!我先说说组合,聚合:这两个概念都是用来说明两个类之间的一种“包含概念”,可以把一方看成另一方的属性,两个类之间一定存在着某种逻辑上了联系,先说聚合吧,举个例子会好一些:有两个类,一个是PoliceStation类还有一个是Police类(其他无关属性和方法一律忽略)class PoliceStation {...};class Police{...private: PoliceStation* ps;};可以看到Police类中包含了一个PoliceStation类的对象指针,而且在创建一个Police类对象时一定要对指针进行初始化,就好像当你成为警察时一定会属于一个警察局(除非你是假警察!)这个时候,我们可以说Police的每一个对象都有一个PoliceStation属性来标识它是属于哪个警察局的!但是两者之间并不存在“同生共死”的关系,也就是说当这个警察不存在的时候,警察局早就有了,当警察牺牲了,警察局也不会消失!下面说说组合:比如我们有一个Person类和一个Mind(思想)类(可能这个例子不太恰当)class Mind{...};class Person{...private:Mind m;};和理解聚合差不多,从人一下生开始就会有思想(想什么我就不管了,别和我说婴儿,那太死心眼了)当人一旦死亡的时候,思想也会随之停止了,这就是与聚合的不同之处!最后我来说说,与前两者有较大区别的依赖:以老鼠吃苹果来做例子(别问我老鼠吃不吃苹果,我会败给你的)。言归正传,有个老鼠类Mouse还有一个Apple类;在具体写类的时候,你不能把Apple和Mouse形成聚合或者组合的关系,因为并不能把Apple看成是Mouse的一种属性,不存在"包含关系"!试想一下,哪只老鼠在一生出来就有一个指定好的要吃的苹果呢!其实这种老鼠吃苹果的事件有一定的偶然性!那该怎么设计呢:class Apple{...};class Mouse{...void Eat(Apple* a){...}...};通过一个方法,并让Apple类指针做形参(引用也可以),这样子就实现了老鼠吃苹果的过程,也许会有人问,为什么要用指针类型做形参?因为老鼠吃苹果并不只会影响老鼠自己,对苹果也会引起一些变化(也可能引起其他类的变化,比如苹果里的小青虫),而这些变化都是通过传递过来的指针来间接调用Apple类的方法来实现的!

(编辑:安卓应用网)

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

    推荐文章
      热点阅读