本文共 1094 字,大约阅读时间需要 3 分钟。
本节书摘来自异步社区《UML面向对象设计基础》一书中的第2章2.3节类似工程学的面向对象,作者【美】Meliir Page-Jones,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 类似工程学的面向对象
UML面向对象设计基础20世纪80年代,Brad Cox用某种类似现代生活中用到的硬件集成电路(IC)的方式看待软件对象(参见[Cox,1986])。当华盛顿大学的考古学家们在我办公室的一堆论文中寻找时,我想起了这个类比。他们发现一本Merrill Skolnik著的《雷达系统导论》(Introduction to Radar System),在书中Skolnik先生提出下面的观点:电子工程可以根据以下分类: 组件;技术;系统。组件是可以组合的基本构造单元,通过使用适当的技术而产生系统。
如果对上面的一段话进行一下替换,用“软件”替换“电子”,用“类”替换“组件”,则变为如下面描述:
软件工程可以根据以下分类:类;技术;系统。类是可以组合的基本构造单元,通过使用适当的技术而产生系统。第15章讨论的软件构件类似于电子印制电路板,这种构件实际上称为组件。
尽管这种想象比较吸引人,但我们不应忘记,选择有用的电路封装在芯片中有赖于工程师对电路的正确标识。人们会冲出去购买IC用于操作放大器、音频放大器、计时器、线驱动器等,但没有人愿意去购买晶体管、感应器及电阻的超大规模IC从头做起。在制成第一个有用的IC之前,继电子系统之后,工程师们经过几十年的时间才意外地发现了这个有用的方案。
同样,在软件中我们必须确保开发的类有效、健壮、易于抽象。例如Customer类和可爱的Stack类可能大受欢迎;而Egabragrettu类则可能令人想起路边的垃圾。
Skolnik先生的第二个观点是关于技术的。因为,IC不能被组合则几乎是无用的,幸运的是电子工程师已经生产出将IC集成在一起的印刷电路板。
类似地,开发面向对象软件,必须进行“宏”一级的设计,在这个层次上处理类(及类在运行时产生的对象)之间的联系。显然类的内部设计与更高层次的类间设计紧密相关。道理很简单,因为PCB的布局依赖于集成在其上的IC的设计程度。
在类的内部层次和类间层次上都存在着面向对象设计的优劣。因此,好的面向对象系统与好的电子系统一样,不仅取决于高质量的抽象而且取决于建立这些抽象的高水平技术。本书第二和第三部分详细讨论这些问题。但首先我们必须清楚一个基本的问题:面向对象的适用范围是什么?
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。