Stroustrup的《C++程序设计语言》中说:
“类应该用于模拟程序员的和应用的世界里的那些概念。...一个概念不会孤立地存在,它总与一些相关的概念共存,并在与相关概念的相互关系中表现出它的大部分力量。...因为我们要用类表示概念,问题就变成了如何去表示概念之间的关系。然而,我们无法在程序语言里表述任意的关系。即使能这样做,我们也未必想去做它。我们的类应该定义得比日常概念更窄一些——而且也更精确。”
我们可以感到这段话的深刻性,更重要的是,它出自语言设计者的著述,会给你最正确最可靠的方向。
1. 类用来定义概念。
首先,概念不是静态的,它的属性和操作不可分,封装是面向对象的第一个特征。然后,一个概念总是与相关概念共存,最基本的关系有两对:封装和通信,抽象和多态。前者反映了分工与合作关系,后者反映了抽象与具体关系。类是面向对象的核心,从探讨类的作用出发,就引出了面向对象的四个基本特征。
2. 类所定义的概念不但来自应用领域,也来自程序员引入的东西。
3. “我们无法在程序语言里表述任意的关系。即使能这样做,我们也未必想去做它。”