jeans chen
we've got them by the balls

CHAPTER 13:面向对象程序设计方法概述

13.5
组合composition用于表示类的整体与部分关系。例如主机和显示器、鼠标等组合成计算机
继承则表示类的“一般与特殊”的关系

类的组合特性表现为两种:聚合(has-a) 和 关联(holds-a)
聚合:比如head类有成员Eye,Nose,Mouth,Ear
关联:就是类之间的引用,详细看第九章的关于结构的论述
struct A
{
    int count;
    char *pName;//A holds-a string
    B *pb;//A holds-a B
};

struct B
{
    char ch;
    A *pa;//B holds-a A
    B *pNext;//B自引用
};

上面的两个结构可以组成一个链表,A是链表头的类型,B是链表节点的类型。通过链表头节点可以遍历整个链表,每个链表节点可以指向另一个链表,。。。。。。,这样就形成了一个庞大的链式结构。
利用对象之间的引用关系,我们就可以实现链表,树,队列等复杂的数据结构,或者实现一些复杂的对象管理,比如对象之间的索引和定位。

13.6 动态特性

 覆盖override的特征有:
  1) 不同的范围(分别位于派生类与基类);
  2) 函数名字相同;
  3) 参数相同;
  4) 基类函数必须有virtual关键字。

很多情况下,哪些不能被实例化出来的对象的类是很有用的,称为抽象类Abstract Class.能够被实例化为对象的类称为具体类(concrete class)
抽象类的唯一目的是让其派生类继承并实现它的函数接口,因此它通常被称为抽象基类(Abstract Base Class)


抽象基类的主要用途是“接口与实现分离”

一般的信息隐藏是把所有的数据成员声明为private或者protected的,并提供相应的get和set函数来访问对象的数据。抽象基类则更进一步,它把数据和函数都隐藏在实现类中,而在抽象基类中提供丰富的接口供你调用,这些函数都是public的纯虚函数。这样的抽象基类叫做接口类(Interface)




posted on 2013-11-18 17:17  jeans chen  阅读(173)  评论(0编辑  收藏  举报