[JAVA] 정보은닉(Information Hiding) / quiz

개발log·2024년 1월 12일

JAVA

목록 보기
3/8
post-thumbnail

🏳️ 정보은닉

다른 객체에게 자신의 정보를 숨기고 자신의 동작, 기능, 연산만을 통해 접근을 허용하는 것으로, 클래스 외부에서 특정 정보에 접근을 막는다는 의미이다.

※ 객체지향프로그래밍에서는 객체를 설계 할 때 상태정보를 정보은닉 시킨다.

Setter와 getter 메서드

정보은닉 된 정보에 접근하는 방법이다.

setter메서드(set+멤버변수)

값을 저장

	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;
	}
    
public class PersoninforHide {

	public static void main(String[] args) {
		//한 사람의 회원 정보를 저장할 객체를 생성
		PersonVO vo = new PersonVO();
		
		vo.setName("홍길동");
		vo.setAge(50);
		vo.setPhone("010-1111-1111");

getter메서드(get+멤버변수)

값 얻어오기

public class PersonVO{
	//getter method
	public String getName() {
		return name;//this.name
	}
	public int getAge() {
		return age;//this.age
	}
	public String getPhone() {
		return phone;//this.phone
	}
}
System.out.println(vo.getName()+vo.getPhone()+vo.getAge());

생성자를 이용한 객체 초기화

private으로 정보를 감싸고 생성자를 통해 객체를 초기화 하게 되면 정보를 변경할 수 없다.(정보은닉)

public class PersonVO{
	private String name;
	private int age;
	private String phone;
	//생략된 생성자 메서드가 있다. => 기본 생성자
	public PersonVO() {
		//객체를 생성하는 코드는 내부에서 만들어진다.
		//객체의 초기화를 한다.
		this.name = "홍길동";
		this.age = 50;
		this.phone = "010-1111-1111";
	}

※ 객체 생성 시 원하는 값으로 초기화하려면 생성자 메서드를 오버로딩해서 초기화 가능

	public PersonVO(String name, int age, String phone) {
		this.name = name;
		this.age = age;
		this.phone = phone;
	}

🗺️ 잘 설계된 VO클래스

  1. 모든 생태정보를 정보 은닉(private)하기
  2. 디폴트(기본) 생성자 만들기
  3. 생성자 메서드를 오버로딩 하여 객체 초기화 하기
  4. 값을 저장할 setter 메서드 만들기
  5. 값을 얻기 위한 getter 메서드 만들기
  6. toString() 메서드 만들기(객체가 가지고 있는 전체 값 출력 용도)

🔍 quiz

  • 다른 객체에게 자신의 정보를 숨기고 클래스 외부에서 특정 정보에 접근을 막는다는 의미는 무엇이라고 하는가?
    → private 정보은닉
  • 정보은닉 된 정보에 접근하는 방법 중 값을 저장하는 메서드를 무엇이라고 하는가?
    → setter 메서드
  • 정보은닉 된 정보에 접근하는 방법 중 값을 얻어오는 메서드를 무엇이라고 하는가?
    → getter 메서드
  • 정보은닉 된 정보에 접근하는 방법 중 객체를 초기화를 통해 접근하는 메서드는 무엇인가?
    → 생성자 메서드
  • 객체가 가지고 있는 값 전체를 문자열 형태로 넘겨주기 위해서 만드는 메서드는 무엇인가?
    → toString 메서드
profile
나의 개발 저장소

0개의 댓글