언어 자료구조 알고리즘/Escort C++

[C++] 2. 1 캡슐화란?

언제나휴일 2016. 4. 15. 12:46
반응형

2. 1 캡슐화란?

 

 이번 장부터 C++의 클래스에 관한 얘기가 시작됩니다. 클래스에 대해 문법을 효과적으로 이해하고 사용하기 위해서는 OOP(Object Oriented Programming, 개체 지향 프로그래밍)의 특징을 잘 인지하여야 합니다. 개체 지향 프로그래밍(많은 곳에서 개체를 객체라 부르고 있습니다. 여러분이 MSDN을 통해 학습을 하다 보면 객체로 번역하지 않고 개체로 번역된 것을 보게 됩니다. 이 책에서는 MSDN에 번역된 것처럼 개체라고 부르겠습니다.)

 

 OOP의 특징을 얘기할 때 많은 이들이 OOP의 세 가지 기둥을 얘기합니다. OOP의 세 가지 기둥에는 캡슐화와 상속, 다형성이 있습니다. 이 중에 캡슐화는 여러 개의 멤버를 하나의 형식으로 묶어서 정의하는 것을 말합니다. 예를 들어, 학생 관리 프로그램에서 학생 번호, 학생 이름, 학생이 공부하다, 학생이 잠자다 등을 학생이라는 형식으로 정의하는 것을 들 수 있습니다.

 

2. 2 캡슐화의 대상

 

  C언어에서는 구조체와 공용체를 이용하여 사용자 형식을 정의합니다. 그리고 C언의 구조체와 공용체에서는 멤버 변수만 캡슐화가 가능하였습니다. C++언어에서는 캡슐화할 수 있는 대상이 멤버 필드(멤버 변수라고도 부름)외에도 멤버 메서드(멤버 함수라고도 부름)를 캡슐화 할 수 있습니다. 또한 C언어에서는 모든 멤버들이 어디에서나 접근이 가능하였지만 C++언어에서는 멤버들에 대한 접근 지정자를 통해 접근할 수 있는 가시성을 다르게 지정할 수 있습니다. 접근 지정자를 통해 가시성을 차별화함으로써 내부에 중요한 멤버의 접근을 차단하여 정보 은닉을 통해 신뢰성을 높일 수 있습니다.

 

 접근 지정자는 해당 형식에서만 가시성이 있는 private, 모든 곳에서 가시성이 있는 public, 해당 형식과 파생된 형식에서 가시성이 있는 protected가 있습니다. 참고로 구조체는 접근 수준을 명시하지 않으면 모든 곳에서 접근 가능한 public 수준이 되고 클래스는 디폴트로 해당 형식에서만 접근 가능한 private 수준이 됩니다. protected에 대한 문법은 기반 클래스에서 파생 클래스로 상속을 다루는 일반화 관계에서 다루도록 하겠습니다.

 

 C++에서 캡슐화 할 수 있는 멤버의 종류에는 멤버 필드와 멤버 메서드가 있습니다. 그리고 생성된 개체를 통해서만 접근이 가능한 개체의 멤버(인스턴스의 멤버 혹은 비정적 멤버라고도 부름)와 클래스 이름을 통해 접근이 가능한 클래스의 멤버(정적 멤버라고도 부름)가 있습니다. 또한 변경 가능 여부에 따라 상수화 멤버, 비상수화 멤버로 나누기도 합니다


2 화 Part1

2 화 Part2

(모든 동영상 강의는 무료입니다.)

반응형