✏️ 강의 : [패스트캠퍼스] K-Digital Credit, Java&Spring 웹개발 종합반
ㅤ

- 예제
- 한 사람의 [회원] 정보를 저장할 [객체를 생성]하시오.
package fc.java.model; public class PersonVO { public String name; public int age; public String phone; }package fc.java.part3; public class PersonInfoHide { public static void main(String[] args) { // Q. 한 사람의 [회원] 정보를 저장할 [객체를 생성]하시오. Person vo = new Person(); vo.name = "홍길동"; vo.age = 5000; //정보 은닉 되지 않음 vo.phone = "010-1234-5678"; System.out.println(vo.name + "\t" + vo.age + "\t" + vo.phone); } }
- public으로 VO 생성 시 잘못된 값이 들어갈 수 있고, private로 정보 은닉 시 정보 접근이 막힘.
ㅤ
ㅤ
💡 정보은닉된 정보에 접근하는 방법
1. setter, getter 메서드를 통해 접근 가능
- setter 메서드로 값을 저장하고 set + 멤버변수의 첫 영문을 대문자로 만들기
- getter 메서드로 값을 얻어오고 get + 멤버변수의 첫 영문을 대문자로 만들기

- 예제
- setter, getter 메서드를 통해 PersonVO객체에 이름, 나이, 전화번호를 저장하고 출력하시오.(SetterGetterTest.java)
package fc.java.model; 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 name; //this.name } public int getAge(){ return age; } public String getPhone(){ return phone; } } package fc.java.part3; import fc.java.model.PersonVO; public class SetterGetterTest { public static void main(String[] args) { //Q. setter, getter 메서드를 통해 PersonVO객체에 이름, 나이, 전화번호를 저장하고 출력하시오. PersonVO vo = new PersonVO(); vo.setName("홍길동"); vo.setAge(20); vo.setPhone("010-1111-1234"); System.out.println(vo.getName() + "\t" + vo.getAge() + "\t" + vo.getPhone()); } }
ㅤ
ㅤ
💡 정보은닉된 정보에 접근하는 방법
2. 생성자 메서드를 통해서 접근 가능(객체 초기화)
- 생성자 메서드로 값을 저장하고(초기화)
- getter 메서드로 값을 얻어오고 get + 멤버변수의 첫 영문을 대문자로 만들기

- 예제
- 생성자 메서드를 통해 PersonVO객체에 이름, 나이, 전화번호를 저장하고 출력하시오.(ConstructorInit.java)
package fc.java.model; public class PersonVO { private String name; private int age; private String phone; //생략된 생성자 메서드가 있다 => 기본생성자(default Constructor) public PersonVO(){ //객체를 생성하는 코드는 내부에서 만들어진다. //객체의 초기화를 한다. this.name = "홍길동"; this.age = 20; this.phone = "010-1234-1234"; } //getter method public String getName(){ return name; //this.name } public int getAge(){ return age; } public String getPhone(){ return phone; } }package fc.java.part3; import fc.java.model.PersonVO; 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()); //개발자가 원하는 값으로 초기화를 하는 방법? } }
- 기본생성자 초기화 값 하나만 사용할 수 있음
- 개발자가 원하는 값으로 초기화를 하는 방법은?

- 예제
- 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장하고 출력하시오.(ConstructorOverloading)
public class PersonVO { private String name; private int age; private String phone; //생략된 생성자 메서드가 있다 => 기본생성자(default Constructor) public PersonVO(){ //객체를 생성하는 코드는 내부에서 만들어진다. //객체의 초기화를 한다. this.name = "홍길동"; this.age = 20; this.phone = "010-1234-1234"; } //생성자 오버로딩 public PersonVO(String name, int age, String phone){ this.name = name; this.age = age; this.phone = phone; } //getter method public String getName(){ return name; //this.name } public int getAge(){ return age; } public String getPhone(){ return phone; } }public class ConstructorOverloading { public static void main(String[] args) { //Q. 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장하고 출력하시오. PersonVO vo = new PersonVO(); PersonVO vo1 = new PersonVO("박길동", 20, "010-1234-1234"); PersonVO vo2 = new PersonVO("김길동", 30, "010-1234-5678"); 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()); } }
- 기본생성자 + 생성자 오버로딩을 통해 PersonVO에 원하는 데이터를 넣고 출력할 수 있음.
ㅤ
ㅤ
💡 toString() : 객체가 가진 모든 상태정보값을 문자열(String) 형태로 리턴해주는 메서드

- 예제
- 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장하고 toString() 메서드로 출력하시오.(ToStringPrint.java)
public class PersonVO { private String name; private int age; private String phone; //생략된 생성자 메서드가 있다 => 기본생성자(default Constructor) public PersonVO(){ //객체를 생성하는 코드는 내부에서 만들어진다. //객체의 초기화를 한다. this.name = "홍길동"; this.age = 20; this.phone = "010-1234-1234"; } //getter method public String getName(){ return name; //this.name } public int getAge(){ return age; } public String getPhone(){ return phone; } public String toString(){ return name + "\t" + age + "\t" + phone; } }public class ToStringPrint { public static void main(String[] args) { // Q. 생성자 메서드를 통해 PersonVO객체에 원하는 이름, 나이, 전화번호를 저장하고 toString() 메서드로 출력하시오. PersonVO vo = new PersonVO("홍길동", 35, "010-1234-5678"); //getter 사용 System.out.println(vo.getName() + "\t" + vo.getAge() + "\t" + vo.getPhone()); //toString 사용 System.out.println(vo.toString()); System.out.println(vo); //vo.toSting() toString 생략 가능 } }
- toString()을 사용했을 때 getter에서 하나씩 값을 가져오는 것보다 편리함.
ㅤ
ㅤ

- 예제
- 위에서 설명한 형태로 잘 설계된 영화(MovieVO)객체를 설계하고, 데이터를 저장한 후 출력하시오.(BestVOModeling.java)
- Generate 사용하여 생성자, getter, setter, toString 쉽게 만들 수 있음.
public class MovieVO { private String title; private int day; private String major; private String part; private float time; private int level; //디폴트 생성자 public MovieVO(){ } public MovieVO(String title, int day, String major, String part, float time, int level) { this.title = title; this.day = day; this.major = major; this.part = part; this.time = time; this.level = level; } public String getTitle() { return title; } public int getDay() { return day; } public String getMajor() { return major; } public String getPart() { return part; } public float getTime() { return time; } public int getLevel() { return level; } public void setTitle(String title) { this.title = title; } public void setDay(int day) { this.day = day; } public void setMajor(String major) { this.major = major; } public void setPart(String part) { this.part = part; } public void setTime(float time) { this.time = time; } public void setLevel(int level) { this.level = level; } @Override public String toString() { return "MovieVO{" + "title='" + title + '\'' + ", day=" + day + ", major='" + major + '\'' + ", part='" + part + '\'' + ", time=" + time + ", level=" + level + '}'; } }public class BestVOModeling { public static void main(String[] args) { //Q. 잘 설계된 영화(MovieVO) 객체를 설계하고, 데이터를 저장한 후 출력하시오. MovieVO vo = new MovieVO("아바타", 20211201, "제이크 설리", "액션", 192.0f, 12); System.out.println(vo.toString()); System.out.println(vo.getTitle()); //개별로 뽑고 싶으면 getter 사용 } }
ㅤ
ㅤ
- 다른 객체에게 자신의 정보를 숨기고 클래스 외부에서 특정 정보에 접근을 막는다는 의미를 무엇이라 하는가?
➡️ 정보은닉(information hiding)- 정보은닉 된 정보에 접근하는 방법 중 값을 저장하는 메서드를 무엇이라 하는가?
➡️ setter 메서드- 정보은닉 된 정보에 접근하는 방법 중 값을 얻어오는 메서드를 무엇이라 하는가?
➡️ getter 메서드- 정보은닉 된 정보에 접근하는 방법 중 객체를 초기화를 통해 접근하는 메서드는 무엇인가?
➡️ 생성자 메서드- 객체가 가지고 있는 값 전체를 문자열 형태로 넘겨주기 위해서 만드는 메서드는 무엇인가?
➡️ toString()