이것은 자바다 6 - 클래스 배운거 정리
객체지향 프로그래밍 > 객체를 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍 이라고 합니다.
오늘은 OOP를 응용한 간단한 로그인 기능과 회원가입 기능을 만들어볼거에요 😉
일단 전체적인 틀을 짜봅시다
객체 지향 프로그래밍 이니 객체가 존재해야겠죠?
일단 저희가 만들건 가장 큰 틀인 회원 < 객체가 필요하고,
그 회원들의 정보를 저장할 속성 객제가 필요하고, 그 속성들을 가져올 동작 객체가 필요해요
간단하게 회원들의 정보를 저장할 클래스 객체를 Customer 로 만들어봅시다😎
static class Customer{
private String id;
private String pw;
private String name;
void Customer(){};
}
이렇게 가장 먼저 Customer 클래스를 선언 후에
그들의 정보를 저장할 private 변수들을 만들어줍시다
클래스를 static 으로 설정한 이유는 클래스 내부에서 호출하는게 아닌 외부에서 호출하기 위해서 static 을 붙여주었어요
private 으로 접근제어자를 설정 이유는 아무래도 고객들의 정보이기 때문에 직접 접근하는걸 막아둬야 겠죠 ?🤔
private 으로 만들어놨으니 게터와 세터를 또 만듭시다 ! 👍
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
이렇게 각각의 값을 리턴해줄 게터와 각각의 값을 설정해줄 세터를 만들어주었어요.
그러면 이제 대망의 기본적인 틀을 만들어보도록 해요🤩
전에 배웠던 switch 문과 do-while 문을 이용해서 프로그램의 모드가 true 일때 동작을 하고, false 일때는 종료가 되도록 설정하고, 메뉴를 입력받아 switch 문으로 작동되도록 해봅시다.😊
public static void main(String[] args) throws NullPointerException{ //null예외 발생 가능!
boolean mode=true; //프로그램 동작 상황
String loginSession ; //현재 로그인한 회원 아이디 저장
Customer customers[] = new Customer[10]; //총 가입 가능한 회원수는 10명으로 설정합시다. 배열클래스 인스턴스 생성
do{
System.out.println("-------------------------------------");
System.out.println("1.회원가입 | 2.로그인 | 3.회원탈퇴");
System.out.println("-------------------------------------");
System.out.print("선택>");
Scanner sc = new Scanner(System.in);
int menu = sc.nextInt();
switch(menu){
모드 변수를 만들어서 true 일때만 동작이 가능하도록 할거에요.
그리고 loginSession 변수를 만들어서 현재 로그인한 회원의 아이디를 저장해서 회원정보 수정, 탈퇴 등등을 진행하게 할 수 있겠죠?!(이건 나중에 ㅎㅎ)😉
회원의 수는 10명으로 설정해두었어요. 이렇게 배열을 이용해서 각각의 순서에 회원의 정보를 저장하도록 만들어봅시다.
로그인을 하려면? 회원가입을 해야합니다! 🤦♂️
회원 가입은 반복문을 돌려 customers 배열의 빈 자리에 정보를 저장하게 할거에요.😗😗
case 1:
System.out.println("아이디를 입력해주세요.");
String id = sc.next();
System.out.println("이름을 입력해주세요.");
String name = sc.next();
System.out.println("비밀번호를 입력해주세요.");
String pw = sc.next();
System.out.println("비밀번호를 한번 더 입력해주세요.");
String pw2 = sc.next();
if(pw.equals(pw2)){
System.out.println("비밀번호가 일치합니다.");
System.out.println("아이디가 생성되었습니다.");
for(int i=0;i<customers.length;i++){
if(customers[i]==null){
customers[i] = new Customer();
customers[i].setId(id);
customers[i].setPw(pw);
customers[i].setName(name);
}
}
}
break;
이렇게 스캐너로 아이디,이름,비밀번호를 입력받을거에요.
보통은 회원가입 할때 비밀번호를 두번 입력하게 해서 잘못된 비밀번호 생성을 방지하잖아요?
if 문을 사용해서 비밀번호가 맞는지 체크 후에
반복문을 돌려 배열 인스턴스 빈자리에 정보를 저장합니다.👍
마찬가지로 클래스 변수를 private으로 설정해줬으니 직접 생성자를 이용해 정보를 저장 후에 가져오는것이 아닌 세터로 값을 초기화 시켜줘야 해용.
마찬가지로 이 경우에 더더욱 디테일한 생성을 위해 이름을 입력하라는데 숫자를 입력하거나 비밀번호가 몇글자이상 몇글자 미만 이런 조건을 설정할때에는 예외처리를 이용하거나 if문을 이용해서 조건을 설정 할 수 있어요.🤔
자 그렇게 아이디를 만들었으면 로그인기능도 만들어봐야겠죠?😎
System.out.println("아이디를 입력해주세요.");
String inputId = sc.next();
System.out.println("비밀번호를 입력해주세요.");
String inputPw = sc.next();
마찬가지로 정보를 입력 받습니다.
이때 for 문을 이용해서 id를 검색할거에요
for(int i=0 ;i<customers.length;i++){
if(inputId.equals(customers[i].getId()))
이렇게 배열에 10개의 공간이 있다면 해당 아이디 정보를 가진 배열을 찾을때까지 반복문을 돌려 아이디를 매치시킵니다 !
그리고 만약에 아이디가 존재한다면, 비밀번호도 같이 매치시켜볼거에요.
if(inputPw.equals(customers[i].getPw())){
System.out.println("로그인 되었습니다.");
loginSession = inputId;
break;
}
else{
System.out.println("비밀번호가 틀렸습니다.");
System.out.println("다시 로그인 해주세요.");
thisisJava6.main(null); //초기 화면 호출
break;
}
이렇게 아이디가 존재하고, 패스워드가 일치한다면, 로그인이 되고 해당 로그인 세션에 아이디를 저장합니다.
그리고 비밀번호가 틀리면 초기화면으로 돌아가게 만들었어요!
그리고 break 넣는거 잊지맙시다.
마찬가지로 이 경우에 회원이 10명이 차있지 않은 상태에서는 null예외가 뜰 수 있어요. 그때 예외처리로 try catch 문을 이용해서 복잡한 일이 안생기게 만들면 좋을거에요 (물론 저도 제대로 안배워서 모름)🤷♂️
짜잔~ 별 이상 없이 동작하는걸 볼 수 있습니다😎
여기에 내 정보가 잘 들어갔는지 확인해보려면
로그인 시에 customers[i].getName() 을 넣어줘서
printf("%d님 환영합니다!",customers[i].getName());
이렇게 출력하게 만들면 더더욱 좋겠죠 ?😉
아이디,비밀번호,이름 이라는 부품을 만들어 아이디 보여주기,아이디 설정하기 등등의 동작을 하는 회원이라는 큰 틀을 만들어보았어요
이런식으로 배워본거를 위주로 원하는걸 구현해볼수 있다는건 정말 대단한거 같아요😊
이 것들을 응용해서 마찬가지로 정보 수정, 회원 탈퇴 이런 기능들을 만들 수 있답니다
마찬가지로 더 신경쓰면 좋을 점은 , 모든 방향으로 테스트를 했을때 오류가 나서 프로그램이 종료되거나 하지 않는 디테일까지 신경써주면 너무 좋겠죠? 예외처리 라던가, 해당 배열이 꽉 차면 회원가입이 불가능하다는 메세지를 출력하거나..
오늘 공부해본것을 정리해보았습니다~ 감사합니다 😊😊