• 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();
    	}
    }
    

    运行的结果如下:

  • 相关阅读:
    周赛D. Digging for Gold(扫描线)
    CF1209F Koala and Notebook(最短路+拆点)
    P6793 [SNOI2020]字符串(后缀树上DP)
    [HEOI2016/TJOI2016]字符串(后缀自动机,可持久化线段树,线段树合并,二分答案)
    CF1166F Vicky's Delivery Service(并查集,启发式合并)
    P4248 [AHOI2013]差异(后缀树)
    CF1175F The Number of Subpermutations(单调栈,ST表)
    CF666E Forensic Examination(后缀自动机,可持久化线段树合并)
    GYM103069G. Prof. Pang's sequence
    [转]C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现
  • 原文地址:https://www.cnblogs.com/wmzclever/p/12576921.html
Copyright © 2020-2023  润新知