交通灯管理系统

张孝祥在交通灯管理系统视频主要讲了两个问题,即面向对象的设计思路和java定时器的使用,下面分别从这两个方面来说说这个例子

面向对象思维

面向对象简介:从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。

如何理解:从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。

基本概念

1.对象:
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
   对象具有状态,一个对象用数据值来描述它的状态。
   对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
   对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
2.类
类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。
3.消息和方法
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
   类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。

对象三大特性

1.继承
继承性是面向对象程序设计语言所特有的,如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。
2.封装
封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

类的封装性为类的成员提供共有、缺省、保护和私有等多级访问权限,目的是隐藏类的私有成员和类中方法的实现细节。
3.多态
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
类的多态性提供类方法的多样性,多态性有两种表示方式:重载和覆盖。
综上可知,在OO方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。
老张的一句话说的好:谁拥有数据,谁就对外提供操作这些数据的方法,就把谁封装成对象。
换句话说,属性属于谁,谁就是要封装的对象。

java定时器

在讲定时器时,老方主要用了Executors这个工具类里面的newScheduledThreadPool方法来产生一个ScheduledExecutorService实例并调用此接口scheduleAtFixedRate方法来实现定时原理。
其实在Timer类也可实现定器的功能。
定时器类Timer在java.util包中。schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。
public class TimerTest {
	public static void main(String[] args){
		Timer timer = new Timer();
		//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
		timer.schedule(new MyTask(), 1000, 2000);
		//这个是用来停止此任务的,否则就一直循环执行此任务了
		while(true){
			try {
				int ch = System.in.read();
				if(ch-'c'==0){
					//使用这个方法退出任务
					timer.cancel();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	static class MyTask extends java.util.TimerTask{
		public void run() {
			System.out.println("________");
		}
	}
}

上面例子就实现了一个简单的定时器。
学习好这两点我认为交通灯管理系统就已经完全掌握了,编程无非就是一种思路,思路通了一切就能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值