본문 바로가기
Java/[패스트캠퍼스] Java & SpringBoot로 시작하는 웹 프로그래밍

Ch 02. 객체 지향 입문 - 11. 캡슐화 (encapsulation)

by hinote 2022. 12. 30.

마찬가지로 private나 protected 키워드를 이용해서 정보를 하이딩 하는 것임
캡슐화는 이보다 객체를 더 감싸서 꼭 필요한 메서드 한두개만 오픈하도록 만드는 용도로 사용할 수 있음

 

 

 

정보 은닉을 활용한 캡슐화

  • 꼭 필요한 정보와 기능만 외부에 오픈함

  • 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함
    -이런경우는 클라이언트가 제어할 수 있는 부분이 적기 때문에 캡슐화가 잘 되어있는 객체같은 경우는 클라이언트에서 사용할 수 있는 api가 한정적임
    그 객체가 하는 기능이 매번 일관성있게 제공될 수 있다

  • 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다.
    -디버깅이나 기능을 추가할 때 유연함

 

 

 

 

 

레포트 만들기 예제

 

MakeReport.java

public class MakeReport {

	StringBuffer buffer = new StringBuffer();
	
	private String line = "===========================================\n";
	private String title = "  이름\t   주소 \t\t  전화번호  \n";
	private void makeHeader()
	{
		buffer.append(line);
		buffer.append(title);
		buffer.append(line);
	}
	
	private void generateBody()
	{
		buffer.append("James \t");
		buffer.append("Seoul Korea \t");
		buffer.append("010-2222-3333\n");
		
		buffer.append("Tomas \t");
		buffer.append("NewYork US \t");
		buffer.append("010-7777-0987\n");
	}
	
	private void makeFooter()
	{
		
		buffer.append(line);
	}
	
	public String getReport()
	{
		makeHeader();
		generateBody();
		makeFooter();
		return buffer.toString();
	}
}

 

 

TestReprt.java

public class TestReprt {

	public static void main(String[] args) {

		MakeReport report = new MakeReport();
		String builder = report.getReport();
		
		System.out.println(builder);
	}

}

결과값 : 
===========================================
  이름    주소    전화번호  
===========================================
James  Seoul Korea  010-2222-3333
Tomas  NewYork US  010-7777-0987
===========================================

 

 

 

 

댓글