**2.1对象交互**
/*
*引入:面向对象编程的第一步,就是在问题领域中识别出有效的对象,然后从识别出的对象中抽象出类来。
一个对象当然可以由其他类的对象来组成,就像一个人体里面有心脏、肠胃一样。
对象是由其他对象组成的,比如心脏这个对象里面也可以创建心瓣、心房这些对象,心瓣、心房里又可以把组织细胞,血细胞这些看做一个对象。而类定义了这样的组合关系。
那么下一个问题,就是
**当一个对象里有多个对象的时候,那些对象之间是如何交互的
*对象和对象之间的联系是如何建立的
对象如何和其他对象交流
2.1 对象交互
//本小节通过时钟显示程序来理解Java对象的交互
引入:如何编写一个时钟程序?

也许在没学java以前,我们可以考虑使用循环的方法使时钟走动。但在面向对象的编程方法中,万物皆是对象。比如这个时钟,他们有相同点,比如
**到了某个数字都会自动清零重新计时**
但是两者之间又具有联系,比如:
**当分钟到达上限时,小时要加1**
//在继续讲解之前,先引入耦合的概念
/
*对象和对象之间的联系紧密程度叫做耦合。
*对象和对象的耦合程度越紧,表现在源代码上就是它们的代码互相依赖互相牵制。
*我们理想的模型,是对象和对象之间的耦合尽可能的松,平行的对象要尽量的减少联系,让更高层次的对象来提供通信服务
/
那么,在时钟显示程序这个例子当中,由于时钟和分钟有相同的属性,我们定义一个类Display

可以看到,这一个类可以创建出时钟和分钟两个对象,区别只是llimit一个是12,一个是60,完全可以用一个代码完全相同的类new出两个数值不同的对象。
那么现在问题来了,由于当分钟达到上限时会牵动时钟加1,怎么编写代码完成时钟和分钟两个对象的交互呢?如果在display里面修改if分钟的某个值,时钟++的代码,那么势必会让时钟和分钟两个对象对应的类的代码不相同,这样就使得两者的耦合程度太过紧密。
于是我们新建一个类Clock,用Clock类来定义一个clock的对象,用它来管理两个Display类型的对象,也即是clock的成员变量(min,hour),来管理它们之间的关系,再做显示;

在这里,clock算是更高层次的对象,即一个对象里有两个对象,或者,用一个对象来管理其他两个对象之间的关系。
本文探讨了面向对象编程中对象的识别和抽象,强调了对象间的组合关系。通过时钟显示程序的例子,解释了当一个对象包含多个对象时,如何处理它们之间的交互和耦合。提出了理想模型是降低对象间的耦合度,通过创建新的Clock类来管理Display类的实例(分钟和小时),从而实现对象间的通信和服务。

被折叠的 条评论
为什么被折叠?



