본문 바로가기

Java/Chapter 09. 정보 은닉 그리고 캡슐화

(4)
[Java] 09.03 - 캡슐화(Encapsulation) 들어가며 캡슐화는 정보 은닉과 더불어 객체지향 기반의 클래스 설꼐에 있어 가장 기본이면서 중요한 원칙 중 하나이다. 캡슐화는 문법적인 내용은 아니다. 클래스 안에 '무엇을 넣을까' 에 대한 이론을 제시하는 내용이다. 콘택 600과 캡슐화 코감기 약 중에서 대충 매우 유명한 약이 있었다. 아주 오래 전에 나온 약인데, 지금도 이름이 '콘택600'에서 '콘택골드'로 변경되어 판매되고 있다. 그리고 무엇보다 그 생김새가 다른 약들과는 확연히 구분된다. 모든 약들이 그러하지만 이 약은 갭슐화가 잘 이뤄진 예로 볼 수 있다. 이 약이 갖는 기능은 다음과 같다. 흐르는 '콧물'을 멎게 하는 기능 멈추지 않는 '재채기'를 가라앉혀 주는 기능 답답한 '코막힘' 상태를 완화시켜 주는 기능 그런데 만약에 이 약이 '콧물용..
[Java] 09.02 - 접근 수준 지시자(Access-level Modifiers) 들어가며 앞서 인스턴스 변수를 대상으로 private 선언을 하였는데 이러한 유형의 키워드를 가리켜 '접근 수준 지시자'라고 한다. (Access-level Modifiers) 이름 그래도 접근의 허용 수준을 결정할 때 선언하는 키워드이다. 4가지 종류의 '접근 수준 지시자' '접근 수준 지시자'의 종류는 다음과 같이 4가지이다. 참고로 '참근 수준 지시자'는 다양한 한글 표현이 존재하므로 영어 표현 'Access-level Modifiers'를 기억해 두는 것이 좋다. public, protected private, default 이 중에서 default는 키워드가 아닌, '아무런 선언도 하지 않은 상황'을 의미한다. 비록 이는 키워드가 아닌 일종의 '상황'이지만 이 역시 '접근 수준 지시자'의 한 종..
[Java] 09.01 - 정보 은닉(Information Hiding) 들어가며 자바에서 말하는 '정보'는 클래스의 '인스턴스 변수'를 의미한다. 따라서 정보를 은닉한다는 것은 인스턴스 변수를 숨긴다는 것이다. 정보를 은닉해야 하는 이유 다음 예제를 시작으로 이야기를 전개하고자 한다. 다음 예제는 컴파일도 실행도 잘 된다. 다만 내용상 그리고 의미상 문제가 되는 부분이 있다. class Circle{ double rad = 0; // 원의 반지름 final double PI = 3.14; public Circle(double r){ setRad(r); // 아래에 정의된 setRad 메소드 호출을 통한 초기화 } public void setRad(double r){ if(r < 0){ // 반지름은 0보다 작을 수 없으므로 rad = 0; return; // 이 위치에서 메..
[Java] 08.01 - 패키지와 클래스 패스 들어가며 '패스(Path)'라는 단어는 경로를 의미한다. 그리고 자바에서 '클래스 패스'가 의미하는 바는 다음과 같다. 자바 가상 머신이 클래스 파일을 찾는 경로 즉 자바 가상 머신은 프로그램의 실행 과정에서 클래스 파일을 찾을 때, 이 '클래스 패스'라는 것을 기준으로 찾는다. 물론 클래스 패스를 지정하는 것은 프로그래머의 몫이다. 현재 디렉토리(Current Directory)를 기준으로 한 실행 다음 예제를 컴파일하고 실행하자. 단 실행 환경을 일치시키기 위해서 소스파일을 다음 위치에 가져다 놓고 컴파일 및 실행을 하자. C:\PackageStudy class AAA{ public void showName(){ System.out.println("My name is AAA"); } } class Z..