Java学习笔记1

第二章 对象交互(1)


  其实对于面向对象编程已经在学C++时有过初步了解了,但很少真正使用,这此趁着学习Java更深层次地理解一下。
1.对象的交互

--引用浙大翁恺老师的话
  当一个对象里有多个对象的时候,那些对象之间是如何交互的,对象和对象之间的联系是如何建立的,对象如何和其他对象交流。对象和对象之间的联系紧密程度叫做耦合。对象和对象的耦合程度越紧,表现在源代码上,就是它们的代码是互相依赖、互相牵制的。我们理想的模型,是对象和对象之间的耦合要尽可能的松,平行的对象要尽量减少直接联系,让更高层次的对象来提供通信服务。

这里举了一个数字钟的例子
现在想实现一个简单的数字时钟,按照面向对象的思维需要用若干个类来实现,我们先构想一个Display类用来实现数字的增加功能,调用一次数字增加1,并为其设置一个界限limit成员变量,当数字达到了limit界限时清零。此外,添加一个返回当前数字值的函数,对当前时刻加以判断。

public class Display {
	private int limit=0;
	private int value=0;
	public Display(int limit)
	{
		this.limit=limit;
	}
	
	public int getValue()
	{
		return this.value;
	}
	
	public void Run()
	{
		value++;
		if(value==limit)
		{
			value=0;
		}
		//System.out.println(value);
	}
}

  这时我们就要考虑调用这个Display类实现功能,我们考虑把钟分为两个部分,一个表示分钟的两位、另一个表示小时的两位,这两个部分分别用display构造,一个上限为24,另一个为60。但又如何令两个部分可以交互呢?即当分钟达到60时令小时加1,这时我们就借助Clock类,如果把hour和minute均封装到Clock类中,这样借助Clock这个第三者就可以判断其中一个对象的状态,并根据它来影响另一个对象的状态。

public class Clock {
	private Display hour=new Display(24);
	private Display minute=new Display(60);
	
	public void start()
	{
		while(true)
		{
			minute.Run();
			if(minute.getValue()==0)
			{
				hour.Run();
			}
			System.out.printf("%02d:%02d
",hour.getValue(),minute.getValue());
		}
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Clock clock=new Clock();
		clock.start();
	}
}

运行的结果如下:

原文地址:https://www.cnblogs.com/wmzclever/p/12576921.html