Java class 쪼개기

Java · 2022. 2. 8. 23:33

요구 사항: 사용자 입력 값 (”create/update/find/delete ${key} ${value}”) 을 받아 hashMap에 CRUD를 구현한다.

  1. 한 클래스에 모두 작성 시
import java.util.HashMap;
import java.util.Scanner;

public class KdtJavaStudyApplication {

    public static HashMap<String, String>UserList= new HashMap<>();
        // static으로 선언해줘야 인스턴스화가 되면서 각 메소드에서 접근이 가능

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (true){
            String[] input = scanner.nextLine().split("\\s");
                //사용자 입력을 계속 받기 위해 while문을 사용한다

            if(input.length == 3){
                switch (input[0]){
                    case "create":
                        System.out.println("Run Create");
                        Create(input[1], input[2]);
                        break;
                    case "update":
                        System.out.println("Run Update");
                        Update(input[1], input[2]);
                        break;
                    default:
                        System.out.println("End Program!");
                        return;
                }
            }
            else if(input.length == 2){
                switch (input[0]){
                    case "find":
                        System.out.println("Run Find");
                        System.out.println(UserList.get(input[1]));
                        break;
                    case "delete":
                        System.out.println("Run Delete");
                        Delete(input[1]);
                        break;
                    default:
                        System.out.println("End Program!");
                        return;
                }
            }else{
                System.out.println(input.length);
                System.out.println("----404 NOT FOUND----");
                return;
            }
        }

    }
    public static void Create(String key, String value){
            UserList.put(key, value);
    }

    public static void Update(String key, String value){
            UserList.put(key, value);
        //put()은 key가 없으면 생성하고, key가 있으면 값을 변경, replace()는 key가 없을 시 null 반환
    }

    public static void Delete(String key){
            UserList.remove(key);
    }

}
  1. CRUD 로직과 실행 로직을 다른 클래스로 나눌 시
//KdtJavaStudyApplication.java

import java.util.HashMap;
import java.util.Scanner;

public class KdtJavaStudyApplication {

    public static void main(String[] args) {

        HashMap<String, String> UserList = new HashMap<>();
        //여기선 hashMap을 다른 클래스에 인스턴스로 넘겨줄 것이기 때문에 main 메소드 안에 작성
        UserDataManager userDataManager = new UserDataManager(UserList);
        //userDataManager 클래스를 자료형으로 사용해 userDataManager 인스턴스를 생성한다.
        //이때 생성자 UserDataManager에 해시맵 인스턴스를 넘겨준다.

        Scanner scanner = new Scanner(System.in);

        while (true){
            String[] input = scanner.nextLine().split("\\s");

            if(input.length == 3){
                switch (input[0]){
                    case "create":
                        System.out.println("Run Create");
                        userDataManager.Create(input[1], input[2]);
                        //Create 메소드는 userDataManager 객체에 종속되어 있기 때문에 이렇게 호출  
                        break;
                    case "update":
                        System.out.println("Run Update");
                        userDataManager.Update(input[1], input[2]);
                        break;
                    default:
                        System.out.println("End Program!");
                        return;
                }
            }
            else if(input.length == 2){
                switch (input[0]){
                    case "find":
                        System.out.println("Run Find");
                        System.out.println(UserList.get(input[1]));
                        break;
                    case "delete":
                        System.out.println("Run Delete");
                        userDataManager.Delete(input[1]);
                        break;
                    default:
                        System.out.println("End Program!");
                        return;
                }
            }else{
                System.out.println(input.length);
                System.out.println("----404 NOT FOUND----");
                return;
            }
        }
    }
}
//UserDataManager.java
import java.util.HashMap;

public class UserDataManager {

    private final HashMap<String, String> UserData;
        //final은 변경하면 안 되는 값을 선언할 때 사용. javascript의 const 같은 용도

    public UserDataManager(HashMap<String, String> userData){
        this.UserData = userData;
        //인자로 들어온 인스턴스를 현재 클래스의 userData 해시맵에 할당
    }

    public void Create(String key, String value){
        UserData.put(key, value);
    }

    public void Update(String key, String value){
        UserData.put(key, value);
    }

    public void Delete(String key){
        UserData.remove(key);
    }
}

'Java' 카테고리의 다른 글

Java로 구구단 만들기 (변형)  (0) 2022.02.08