博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《UML面向对象设计基础》—第2章2.3节类似工程学的面向对象
阅读量:7009 次
发布时间:2019-06-28

本文共 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的设计程度。

在类的内部层次和类间层次上都存在着面向对象设计的优劣。因此,好的面向对象系统与好的电子系统一样,不仅取决于高质量的抽象而且取决于建立这些抽象的高水平技术。本书第二和第三部分详细讨论这些问题。但首先我们必须清楚一个基本的问题:面向对象的适用范围是什么?

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

你可能感兴趣的文章
观Citrix最新官方发布评测报告有感-外行看热闹,内行看门道
查看>>
完整演示:思科IPS旁路模式的部署
查看>>
K8S集群基于heapster的HPA测试
查看>>
linux服务器集群运维经验
查看>>
Powershell-Lync:如何查询用户使用的语音策略
查看>>
《统一沟通-微软-实战》-6-部署-2-中介服务器-6-语音路由-路由
查看>>
关于CocoStudio中AtlasLabel控件后台编码的一点备注
查看>>
搞定Linux Shell文本处理工具,看完这篇集锦就够了
查看>>
Python协程深入理解
查看>>
Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
查看>>
[转] 从HTTP状态 301,302,200 来看页面跳转
查看>>
遍历Dictionary<K,V>的两种方式
查看>>
【原】Unity3d 类似Dota血条
查看>>
Spring.NET 1.3.2 集成 NHibernate 3.2 - 5 - 事务管理
查看>>
POJ 2771 Guardian of Decency(二分匹配,最大独立集)
查看>>
控制反转IOC与依赖注入DI
查看>>
sqlserver 数据库订阅报错 22202 14058
查看>>
poj 2007 Scrambled Polygon(凸多边形顶点输出)
查看>>
BusinessUnit, User, Role 中常用的APIs
查看>>
AssetBundle 在Android机子上进行读取 .
查看>>