关于抽象类的边界划分

 最近负责完成一个框架的设计以及编写。

 对其内部的基类的接口划分有点感想:

问题,在最根本的基类中将所有子类的接口都定义出来???可能吗?

1:一个系统中的类应该有一个公共根类,所有的类都从该根类派生。该根类可以定义运行时变量将各个类的类型记录下来。

原因:对整个系统的接口抽象,有好处。

例如:对应该系统的所有类引用都可以根类对象的应用代替,这就为以后为以后重载接口提供了方便。


2:基类中只包含其子类中一定要包含的成员变量。基类中定义成员变量。

对于,那些不是在所有子类中包含的成员变量不要写在基类中,可以增加派生层次,以便包含对应的成员变量的。

原因:避免子类中包含不必要的成员变量,导致类的子类对象占用不必要的内存。


3:由2得出,基类也是要分层次。原则可以将有共同点的一组类添加一个抽象基类。


4:相类似,基类的接口也只负责其对应的子类组的公共操作就可以了。(原因实在是不能将所有派生层次子类的操作函数都预先写出来。)


 5:最重要的一点 基类之间的关系要定义出其子类都应有并且遵守的逻辑组织规则。

 e.g:

 class a

{...

  list/<a/> itmes;

class b:public a

{

 }

...

则a 的子类b等都是自包含的。

 

5:类图中反映的类之间的关系(特指组合,聚合关系),应在超类中反映出来,但超类中可以不写出其组合/聚合的对象成员变量,但必须写出对其组合/聚合的变量的操作接口

e.g:

 class a //abstrc

{....

操作聚合变量b的接口

...

操做聚合变量c的接口

...

 但a中不包含类型为b,c的成员。

 }

 一点感想 见笑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值