개발 한번 해블로그
[Java] 12. 클래스를 직접 만들 수 있는 미친 클라쓰~ 본문
객체지향프로그래밍인 자바에서 클래스를 직접 만들어서 사용할 수 있다. 그 클래스를 역할에 따라 부르는 이름을 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년도 얼마남지 않았으니 좀만 더 열심히 하길 ^^,,,
'Java' 카테고리의 다른 글
[Java] 14. 잘 설계된 VO 클래스 (1) | 2023.12.08 |
---|---|
[Java] 13. 객체에게 접근하는 권한 이해하기 (2) | 2023.12.08 |
[Java] 11. 클래스로 객체 모델링 (2) | 2023.11.29 |
[Java] 10. 메서드와 변수의 관계 이해 (4) | 2023.11.27 |
[Java] 9. 사고력 키우기 2탄 (2) | 2023.11.23 |