[java] 클래스(모델)의 종류

송어·2023년 11월 11일

모델(Model)

현실엔 다양한 객체들이 존재하고, 그 객체들은 각각 역할이 정해져있다. 이것을 바탕으로 객체를 설계할 때 모델(model)을 만든다고도 말한다.

객체지향 프로그래밍에서는 클래스로 객체를 설계하기 때문에 클래스모델을 설계하는 도구라고 말한다.

모델(Model) : 객체지향 프로그래밍에서 클래스역할에 따라 부르는 이름

역할에 따라 다양한 모델을 만들 수 있다.

우리가 클래스로 만들어 사용하게 될 모델의 종류
1. DTO, VO Model : 데이터를 담는(이동)모델
2. DAO Model : 데이터를 처리(DB)하는 모델(Data Access Object)
3. Utility Model : 도움을 주는 모델(Helper Object)

DTO, VO

DTO, VO 클래스가 왜 필요할까?

데이터를 하나로 묶어야 될 경우(데이터를 하나의 구조에 수집하는 역할)

ex) 자동차의 정보를 키보드로부터 입력 받아서 다른 메서드로 이동 해야 되는 경우
-> CarDTO에 데이터를 입력받은 후 다른 메서드로 이동시키게 됨

public class CarTest {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("자동차 일련번호 : ");
        int carSn = scan.nextInt();

        scan.nextLine();

        System.out.println("자동차 이름 : ");
        String carName = scan.nextLine();
        System.out.println("자동차 가격 : ");
        int carPrice = scan.nextInt();

        scan.nextLine();

        System.out.println("자동차 소유자 : ");
        String carOwner = scan.nextLine();

        System.out.println("자동차 연식 : ");
        int carYear = scan.nextInt();

        scan.nextLine();

        System.out.println("자동차 타입 : "); // G(휘발유), D(경유)
        String carType = scan.nextLine();


        CarDTO car = new CarDTO();
        //콘솔로 받는 데이터를 DTO에 연결(데이터를 객체에 수집해 하나로 모음)
        car.carSn = carSn;
        car.carName = carName;
        car.carPrice = carPrice;
        car.carOwner = carOwner;
        car.carYear = carYear;
        car.carType = carType;

        carInfo(car); // 인자로 인스턴스Car를 전달

    }
    //Q. 매개변수로 자동차의 정보를 받아서 출력하는 메서드
    public static void carInfo(CarDTO car) { // call By Reference 형식으로 객체를 매개변수로 전달

        System.out.println(
                "자동차 일련번호: " + car.carSn + "\n" +
                        "자동차 이름: " + car.carName + "\n" +
                        "자동차 가격: " + car.carPrice + "\n" +
                        "자동차 소유자: " + car.carOwner + "\n" +
                        "자동차 연식: " + car.carYear + "\n" +
                        "자동차 타입: " + car.carType);
    }
}

DB에 있는 데이터를 프로그램에서 가져와서 담는 경우에도 DTO를 활용한다.

DAO 클래스

데이터베이스에 데이터(VO, DTO)를 저장, 수정 하거나 검색, 삭제를 하기 위해서 만들어지는 모델

DAO(Data Access Object) : CRUD 동작을 가지고 있는 모델, 비즈니스 로직을 처리하는 클래스


public class CarDAO {

    public void createCar(CarDTO car) {
        //DB연결, Insert SQL
        System.out.println("car정보가 DB에 저장됨");
    }

    public void insertCar() {
        System.out.println("car정보가 표시됨");
    }
    ... DB연결이 아닌 비즈니스 로직만 표현함
}
//DAO에선 DB연결 및 CRUD와 관련한 비즈니스 로직을 담당한다.

Utility 클래스

반복적으로 사용해야 될 동작(기능)을 별도의 클래스로 만들어 놓고 필요할 때 사용하는 클래스
자바에서도 java.util 패키지에 이러한 utility클래스가 많이 있다.

도움을 주는 클래스들

날짜, 통화교환, 시간 정보 획득 기능(동작)
인코딩 기능(동작)
DAO이외의 별도 기능(동작)
->main 메서드에서 분리해서 코딩(모듈화)

0개의 댓글