运用oop思想做一个有关门禁系统
java的封装属性
对象只操作对象本身的属性和调用其它对象的方法
对象本身的属性不能直接访问,通过本身的调用方法来实现对属性的修改,达到了封装的效果
门禁系统工作原理
guest到达门前按下门铃
管理员监控门禁系统的门铃,监控门铃信号响铃状态时,判断是后开门,如果开门,将门禁系统的开门开门信号置为开启状态
门禁系统监控开门信号,如果开门信号为开启状态,门禁系统将门的属性置为开启,则开门
我会陆续将此项目做完,请大家多多关注
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();
}
}