资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,门禁系统的面向对象设计,问题描述,某公司安装了电子门,要设计门禁系统:,公司的雇员可以凭借密码、胸卡或指纹进入公司,计算机根据雇员的验证方式对其身份进行验证,管理员在监控室可以通过按钮直接开启电子门,访客可以按门铃请求进入,由管理员为其放行,管理员可以为新职员设置密码,2,问题分析,-1,根据需求分析对象,门禁系统、电子门、计算机、输入设备,管理员、雇员、访客,验证接口、验证实现,3,问题分析,-2,对象关系,管理员,雇员,访客,验证接口,默认实现,指纹识别,密码验证,胸卡验证,extends,门禁系统包含:电子门、输入设备、计算机,implements,extends,extends,extends,4,难点分析,-1,门禁系统类:,ControlSys,包含属性:,电子门对象、计算机对象、输入设备对象、门铃、开门信号、日志对象,包含方法:工作方法,private Door,door,;/,门禁系统的电子门,private Computer,computer,;/,门禁系统的计算机,private,InputEquip,inputEquip,;/,门禁系统的输入设备,private int ring;/,门铃,,0,为安静,,1,为鸣响,private int,openSign,;/,开门信号,由管理员按下按钮时产生,private Logger,logger,;/,日志,public void work(),5,难点分析,-2,门禁系统工作分,3,步:,第一步:检查输入设备的输入缓存,第二步:检查开门信号,第三步:电子门开启状态维持,5,秒后关闭电子门,如果有输入且输入信息存在,开启电子门,输入是否正确由计算机类调用验证接口的相关方法判断,如果收到开门信号,开启电子门,/,如果电子门已开启,维持,5,秒,关闭电子门,java.lang.Thread.sleep(5000);,/,程序暂停,5000,毫秒,6,难点分析,-3,输入设备类模拟输入各种验证信息:,密码、胸卡、指纹都以字符串形式从控制台输入:,1,、密码以“,pa”,开头,2,、胸卡以“,ca”,开头,3,、指纹以“,fi,”,开头,输入的验证信息保存在输入设备的缓存中,门禁系统保存的验证信息不以上述字符开头,验证时使用,String,类的方法解析字符串,java.lang.String.substring,(int,beginIndex,int,endIndex,),java.lang.String.substring,(int,beginIndex,),private String input=null;/,输入设备缓存,7,难点分析,-4,用户级别,管理员,雇员,访客,extends,extends,只能按门铃,可以输入验证信息,可以直接开启电子门,监控门铃,8,难点分析,-5,验证,验证接口定义验证方法,编写默认的实现类:,GenericValidate,具体的验证类继承默认的实现类,public,boolean,check();/,定义验证方法,private Object inner;/,系统保存的身份信息,private Object input;/,需要验证的身份信息,public class,PassWordVld,extends,GenericValidate,public class,FingerMarkVld,extends,GenericValidate,public class,CardVld,extends,GenericValidate,9,阶段划分,第一阶段(,25,分钟),编写类:电子门、输入设备,第二阶段(,45,分钟),编写类:计算机、门禁系统,第三阶段(,45,分钟),编写类:访客、雇员、管理员,第四阶段(,25,分钟),编写类:验证接口、默认实现,第五阶段(,35,分钟),编写类:密码验证、指纹验证、胸卡验证,第六阶段(,15,分钟),编写类:测试雇员通过电子门,第七阶段(,30,分钟),编写类:测试访客按门铃、管理员开启电子门,10,第一阶段,第一阶段(,25,分钟),利用,Eclipse,创建工程、项目所需包,编写类:电子门、输入设备,要求学员自己动手完成,教员巡视,解答学员提出的问题,11,阶段检查,针对第一阶段抽查学员的操作结果,教员给出点评,12,第一阶段标准代码演示,创建工程和包,sys,包:放置门禁系统相关类,user,包:放置访客、雇员、管理员类,validate,包:放置验证身份的接口及其实现类,test,包:放置测试类,编写类:电子门类,Door.java,编写类:输入设备类,InputEquip,.java,13,第二阶段,第二阶段(,45,分钟),编写类:,计算机类,(20,分钟,),门禁系统类,(25,分钟,),要求学员自己动手编写,教员巡视,解答学员提出的问题,14,阶段检查,针对第二阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,教员给出点评或集中演示难点部分,15,第二阶段标准代码演示,计算机,类,:,Computer.java,门禁系统,类,:,ControlSys.java,16,第三阶段,第三阶段(,45,分钟),编写类,访客类,(15,分钟,),雇员类,(10,分钟,),管理员类,(20,分钟,),要求学员自己动手编写,教员巡视,解答学员提出的问题,17,阶段检查,针对第三阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,教员给出点评或集中演示难点部分,18,第三阶段标准代码演示,访客类:,Guest.java,雇员类:,Employee.java,管理员:,Admin.java,19,第四阶段,第四阶段(,25,分钟),编写类,验证接口,默认实现类,要求学员自己动手编写,教员巡视,解答学员提出的问题,20,阶段检查,针对第四阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果,教员给出点评,21,第四阶段标准代码演示,验证接口,:,Validate.java,默认实现:,GenericValidate.java,/*-,GenericValidate.java,-*/,private Object inner;,private Object input;,/*,*,比较方法的默认的实现,判断输入信息是否存在,*,return,比较结果,*,/,public,boolean,check(),for(int i=0;i,this.getInner().length,;i+),if(,this.getInput,()!=null&,this.getInput().equals(this.getInner()i,),return true;,return false;,22,第五阶段,第五阶段(,35,分钟),编写类,密码验证类,(15,分钟,),指纹验证类,(10,分钟,),胸卡验证类,(10,分钟,),要求学员自己动手编写,教员巡视,解答学员提出的问题,23,阶段检查,针对第五阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果,教员给出点评,24,第五阶段标准代码演示,密码验证,:,PassWordVld.java,胸卡验证:,CardVld.java,指纹验证:,FingerMarkVld.java,25,第六阶段,第六阶段(,15,分钟),编写类,测试雇员通过电子门,要求学员自己动手编写,教员巡视,解答学员提出的问题,26,阶段检查,针对第六阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果,教员给出点评,27,第六阶段标准代码演示,测试雇员通过电子门,:,EmployeeTest.java,public class,EmployeeTest,public static void,main(String,args,),Employee,employee,=new Employee(,雇员,a);/,管理员,ControlSys,controlSys,=new,ControlSys,();/,门禁系统,System.out.println,(,门禁系统,-,雇员测试,);,System.out.println,(*);,while(true,),employee.input(controlSys,);,controlSys.work,();,28,第七阶段,第七阶段(,30,分钟),编写类,测试管理员开启电子门,(15,分钟,),测试访客按门铃,(15,分钟,),要求学员自己动手编写,教员巡视,解答学员提出的问题,29,阶段检查,针对第七阶段抽查学员的编码结果,抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果,教员给出点评,30,第七阶段标准代码演示,测试访客:,GuestTest.java,测试管理员:,AdminTest.java,public class,GuestTest,public static void,main(String,args,),Guest,guest,=new Guest(,赵强,);/,访客员,Admin,admin,=new Admin(,王石头,);/,管理员,ControlSys,controlSys,=new,ControlSys,();/,门禁系统,System.out.println,(,门禁系统,-,访客测试,);,System.out.println,(*);,while(true,),guest.pressRing(controlSys,);,admin.work(controlSys,guest);,controlSys.work,();,public class,AdminTest,public static void,main(String,args,),Admin,admin,=new Admin(,王哲,);/,管理员,ControlSys,controlSys,=new,ControlSys,();/,门禁系统,System.out.println,(,门禁系统,-,管理员测试,);,System.out.println,(*);,while(true,),admin.work(controlSys,);,controlSys.work,();,31,总结,巩固知识点:,面向对象的特性:封装、继承、多态,常量:必需的关键字,-,final,接口:定义接口、实现接口,异常处理:,try,/,catch,/,finally,log4j,:输出保存日志信息,32,Thank you,33,
展开阅读全文