重温经典《Thinking in java》第四版之第一章 对象导论(四)

简介: 重温经典《Thinking in java》第四版之第一章 对象导论(四)

下面进入到1.2每个对象都有一个接口这一小节,有点编程经验的不要被这里面的接口所误导,它不是interface的概念;初学者也不要被接口这个新概念所吓到,其实就是一个对象的行为。这个小节举了个银行出纳员问题这个仿真程序的例子来说明对象的特性和行为,跟我们的客户Customer例子一样,无非他这里的对象多一点。看到这里其实有点迷糊,就是出纳、客户和账户以及货币单位可以抽象成类,他们可以创建出对象,交易不是一个动词吗,怎么能成为抽象出一个类,然后创建出对象呢?可以把这里的交易理解为一次交易记录,不要把他理解为人为的动作。所以这里面很多东西,只要说明白了就好理解,说不明白想不明白,理解起来很是费解。其实有的时候有些动作确实可以抽象成类,后面会遇到。

 

接下来书中又举了一个例子说明每个对象都有一个接口的意思,我觉得这个例子标注的很清楚,就是每个对象都有方法,因为一个对象要被其他对象使用或者程序使用,必须有方法才能被调用。

image.png

这个图是使用UML(统一建模语言)绘制的,顶部是类名,方法也就是图中的接口在方框底部,中间其实还有一部分是数据成员(也称为状态或属性),被忽略了,比如Light的名称、大小等。UML属于软件工程里的内容,主要通过图形表示一些现实世界实体或者计算机世界中的类和对象等信息。

 

接下来就是1.3每个对象都提供服务,我认为这跟1.2小节是一样的概念,提供服务的形式就是把接口(这里指方法)暴露出去给需要服务的程序或者对象调用。1.3小节中举了几个例子也说明了这一点,比如查询支票信息,打印支票。这里面提到一个设计的问题,就是把很多功能(可以理解为接口或方法)放在一个对象里还是分几个对象的问题,文中给出不能把太多功能都放在一个对象里。这点也给我们以后设计程序的时候一个警告,合理的划分对象的职责,也是后期学习设计模式以及面向对象7大设计原则里会讲到的内容,主要学习让系统设计符合软件工程里的高内聚低耦合,便于维护、复用和扩展。

 

通过这两节的学习让我觉得思想指导的重要性,我们一毕业工作就开始疯狂的码代码,实现需求,往往忽略了我们写出的代码,实现的系统是否是最合理的。我们的程序员都很忙,996和007型的压根都没空考虑这个合理性的问题。难道我们就不能反过来想想,如果我们考虑好了程序设计的合理性,能否就避免996和007了呢?(例行加班的除外)

 

其实好的程序是设计出来的,不是只靠敲键盘敲出来的。所以重在思考,经典会让你一直处于思考当中,好好看书学习,多思考。

目录
相关文章
|
4天前
|
安全 Java 编译器
java中类与对象回顾总结-2
java中类与对象回顾总结
14 3
|
4天前
|
Java 编译器
java中类与对象回顾总结-1
java中类与对象回顾总结
14 3
|
15小时前
|
Java 编译器
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
9 4
|
1天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
15 4
|
3天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
4天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
4天前
|
Java
从源码出发:JAVA中对象的比较
从源码出发:JAVA中对象的比较
13 3
|
1天前
|
Java 调度
Java一分钟之线程池:ExecutorService与Future
【5月更文挑战第12天】Java并发编程中,`ExecutorService`和`Future`是关键组件,简化多线程并提供异步执行能力。`ExecutorService`是线程池接口,用于提交任务到线程池,如`ThreadPoolExecutor`和`ScheduledThreadPoolExecutor`。通过`submit()`提交任务并返回`Future`对象,可检查任务状态、获取结果或取消任务。注意处理`ExecutionException`和避免无限等待。实战示例展示了如何异步执行任务并获取结果。理解这些概念对提升并发性能至关重要。
15 5
|
1天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。
|
2天前
|
Java
Java一分钟:线程协作:wait(), notify(), notifyAll()
【5月更文挑战第11天】本文介绍了Java多线程编程中的`wait()`, `notify()`, `notifyAll()`方法,它们用于线程间通信和同步。这些方法在`synchronized`代码块中使用,控制线程执行和资源访问。文章讨论了常见问题,如死锁、未捕获异常、同步使用错误及通知错误,并提供了生产者-消费者模型的示例代码,强调理解并正确使用这些方法对实现线程协作的重要性。
11 3