개발공부/객체 지향 입문

[Java] 11. 캡슐화

환타몬 2022. 1. 30. 01:25

정보 은닉을 활용한 캡슐화

  • 꼭 필요한 정보와 기능만 외부에 오픈함
  • 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함
  • 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다.
public class MakeReport {
	
	StringBuffer buffer = new StringBuffer();
	
	private String line = "========================================\n";
	private String title = "  이름 \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-0000-0000\n");
		
		buffer.append("kim \t");
		buffer.append("Daegu Korea \t");
		buffer.append("010-1111-2222\n");
	}
	
	private void makeFooter()
	{
		buffer.append(line);
	}
	
	public String getReport()
	{
		makeHeader();
		generateBody();
		makeFooter();
		return buffer.toString();
	}
}

외부에서 굳이 알 필요 없는 정보들을 private한 메소드로 생성하고, public한 메소드를 통해 정보를 출력한다.

public class MakeReportTest {

	public static void main(String[] args) {
		
		MakeReport builder = new MakeReport();
		String report = builder.getReport();

		System.out.println(report);
	}

}