컴퓨터공학 💻 도서관📚
Part2. 2-11 캡슐화 (encapsulation) 본문
캡슐화 : 캡슐화는 데이터(멤버변수)와 알고리즘(메서드)을 하나로 묶는 것이다
객체의 속성(data, fields)과 행위(메서드) 를 하나로 묶고, 실제 구현 내용 일부를 내부에 감추어 은닉한다
캡슐화는 정보를 감싸서 외부에 꼭 필요한 정보만 오픈한다라는 개념이다
캡슐화는 여러가지 메서드 중 외부에서 사용할 꼭 필요한 메서드 한두 개만 오픈하고, 나머지는 자동으로 모든 것이 생산될 수 있도록 하는 용도로 사용할 수 있다
여러개의 메서드에 순서대로 지켜져야 되는 순서가 있고, 세세한 걸 클라이언트 코드 쪽에서 알 필요가 없다
대부분의 멤버 변수와 메서드는 감추고 외부에 통합된 인터페이스를 제공해서 클라이언트가 사용하기 쉽게
제공된 것만 사용하면 자동으로 다 만들어지는 일관된 기능들을 제공할 수 있게 한다
이런 경우는 클라이언트가 제어할 수 있는 부분이 굉장히 적기 때문에 캡슐화가 잘된 객체는
클라이언트에서 쓸 수 있는 API 가 한정적이다
또 하나의 장점은 클라이언트 코드하고 상관없이 서비스를 제공하는 객체 쪽에서
오류에 대한 탐지를 하거나 객체에 대한 업그레이드를 하기 때문에 디버깅이나 기능을 추가하는데 유연하다고 볼 수 있다
멤버변수나 메서드를 어떻게 공개하는 것이 클라이언트 쪽이 더 편하게 느낄지와 객체 또한 오류 없이 잘
관리가 될 수 있을지를 고민해야 한다
문자열을 연결할 때 + 기호를 사용해서 연결할 수 있지만 이는 메모리 오버헤드가 크기 때문에
string buffer / string builder 클래스를 사용해서 문자열을 연결한다
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() // 캡슐화의 예시 (위 함수들은 다 private)
{ // 여러개의 메서드에 순서대로 지켜져야 되는 순서가 있고
// 세세한 걸 클라이언트 코드 쪽에서 알 필요가 없다
makeHeader(); // 헤더
generateBody(); // 바디
makeFooter(); // 푸터
return buffer.toString();
}
}
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 2-10 접근 제어 지시자 (0) | 2024.12.25 |
---|---|
Part2. 2-9 참조 자료형 변수 (1) | 2024.12.17 |
Part2. 2-8 객체 구현 복습 (0) | 2024.12.16 |
Part2. 2-7 생성자 오버로딩 (with. 파인만 기법 + 문제출제) (0) | 2024.03.04 |
Part2. 2-6 생성자 (with. 파인만 기법 + 문제출제) (0) | 2024.02.28 |