1.클래스 정리
C++ 기초 플러스 4판
Stephen Prata 저
● OPP가 갖추고 있는 대표적인 기능
1. 추상화 (abstraction)
2. 캡슐화 (encapsulation)
3. 데이터 은닉 (data hiding)
4. 다형 (inheritance)
5. 상속 (inheritance)
6. 코드 재활용 (reusable code)
● 추상화
컴퓨터 분야에서 추상화란 정보를 사용자 인터페이스로 표현하는것이다. 즉 어떤 문제에 필수적인 조작적 기능들을 추상화하고 그것으로 해결책을 표현하는 것이다.
● 데이터형이란 무엇인가?
먼저 우리는 메모리에 저장되는 형태만으로 데이터형을 생각하기 쉽다. 예를 들어 char 1바이트 메모리를 나타내고 double을 8바이트 메모리를 나타낸다 그러나 좀더 깊이 생각해보면 데이터형이란 그
것을 대상으로 수행할 수 있는 연산에 의해 정의된다
- 기본형을 서술
1. 데이터 객체에 필요한 메모리의 크기를 결정한다.
2. 데이터 객체를 사용하여 수행할 수 있는 연산이나 메서드를 결정한다.
● 클래스
클래스(class)는 추상화를 사용자 정의 데이터형으로 변환해 주는 C++의 매개물이다.
클래스는 데이터 표현과 데이터를 조작하는 메서드들을 하나의 패키지 안에 결합 한다.
- 클래스 선언(class declaration)
데이터 맴버와 public 인터페이스, 맴버함수를 이용하여 데이터 표현을 서술한다.
- 클래스 메서드 정의 (class method definitions)
클래스 맴버 함수가 어떻게 구현되는지를 서술한다.
※ 클래스 선언은 클래스의 개요를 제공하는것이고, 메서드 정의는 세부 사항을 제공하는 것
- C++의 키워드인 class
이 코드가 클래스 설계를 위한 정의라는 사실 나타낸다.
- 클래스 맴버 함수를 클래스 매서드(class method)라고 하기도 한다
- 맴버함수는 그자리에서 정의될 수도 있고, 클래스에 속해있는 다른 맴버 함수들 처럼 원형에 의해
표현될 수도 있다.
- 원형에 의해 표현되는 맴버 함수들의 완전한 정의는 나중에 나온다.
- 함수 인터페이스를 서술하는 데에는 원형만으로도 충분하다.
- 데이터와 메서드를 하나로 결합하는 것이 클래스의 가장 두드러진 특징이다.
● 데이터 은닉 : 데이터를 클래스의 private부분에 넣는 것
private 같이 데이터에 직접 접근하지 못하게 차단하는 것을 데이터 은닉이라 한다.
- 장점
사업설명서와 같은 공시서류에서 데이터를 은닉하는것은 나쁘지만
- 장점
프로그래밍에서는 데이터의 무결성을 지켜주므로 좋은 것이다.
● 추상화 : public인터페이스는 설계의 추상화를 나타낸다.
● 캡슐화 : 세부적인 구현들을 따로 결합하여 추상화와 분리하는 것을 캡슐화라고 한다.
데이터 은닉도 캡슐화의 한 예이다.
● public 또는 private?
- 일반적으로 데이터 항목들은 private부분에 선언된다.
- 클래스 인터페이스를 구성하는 맴버 함수들은 public부분에 선언 된다.
그렇지 않으면, 프로그램에서 그 함수들을 호출할 수 없다.
- 클래스 선언에서 private 키워드는 없어도 된다. 그 이유는 클래스 객체에 대한 디폴트 접근 제
어 로 지정되어 있기 때문이다.
● 클래스 맴버함수
- 맴버함수는 일반함수와 거의 같으며 함수 머리(function heading)와 함수몸체(function body)
를 가지고 있으며 리턴형과 전달자도 가질 수 있다.
- 맴버 함수를 정의할 때, 그 맴버 함수가 어느 클래스에 속하는지 나타내기위해 사용 범위 결정
연산자(::)를 사용해야 한다.
- 클래스 매서드는 그 클래스의 private 부분에만 접근할 수 있다.