"Boldness has genius, power, and magic in it." - Johann Wolfgang von Goethe

JAVA_SPRING

[JAVA] 캡슐화(Encapsulation)에 대해서

Toproot 2022. 9. 24. 00:06
728x90
728x90

TitleImage

학습내용

  • 캡슐화의 개념과 사용하는 이유 알기

💊 의도적으로 정보를 제어하는 캡슐화

접근 제어 지시자를 활용한 '정보 은닉'이라는 개념이은 JAVA의 문법 하나의 개념이었습니다.
캡슐화는 개발자가 의도적으로 접근제어 지시자를 활용하여 변수 속성이나, 메서드의 공개여부를 컨트롤 하는 것을 의미합니다.

🎈 캡슐화를 해야 하는 이유

  • 클래스에서 필요한 정보만 공개하여 Client의 불필요한 접근을 제한.
  • 클래스의 기능을 구현하는 데 필요한 변수나 메서드는 비공개하고, 통합된 인터페이스로 외부에 제공.
  • 에러나 오류가 발생했을 때 제공한 인터페이스만 확인하면 되어 디버깅 편리.

레포트 만들기 예제 코드

MakeReport

StringBuffer를 사용해서 Report를 지정한 양식대로 그려주는 Class
사용자에게는 getReport()라는 Public 메서드만을 제공

package unit11_캡슐화;

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("New York \t");
        buffer.append("010-2324-3553\n");
    }

    private void makeFooter() {
        buffer.append(line);
    }

    public String getReport() {
        makeHeader();
        generateBody();
        makeFooter();
        return buffer.toString();
    }
}

MakeReportTest

해당 객체를 새롭게 생성해주고, 사용자는 getReport()만 접근하여 사용 가능.

package unit11_캡슐화;

public class MakeReportTest {
    public static void main(String[] args) {

        MakeReport builder = new MakeReport();
        String report = builder.getReport();

        System.out.println(report);
    }
}
728x90
728x90