2010年4月6日星期二

类的责任 - OO系列之二

本文是TC++PL第四部分的转写,并侧重在Ch25 Roles of Classes。
Class是C++的一个重要的语言特性,同时它也是连接OO的一座桥梁。
所以这是一个在语言层面和设计层面上一致的话题了。
以下一些名词的译法是按照个人喜好来的,观看时请自己对应用意。

首先在看一下不同种类的Class:
这里涉及设计出它们不同的作用,以及在语言形式上的表现。
具体类:
表示一个具体的概念,通常定义为一个实例来使用,而不是用于继承。
抽象类:
形态为定义一组纯虚函数,用来定义对象接口,按照共有继承的方式使用。
节点类:
通过类继承表示概念上的抽象关系,可以具体化某类型,或者增强功能。
行为类:
作用类似于一个函数,但是以一个对象的形态来储存和使用,需要定义一致的调用方法。
界面类:
用于调整其他类的表现,以实现某种接口,或者使用方法。
手柄类:
用于操作表现类,以实现访问控制对象管理等需求。
框架类:
用于设计的重用,通过继承和重定义来实现应用的功能。

下面来看C++为我们提供的特性来支撑基于Class的设计:
设计语言:
C++通过类的关联和特性,处了编程之外,也是表达设计的一个手段。
Class的关系:
继承,包含,使用,其他(比如托管),类内成员的关联
不过这里的重点在这里略去了,即如何使用语言中表示这些关系。
组件:
类,类层次,命名空间
组件是重用的一个单元,表示为一个库或框架。其中包括模板以及界面实现关系的使用。

然后把关注引向更抽象的部分,设计在开发中的作用:
设计Class:
寻找概念及关联,定义涉及的操作,定义层次和依赖,指定接口
问题扩展开还包括了类的目的,组织,参照,实验,分析,测试,维护以及性能。
这些都是当需要创造组件时进行的一个环节。
开发的进程:
分析问题,设计结构,实现设计,实验原型,测试实现,分析设计和实现,编写文档,进程管理
开发是为了完成目标的途径,设计是其手段的一个环节,来获得对所分析问题的实现。
开发的管理:
模块重用,规模控制,知识教育,设计的混合
这里的侧重是语言特性的角度在管理上做出的行为。
不过仍来跑题一下迭代模型和基于测试的开发吧。

开头也说了本文是只是篇转写,其中没有表达个人体会,也可能会带来误解。
但是这里想表达的是种关注。
这是把对C++中的Class这个语言特性的使用的关注放到设计的角度来,
让程序语言成为一个解决问题的工具。

此外程序的设计方法并不唯一,这里考虑的面向对象的设计方法。
它不是银弹,不是通用的高效解决方案,也可能带来某些累赘。
但是在手段的发展中,何不以激动人心态度来迎接着工具的发展与改变呢。

TC++PL=The C++ Programming Language Special 3rd Edition
这里所写的具体请参照此书。

没有评论: