如何以对象的方式进行思考

不管是否是面向对象设计,出色的设计都需要考量很多因素。面向对象设计的基本单位是类。面向对象设计渴望的结果是一个健壮实用的对象模型,换句话说就是一个完整的系统。

在解决问题时并不只有一种方式,生活中很多事情都是如此。同一件事通常有多种处理方式。所以试图用面向对象的方案来进行设计时,不要执迷于一开始就尝试做出一个完美的设计(始终存在提升的空间)。我们真正需要做的是进行头脑风暴,让我们的思想延伸到不同的方向。当解决一个问题时不要尝试遵从任何标准或约定,因为整个想法都需要有创造性。

事实上,刚开始时甚至不要先考虑具体的编程语言。业务上的首要事情是定位和解决业务问题。要先进行概念分析和设计。只有业务问题需要技术来解决时才需要考虑具体的技术。例如,你不能脱离无线技术来设计一个无线网络。而且通常的现实情况是你有多种软件方案可供选择。

因此,在开始设计一个系统甚至一个类之前,先思考问题本身并从中获得乐趣。本文中,我们探索了面向对象的思考这一艺术和科学。

关于思考的任何微小改变都是不平凡的。比如我们反复提及的从结构化开发方式变为面向对象开发的思维。之前已经讲过,该思维的一个误解是结构化开发过程和面向对象的开发过程是互斥的。其实并不是这样。众所周知,之前我们讨论过,通过包装对象,结构化开发和面向对象开发是可以共存的。事实上,当编写面向对象的应用程序时,到处在用结构化的结构体。我还从没看到过一个程序(无论是否采用了面向对象)没有使用循环、条件判断等。转换到面向对象设计需要不同类型的投资。

从FORTRAN语言切换到COBOL语言(甚至C语言)相当于学习新的语言。然而,从COBOL语言切换到C++、C#.NET、Visual Basic.Net、Objective-C、Swift,或者Java则要求学习一种新的思考过程。这正是过度使用术语面向对象范式造成的后果。当学习面向对象语言时,你必须首先花精力来学习面向对象的概念以及相应的思考过程。如果没有进行这种模式的转变,以下两件事情必发生其一。要么是项目本质上不是真正的面向对象(例如,使用了C++语言但没有使用面向对象构造),要么是项目完全由混乱的对象组成。

培养面向对象思考过程的良好习惯需要注意三个方面:

  • 清楚接口和实现之间的区别
  • 抽象地思考
  • 给用户提供尽可能少的接口

– 摘自 《面向对象的思考过程》 原书 第5版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值