클래스 배열을 이용한 로그인/회원가입 기능 만들어보기

BRINCE·2022년 9월 13일
0

자바 스터디

목록 보기
1/10

이것은 자바다 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());

이렇게 출력하게 만들면 더더욱 좋겠죠 ?😉

마무리

아이디,비밀번호,이름 이라는 부품을 만들어 아이디 보여주기,아이디 설정하기 등등의 동작을 하는 회원이라는 큰 틀을 만들어보았어요

이런식으로 배워본거를 위주로 원하는걸 구현해볼수 있다는건 정말 대단한거 같아요😊

이 것들을 응용해서 마찬가지로 정보 수정, 회원 탈퇴 이런 기능들을 만들 수 있답니다

마찬가지로 더 신경쓰면 좋을 점은 , 모든 방향으로 테스트를 했을때 오류가 나서 프로그램이 종료되거나 하지 않는 디테일까지 신경써주면 너무 좋겠죠? 예외처리 라던가, 해당 배열이 꽉 차면 회원가입이 불가능하다는 메세지를 출력하거나..

오늘 공부해본것을 정리해보았습니다~ 감사합니다 😊😊

profile
자스코드훔쳐보는변태

0개의 댓글