下面进入到”1.2每个对象都有一个接口”这一小节,有点编程经验的不要被这里面的接口所误导,它不是interface的概念;初学者也不要被接口这个新概念所吓到,其实就是一个对象的行为。这个小节举了个”银行出纳员问题”这个仿真程序的例子来说明对象的特性和行为,跟我们的客户Customer例子一样,无非他这里的对象多一点。看到这里其实有点迷糊,就是出纳、客户和账户以及货币单位可以抽象成类,他们可以创建出对象,交易不是一个动词吗,怎么能成为抽象出一个类,然后创建出对象呢?可以把这里的交易理解为一次交易记录,不要把他理解为人为的动作。所以这里面很多东西,只要说明白了就好理解,说不明白想不明白,理解起来很是费解。其实有的时候有些”动作”确实可以抽象成类,后面会遇到。
接下来书中又举了一个例子说明每个对象都有一个接口的意思,我觉得这个例子标注的很清楚,就是每个对象都有方法,因为一个对象要被其他对象使用或者程序使用,必须有方法才能被调用。
这个图是使用UML(统一建模语言)绘制的,顶部是类名,方法也就是图中的接口在方框底部,中间其实还有一部分是数据成员(也称为状态或属性),被忽略了,比如Light的名称、大小等。UML属于软件工程里的内容,主要通过图形表示一些现实世界实体或者计算机世界中的类和对象等信息。
接下来就是”1.3每个对象都提供服务”,我认为这跟1.2小节是一样的概念,提供服务的形式就是把接口(这里指方法)暴露出去给需要服务的程序或者对象调用。1.3小节中举了几个例子也说明了这一点,比如查询支票信息,打印支票。这里面提到一个设计的问题,就是把很多功能(可以理解为接口或方法)放在一个对象里还是分几个对象的问题,文中给出不能把太多功能都放在一个对象里。这点也给我们以后设计程序的时候一个警告,合理的划分对象的职责,也是后期学习设计模式以及面向对象7大设计原则里会讲到的内容,主要学习让系统设计符合软件工程里的高内聚低耦合,便于维护、复用和扩展。
通过这两节的学习让我觉得思想指导的重要性,我们一毕业工作就开始疯狂的码代码,实现需求,往往忽略了我们写出的代码,实现的系统是否是最合理的。我们的程序员都很忙,996和007型的压根都没空考虑这个合理性的问题。难道我们就不能反过来想想,如果我们考虑好了程序设计的合理性,能否就避免996和007了呢?(例行加班的除外)
其实好的程序是设计出来的,不是只靠敲键盘敲出来的。所以重在思考,经典会让你一直处于思考当中,好好看书学习,多思考。