《门禁系统的面向对象设计.ppt》由会员分享,可在线阅读,更多相关《门禁系统的面向对象设计.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、门禁系统的面向对象设计2022/12/121 问题描述某公司安装了电子门,要设计门禁系统:某公司安装了电子门,要设计门禁系统:公司的雇员公司的雇员可以凭借密码、胸卡或指纹进入公司可以凭借密码、胸卡或指纹进入公司计算机计算机根据雇员的验证方式对其身份进行验证根据雇员的验证方式对其身份进行验证 管理员管理员在监控室可以通过按钮直接开启电子门在监控室可以通过按钮直接开启电子门 管理员管理员可以为新职员设置密码可以为新职员设置密码访客访客可以按门铃请求进入,由管理员为其放行可以按门铃请求进入,由管理员为其放行2022/12/122软件素养与训练2问题分析问题分析-1 根据需求分析对象根据需求分析对象
2、门禁系统、电子门、计算机、输入设备门禁系统、电子门、计算机、输入设备管理员、管理员、雇员、雇员、访客访客验证接口、验证实现验证接口、验证实现2022/12/123软件素养与训练2问题分析问题分析-2对象关系对象关系管理员管理员雇员雇员访客访客验证接口验证接口默认实现默认实现指纹识别指纹识别密码验证密码验证胸卡验证胸卡验证extends门禁系统包含:电子门、输入设备、计算机门禁系统包含:电子门、输入设备、计算机implementsextendsextendsextends2022/12/124软件素养与训练2难点分析难点分析-1n门禁系统类:门禁系统类:ControlSys包含属性:包含属性:电
3、子门对象、计算机对象、输入设电子门对象、计算机对象、输入设备对象、门铃、开门信号、日志对象备对象、门铃、开门信号、日志对象包含方法:包含方法:工作工作privateDoordoor;/门禁系统的电子门门禁系统的电子门privateComputercomputer;/门禁系统的计算机门禁系统的计算机privateInputEquipinputEquip;/门禁系统的输入设备门禁系统的输入设备privateintring;/门铃,门铃,0为安静,为安静,1为鸣响为鸣响privateintopenSign;/开门信号,由管理员按下按钮时产生开门信号,由管理员按下按钮时产生privateLoggerl
4、ogger;/日志日志publicvoidwork()2022/12/125软件素养与训练2难点分析难点分析-2n门禁系统工作分门禁系统工作分3步:步:第一步:检查输入设备的输入缓存第一步:检查输入设备的输入缓存第二步:检查开门信号第二步:检查开门信号第三步:电子门开启状态维持第三步:电子门开启状态维持5秒后关闭电子门秒后关闭电子门如果有输入且输入信息存在,开启电子门如果有输入且输入信息存在,开启电子门输入是否正确由计算机类调用验证接口的相关方法判断输入是否正确由计算机类调用验证接口的相关方法判断如果收到开门信号,开启电子门如果收到开门信号,开启电子门/如果电子门已开启,维持如果电子门已开启,
5、维持5秒,关闭电子门秒,关闭电子门java.lang.Thread.sleep(5000);/程序暂停程序暂停5000毫秒毫秒2022/12/126软件素养与训练2难点分析-3n输入设备类输入设备类模拟输入各种验证信息:模拟输入各种验证信息:密码、胸卡、指纹都以字符串形式从控制台输入:密码、胸卡、指纹都以字符串形式从控制台输入:1、密码以、密码以“pa”开头开头2、胸卡以、胸卡以“ca”开头开头3、指纹以、指纹以“fi”开头开头输入的验证信息保存在输入设备的缓存中输入的验证信息保存在输入设备的缓存中门禁系统保存的验证信息不以上述字符开头门禁系统保存的验证信息不以上述字符开头验证时使用验证时使用
6、String类的方法解析字符串类的方法解析字符串java.lang.String.substring(intbeginIndex,intendIndex)java.lang.String.substring(intbeginIndex)privateStringinput=null;/输入设备缓存输入设备缓存2022/12/127软件素养与训练2难点分析-4n用户级别用户级别管理员管理员雇员雇员访客访客extendsextends只能按门铃只能按门铃可以输入验证信息可以输入验证信息可以直接开启电子门,监控门铃可以直接开启电子门,监控门铃2022/12/128软件素养与训练2难点分析-5n验证验
7、证验证接口定义验证方法验证接口定义验证方法编写默认的实现类:编写默认的实现类:GenericValidate具体的验证类继承默认的实现类具体的验证类继承默认的实现类publicbooleancheck();/定义验证方法定义验证方法privateObjectinner;/系统保存的身份信息系统保存的身份信息privateObjectinput;/需要验证的身份信息需要验证的身份信息publicclassPassWordVldextendsGenericValidatepublicclassFingerMarkVldextendsGenericValidatepublicclassCardVld
8、extendsGenericValidate2022/12/129软件素养与训练2阶段划分阶段划分n第一阶段编写类:电子门、输入设备 n第二阶段编写类:计算机、门禁系统n第三阶段编写类:访客、雇员、管理员n第四阶段编写类:验证接口、默认实现n第五阶段n编写类:密码验证、指纹验证、胸卡验证n第六阶段编写类:测试雇员通过电子门n第七阶段编写类:测试访客按门铃、管理员开启电子门2022/12/1210软件素养与训练2第一阶段n第一阶段利用Eclipse创建工程、项目所需包编写类:电子门、输入设备2022/12/1211软件素养与训练2n创建工程和包sys包:放置门禁系统相关类user包:放置访客、雇
9、员、管理员类validate包:放置验证身份的接口及其实现类test包:放置测试类n编写类:电子门类 n编写类:输入设备类 2022/12/1212软件素养与训练2第二阶段n第二阶段编写类:计算机类门禁系统类2022/12/1213软件素养与训练2第三阶段n第三阶段编写类访客类 雇员类管理员类2022/12/1214软件素养与训练2第四阶段n第四阶段编写类验证接口默认实现类2022/12/1215软件素养与训练2n验证接口:Validate.javan默认实现:GenericValidate.java/*-GenericValidate.java-*/privateObjectinner;pr
10、ivateObjectinput;/*比较方法的默认的实现,判断输入信息是否存在比较方法的默认的实现,判断输入信息是否存在*return比较结果比较结果*/publicbooleancheck()for(inti=0;ithis.getInner().length;i+)if(this.getInput()!=null&this.getInput().equals(this.getInner()i)returntrue;returnfalse;2022/12/1216软件素养与训练2第五阶段n第五阶段编写类密码验证类指纹验证类胸卡验证类2022/12/1217软件素养与训练2第六阶段n第六阶段
11、n编写类测试雇员通过电子门2022/12/1218软件素养与训练2n测试雇员通过电子门:EmployeeTest.javapublicclassEmployeeTestpublicstaticvoidmain(Stringargs)Employeeemployee=newEmployee(雇员雇员a);/管理员管理员ControlSyscontrolSys=newControlSys();/门禁系统门禁系统System.out.println(门禁系统门禁系统-雇员测试雇员测试);System.out.println(*);while(true)employee.input(controlSy
12、s);controlSys.work();2022/12/1219软件素养与训练2第七阶段n第七阶段编写类测试管理员开启电子门 测试访客按门铃2022/12/1220软件素养与训练2n测试访客:GuestTest.javan测试管理员:AdminTest.javapublicclassGuestTestpublicstaticvoidmain(Stringargs)Guestguest=newGuest(赵强赵强);/访客员访客员Adminadmin=newAdmin(王石头王石头);/管理员管理员ControlSyscontrolSys=newControlSys();/门禁系统门禁系统Sy
13、stem.out.println(门禁系统门禁系统-访客测试访客测试);System.out.println(*);while(true)guest.pressRing(controlSys);admin.work(controlSys,guest);controlSys.work();publicclassAdminTestpublicstaticvoidmain(Stringargs)Adminadmin=newAdmin(王哲王哲);/管理员管理员ControlSyscontrolSys=newControlSys();/门禁系统门禁系统System.out.println(门禁系统门禁系统-管理员测试管理员测试);System.out.println(*);while(true)admin.work(controlSys);controlSys.work();2022/12/1221软件素养与训练2总结n巩固知识点:面向对象的特性:封装、继承、多态面向对象的特性:封装、继承、多态常量:必需的关键字常量:必需的关键字-final接口:定义接口、实现接口接口:定义接口、实现接口异常处理:异常处理:try/catch/finallylog4j:输出保存日志信息:输出保存日志信息2022/12/1222软件素养与训练2
限制150内