实例要求
通过此实例可以加深一个类的设计,以及如何分析问题
本章要求
掌握类的设计思路
系统要求
在各个应用系统中,都能看见用户登录程序的影子,下面就模拟一个简单的用户登录程序,为了方便理解,现使用初始化参数的方式输入用户名和密码。本程序用户名:“lixinghua”,密码:“mldn”。
本实例主要采用的知识
拿到程序之后,是需要进行分析。分析的时候先分析其主要功能,先把代码实现了再说。
程序分析
既然是用初始化参数的方式输入用户名和密码,所以在程序运行之前就必须判断输入的参数个数是否合法,不过不合法,则必须提示用户的程序执行不对,并推出程序,如果用户已经正确的输入了参数,则就可以进行用户名及密码的验证了。如果信息正确则显示“XXX欢迎光临”,否则显示“错误用户名或密码”。
此时,按照以上的分析,进行简单的代码实现。
public class LoginDemo01{
public static void main(String args[]){
if(args.length!=2){ // 应该判断输入的参数个数是否是2
System.out.println("输入的参数不正确,系统退出!") ; // 给出一个正确的格式
System.out.println("格式:java LoginDemo01 用户名 密码") ;
System.exit(1) ; // 系统退出
}
String name = args[0] ; // 取出用户名
String password = args[1] ; // 取出密码
if(name.equals("lixinghua")&&password.equals("mldn")){ // 验证
System.out.println("欢迎" + name + "光临!") ;
}else{
System.out.println("错误的用户名和密码!") ;
}
}
};
以上已经完成了系统的规定功能操作,但是这样做合理吗?
按照此种思路,之前的程序需要进一步划分:
- 需要一个专门完成验证的类
- 需要为验证进行一个包装,通过一个类去访问验证的类。
class Check{ // 完成具体的验证操作
public boolean validate(String name,String password){
if(name.equals("lixinghua")&&password.equals("mldn")){ // 验证
return true ;
}else{
return false ;
}
}
};
class Operate{ // 本类只是调用具体的验证的操作
private String info[] ; // 定义一个数组属性,用于接收全部输入参数
public Operate(String info[]){
this.info = info ; // 通过构造方法取得全部的输入参数
}
public String login(){
Check check = new Check() ; // 实例化Check对象,用于检查信息
this.isExit() ; // 判断输入的参数是否正确
String str = null ; // 用于返回信息
String name = this.info[0] ;// 取出姓名
String password = this.info[1] ; // 取出密码
if(check.validate(name,password)){ // 登陆验证
str = "欢迎" + name + "光临!" ;
}else{
str = "错误的用户名和密码!" ;
}
return str ;
}
public void isExit(){ // 判断参数个数,来决定是否退出程序
if(this.info.length!=2){
System.out.println("输入的参数不正确,系统退出!") ; // 给出一个正确的格式
System.out.println("格式:java LoginDemo02 用户名 密码") ;
System.exit(1) ; // 系统退出
}
}
};
public class LoginDemo02{
public static void main(String args[]){
Operate oper = new Operate(args) ; // 实例化操作类的对象
System.out.println(oper.login()) ; // 取得验证之后的信息
}
};
疑问:如何更好地开发一个程序?
很多初学者都会有这样的难题,明明知识点都能看明白,但及书写不出程序。
拿到程序之后,如果缺少经验,则可以先把基本功能实现,功能实现之后,再逐步划分。
所以,学好程序开发一定要多动手写代码,如果只是看,没用。