javaoop思想例子

运用oop思想做一个有关门禁系统

java的封装属性
对象只操作对象本身的属性和调用其它对象的方法
对象本身的属性不能直接访问,通过本身的调用方法来实现对属性的修改,达到了封装的效果

门禁系统工作原理
guest到达门前按下门铃
管理员监控门禁系统的门铃,监控门铃信号响铃状态时,判断是后开门,如果开门,将门禁系统的开门开门信号置为开启状态
门禁系统监控开门信号,如果开门信号为开启状态,门禁系统将门的属性置为开启,则开门

我会陆续将此项目做完,请大家多多关注


package org.controlSys.test;

import java.util.Scanner;

class Door
{

	/**
	 * 电子门开启d
	 */
	public static final String OPEN = "电子门开启";

	/**
	 * 电子门关闭
	 */
	public static final String CLOSE = "电子门关闭";
}


/**
*顾客类
*/
class Guest
{

	/**
	按下门铃,将门禁系统类中的ring置为1
	*/
	public void pressRing(ControlSys controlSys){
		//不写controlSys.ring = 1,起到了封装的效果
		controlSys.setRing();
	}


}

/**
*门禁系统类
*/
class ControlSys
{
	private Door door = new Door();

	private int ring = 0;  //响铃     0:安静   1:响铃
	
	private int openSign;  //开门信号  0:不开门  1:开门

	public void setRing(){
		this.ring = 1;
	}

	public int getRing(){
		return this.ring;
	}

	public void setopenSign(){
		this.openSign = 1;
	}

	public int getopenSign(){
		return this.openSign;
	}
	
	//监控开门信号,如果为1则开门
	public void work(){
		if(this.openSign == 1){
			System.out.println(door.OPEN);
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(door.CLOSE);
		}else{
			System.out.println("电子门没有打开");
		}
	}
}

/**
*管理员类
*/
class Admin
{
	public void work(ControlSys controlSys){
		if(controlSys.getRing()==1){
			System.out.println("有访客访问,是否开门(Y/N)");
			Scanner input = new Scanner(System.in);
			String answer = input.next();
			if(answer.equalsIgnoreCase("y")){
				controlSys.setopenSign();
			}else{
				System.out.println("admin拒绝开门");
			}

		}
	}
}



/**
*测试类
*/
class  Test
{
	public static void main(String[] args) 
	{
		System.out.println("welcome to out zone");
		ControlSys controlSys = new ControlSys();
		Admin admin = new Admin();
		Guest guest = new Guest();

		guest.pressRing(controlSys);
		admin.work(controlSys);
		controlSys.work();
	}
}





你可能感兴趣的:(java,oop)