
객체지향프로그래밍에서 클래스는 객체를 모델링(설계)하는 도구이다.
모델링은 설계를 하는 것으로 어떻게 설계해야 VO 클래스를 잘 설계 할 수 있는지 학습하는 것을 목표로 한다.
정보 은닉: 다른 객체에게 자신의 정보를 숨기고 자신의 동작, 기능, 연산만을 통해 접근을 허용하는 것으로, 클래스 외부에서 특정 정보에 접근을 막는 것을 의미
public class PersonVO {
private String name;
private int age;
private String phone;
//setter method
public void setName(String name) {
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
public void setPhone(String phone) {
this.phone=phone;
}
//getter method
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public String getPhone() {
return this.phone;
}
public class PersonVO {
private String name;
private int age;
private String phone;
//생략된 생성자 메서드가 있음 => 기본 생성자 (default Constructor)
public PersonVO(){
//객체를 생성하는 코드는 내부에서 만들어짐
//객체의 초기화
//this 생략 가능함
this.name = "홍길동";
this.age = 50;
this.phone = "010-3435-4543";
//setter 메서드 생략
//getter 메서드 생략
}
public class ConstructorInit {
public static void main(String[] args) {
//Q. 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장학고 출력하세요.
PersonVO vo = new PersonVO();
System.out.println(vo.getName()+"\t"+ vo.getAge() +"\t"+ vo.getPhone());
PersonVO vo1 = new PersonVO();
System.out.println(vo1.getName()+"\t"+ vo1.getAge() +"\t"+ vo1.getPhone());
//개발자가 원하는 것으로 초기화를 하는 방법은?
}
}
>> 홍길동 50 010-3435-4543
홍길동 50 010-3435-4543
public class PersonVO {
private String name;
private int age;
private String phone;
/*
1.
public PersonVO(){
//초기화 없음
}
>> null 0 null 출력됨
2.
public PersonVO(){
this.name = "홍길동";
this.age = 50;
this.phone = "010-3435-4543";
}
>> 홍길동 50 010-3435-4543 출력됨
=> 오버로딩하여 기본 생성자는 생략. 만약 기본생성자가 필요하다면 명시해주어야 함.(기본생성자는 컴파일러가 만들어주지 않음)
*/
//생성자 메서드의 오버로딩
public PersonVO(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
//setter 메서드 생략
//getter 메서드 생략
}
public class ConstructorOveerloading {
public static void main(String[] args) {
//Q. 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장학고 출력하세요.
//PersonVO vo = new PersonVO(); // 2번 즉, 기본생성자 생략시 오류 발생. 1번 경우에는 괄호 안에 값을 넣어주면 출력됨.
PersonVO vo1 = new PersonVO("나길동",67,"010-8956-5234");
PersonVO vo2 = new PersonVO("조길동",80,"010-3279-9543");
System.out.println(vo.getName()+"\t"+ vo.getAge() +"\t"+ vo.getPhone());
System.out.println(vo1.getName()+"\t"+ vo1.getAge() +"\t"+ vo1.getPhone());
System.out.println(vo2.getName()+"\t"+ vo2.getAge() +"\t"+ vo2.getPhone());
}
}
>> 나길동 67 010-8956-5234
조길동 80 010-3279-9543
public class PersonVO {
private String name;
private int age;
private String phone;
//생성자 메서드의 오버로딩
public PersonVO(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
//setter 메서드 생략
//getter 메서드 생략
//toString()메서드에 모든 값을 문자열로 만들기
public String toString() {
return name + "\t" + age +"\t" + phone;
}
}
public class ToStringPrint {
public static void main(String[] args) {
//Q. 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장학고 toString() 메서드로 출력하세요.
PersonVO vo1 = new PersonVO("나길동",67,"010-8956-5234");
PersonVO vo2 = new PersonVO("조길동",80,"010-3279-9543");
/*System.out.println(vo1.getName()+"\t"+ vo1.getAge() +"\t"+ vo1.getPhone());
System.out.println(vo2.getName()+"\t"+ vo2.getAge() +"\t"+ vo2.getPhone());*/
//위 코드를 아래와 같이 한번에 출력 할 수 있음
System.out.println(vo1.toString());
System.out.println(vo2.toString());
System.out.println(vo1); //toString()을 생략해도 됨. java에서 컴파일러는 vo1만 입력되어 있어도, 객체 vo1이 가지고 있는 전체 데이터를 출력함.
}
}
>> 나길동 67 010-8956-5234
조길동 80 010-3279-9543
나길동 67 010-8956-5234
'MovieVO2.java'
package fc.java.part3;
public class MovieVO2 {
//모든 데이터 정보은닉
private String title;
private int date;
private int age;
//디폴트 생성자 만들기
public MovieVO2(){
}
//생성자 메서드를 오버로딩하여 객체 초기화
public MovieVO2(String title, int date, int age){
this.title = title;
this.date = date;
this.age = age;
}
//setter method : 값 저장 용도
public void setTitle(String title){ //return값이 없으므로 void
this.title=title;
}
public void setAge(int age) {
this.age = age;
}
public void setDate(int date) {
this.date = date;
}
//getter method : 값 얻을 용도
public String getTitle(){ //return값이 있으므로 return값에 해당하는 자료형 입력
return this.title;
}
public int getAge() {
return this.age;
}
public int getDate() {
return this.date;
}
//toString() method : 객체가 가지고 있는 모든 값 출력 용도
public String toString() {
return title + "\t" + age + "\t" + date;
}
}
'MovieVOModeling.java'
package fc.java.part3;
public class MovieVOModeling {
public static void main(String[] args) {
MovieVO2 MVO = new MovieVO2("범죄도시",20240530,15);
MovieVO2 MVO1 = new MovieVO2("기생충",20240223,16);
MovieVO2 MVO2 = new MovieVO2("아바타",20130912,13);
System.out.println(MVO.toString());
System.out.println(MVO1);
System.out.println(MVO2);
}
}
>> 범죄도시 15 20240530
기생충 16 20240223
아바타 13 20130912