Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 한번 해블로그

[Java] 12. 클래스를 직접 만들 수 있는 미친 클라쓰~ 본문

Java

[Java] 12. 클래스를 직접 만들 수 있는 미친 클라쓰~

hide on bush 2023. 12. 8. 10:58

객체지향프로그래밍인 자바에서 클래스를 직접 만들어서 사용할 수 있다. 그 클래스를 역할에 따라 부르는 이름을 Model(모델)이라고 한다. 즉, 우리는 역할에 따라 다양한 모델을 만들어 사용할 수 있다.
우리가 클래스로 만들어서 사용하게 될 모델의 종류에 대해 알아보자.

1. 시작 클래스

- 시작 클래스는 모델의 종류에는 포함된다고할 수 없지만 우리가 많이 사용했으니 다시 짚어보자..!
- 시작 클래스는 메인 메서드를 가지고 있는 메인 클래스, 시작 기능을 가지고 있는 역할


2. DTO(Data Transfer Object), VO(Value Object Model)

- DTO, VO는 데이터를 담는(이동)하는 모델이다. 예를 들어 책, 영화 등 하나의 구조를 새롭게 만들어서 사용하는 것. 즉, 데이터를 저장하고 이동하는데 사용한다
- 왜 필요할까? : 데이터를 다른 클래스, 객체 메소드로 이동해야할 때 하나로 묶어서 이동하면 편리하니까!(데이터를 하나로 수집하는 역할)

public class CarDTO {
    public int carSn;
    public String carName;
    public int carPrice;
    public String carOwner;
    public int carYear;
    public String carType;
}
public class CarTest {
    public static void main(String[] args) {
        //Q. 자동차의 정보를 키보드로 입력 받아 다른 메서드로 이동
        Scanner scan=new Scanner(System.in); //new는 객체를 생성할 때 쓰는 연산자, 오른쪽에는 객체를 생성하는 생성자 메서드
        System.out.print("자동차 일련번호:");
        int carSn=scan.nextInt();

        scan.nextLine(); //버퍼비우기, nextInt 다음에 엔터키가 스트림에 남아있기때문에

        System.out.print("자동차 이름:");
        String carName=scan.nextLine();

        System.out.print("자동차 가격:");
        int carPrice=scan.nextInt();

        scan.nextLine();

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

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

        scan.nextLine();

        System.out.print("자동차 타입:"); // G(휘발유), D(경유)
        String carType=scan.nextLine();
        
        CarDTO car=new CarDTO(); //fc.java.model. import 하기
        car.carSn=carSn;
        car.carName=carName;
        car.carPrice=carPrice;
        car.carOwner=carOwner;
        car.carYear=carYear;
        car.carType=carType;
        carInfoPrint(car);
    }

    public static void carInfoPrint(CarDTO car){
        System.out.println(car.carSn+"\t"+car.carName+"\t"+car.carPrice+"\t"+car.carOwner+"\t"+car.carYear+"\t"+car.carType);
    }

}

3. DAO(Data Access Object) 

- 데이터를 처리하는 모델이며 데이터베이스를 연동하는 객체이다.
- 데이터베이스(Oracle, MY SQL 등) 프로그램에 테이블을 만들어 CRUD(Create, Read, Update, Delete) 동작을 가지고 있는 클래스

public class CarDAO {
    //DB연결이 되었다는 가정하에 진행
    public void carInsert(CarDTO car){
        System.out.println("car정보가 DB에 저장되었습니다.");
    }
    public void carSelect(CarDTO car){
        System.out.println("car정보가 출력되었습니다");
    }
}
public class CarInsertTest {
    public static void main(String[] args) {
        //키보드로부터 입력
        Scanner scan=new Scanner(System.in); //new는 객체를 생성할 때 쓰는 연산자, 오른쪽에는 객체를 생성하는 생성자 메서드
        System.out.print("자동차 일련번호:");
        int carSn=scan.nextInt();

        scan.nextLine(); //버퍼비우기, nextInt 다음에 엔터키가 스트림에 남아있기때문에

        System.out.print("자동차 이름:");
        String carName=scan.nextLine();

        System.out.print("자동차 가격:");
        int carPrice=scan.nextInt();

        scan.nextLine();

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

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

        scan.nextLine();

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

        CarDTO car=new CarDTO(); 
        car.carSn=carSn;
        car.carName=carName;
        car.carPrice=carPrice;
        car.carOwner=carOwner;
        car.carYear=carYear;
        car.carType=carType;

        CarDAO dao=new CarDAO();
        dao.carInsert(car);
        dao.carSelect(car);
    }
}

4. Utility

- Utility는 말 그대로 도움을 주는 모델인데 꼭 필요한 것은 아니고 필요하면 만들어서 사용하는 것
- 반복적으로 사용해야 될 동작을 별도의 클래스로 만들어 놓고 필요할 때 사용
- 자바에서도 java.util 패키지에 많은 클래스가 존재(Utility, Helper, Facade 등)

public class CarUtility {
    public void carPrint(CarDTO car){
        System.out.println(car.carSn+"\t"+car.carName+"\t"+car.carPrice+"\t"+car.carOwner+"\t"+car.carYear+"\t"+car.carType);
    }
}
import fc.java.model.CarDTO;
import fc.java.model.CarUtility;

public class CarUtilityTest {
    public static void main(String[] args) {
        //Q. Car 정보를 출력하는 동작을 가지고 있는 utility 클래스 설계
        int carSn=1110;
        String carName="BMW";
        int carPrice=9000000;
        String carOwner="홍길동";
        int carYear=2015;
        String carType="G";

        //데이터를 하나로 묶는다(이동)
        CarDTO car=new CarDTO();
        car.carSn=carSn;
        car.carName=carName;
        car.carPrice=carPrice;
        car.carOwner=carOwner;
        car.carYear=carYear;
        car.carType=carType;
        //carPrint(car);

        CarUtility carUtil=new CarUtility();
        carUtil.carPrint(car);
    }

}

블로그를 너무 오랫동안 쓰지않았는데,, 절대 쓰기 싫어서 안쓴게 아니라 강의를 먼저 다 듣는다고 늦게 씀 ^^,,,
그동안 별일은 없었고,, 시간이 너무 빠르게 가는거 같아서 슬프다,, 이제 2023년도 얼마남지 않았으니 좀만 더 열심히 하길 ^^,,,