zoukankan      html  css  js  c++  java
  • 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();
    	}
    }
    

    运行的结果如下:

  • 相关阅读:
    02-CSS基础与进阶-day8_2018-09-10-20-14-46
    02-CSS基础与进阶-day7_2018-09-07-21-42-30
    02-CSS基础与进阶-day7_2018-09-07-20-25-28
    02-CSS基础与进阶-day7_2018-09-07-20-15-37
    02-CSS基础与进阶-day6_2018-09-05-22-35-51
    linux(5)查看历史命令执行记录history
    linux(4)Linux 文件内容查看
    linux(3) 处理目录的常用命令
    linux(2)系统目录结构
    docker(12)使用Dockerfile创建jenkins+python3+pytest环境
  • 原文地址:https://www.cnblogs.com/wmzclever/p/12576921.html
Copyright © 2011-2022 走看看