티스토리 뷰

캡슐화는 객체지향 프로그래밍의 가장 기본적인 기술중의 하나이다.

캡슐화의 개념과 특징에 대하여 먼저 알아본 후 캡슐화와 함께 따라다니는 정보은닉에 대하여 알아보자.

캡슐화

이것은 데이터와 그 것을 처리하는 메소드를 하나로 묶는 것이다.

즉, 객체지향 시스템에서 자료부분과 그것을 처리하는 연산부분을 하나의 집합으로 묶어 두는 것이다.

프로그램 구현에 필요한 자료와 함수를 함께 묶어서 외부와 단절을 시키고 그 묶음을 사용하는 데 필요한 인터페이스만 외부에 공개하는 것이다.

 

이러한 캡슐화를 할 경우 장점은 아래와 같다.
상호간에 연관있는 데이터와 연산자(함수)를 하나로 묶어서 컴포넌트로 재사용이 용이하다.
인터페이스가 단순해 진다.
관련있는 컴포넌트간에 응집도가 높아진다.
변경이 발생하더라도 오류의 파급정도가 낮아진다.

정보 은닉

캡슐화를 하게되면 클래스 내부의 속성이나 메서드를 외부에 노출하지 않게 된다.
따라서 자연스럽게 정보가 은폐되어진다.
객체의 사용자들은 공개된 인터페이스 (public)를 통해서만 객체에 접근이 가능하게되기 때문이다.
숨겨진 데이터 등에 대한 직접 접근은 허용되지 않는다.
캡슐화를 이용한 정보 은닉 사례 코드를 보자.

 

class Avg {
	
	public String name;
    private int avg;

    public String average(int kor, int eng)
    {
    	avg = (kor+eng)/2;
        return name+avg;
    }
 }
 
 public class AvgTest {
 	public static void main(String[ ] args) {
    	Avg student1 = new Avg();
        student1.name = "홍길동";
        student1.avg = 70;
    }
 }

 

캡슐화와 정보은닉
사례 코드

3행은 접근제한자를 public을 사용했으므로 name은 공개 가능한 속성이다.

따라서 16행에서 name에 접근하여도 오류가 발생하지 않는다.

 

그러나 4행은 private이 접근 제한자이므로 17행에서 비공개 속성에 접근했으므로

오류가 발생하게 된다.

 

 

프로그래밍은 어떻게 발전해 왔는가?

프로그래밍을 한다면 요즘은 대부분 객체지향 프로그래밍을 하고 있다. 그렇다면 그 이전에는 어떠한 패러다임을 가지고 프로그래밍을 하였을까? 목차 절차적 프로그래밍 (Procedural Programming) 구

whiteseven.tistory.com