학습 목표
- 실세계의 객체와 C++ 객체에 대해 이해한다.
- C++ 클래스를 작성할 수 있다.
- 객체를 생성하고 활용할 수 있다.
- 생성자와 소멸자를 알고 작성할 수 있다.
- private, protected, public 접근 지정자를 이해한다.
- 인라인 함수의 목적을 이해하고 활용할 수 있다.
- C++ 구조체를 작성하고, 클래스와의 차이점을 안다.
- 헤더 파일과 cpp 파일을 분리하여 C++ 프로그램을 작성할 수 있다.
객체
- 세상의 모든 것이 객체 ex) TV, 의자, 책
- 객체는 캡슐화된다
- 캡슐화(encapsulation):
- 객체의 본질적인 특성
- 객체를 캡슐로 싸서 그 내부를 보호하고 볼 수 없게 함 ex) 캡슐에 든 약은 어떤 색인지 어떤 성분인지 보이지 않고, 외부로부터 안전, TV, 냉장고, 카메라, 인체
- 목적: 객체 내 데이터에 대한 보안, 보호, 외부 접근 제한
- 객체의 일부분 공개; 객체의 일부 요소는 공개된다
- 외부와의 인터페이스(정보 교환 및 통신)를 위해 객체 일부분 공개
- TV의 경우, On/Off 버튼, 밝기 조절, 채널 조절, 음량 조절 버튼 노출. => 리모컨 객체와 통신하기 위함
- 객체는 상태(state)와 행동(behavior)으로 구성
- TV 객체 사례
- 상태
- on/off 속성 - 현재 작동 중인지 표시
- 채널(channel) - 재 방송중인 채널
- 음량(volume) - 현재 출력되는 소리 크기
- 행동
- 켜기(power on)
- 끄기(power off)
- 채널 증가(increase channel)
- 채널 감소(decrease channel)
- 음량 증가(increase volume)
- 음량 줄이기(decrease volume)
- 상태
- TV 객체 사례
클래스
- 객체를 만들어내기 위해 정의된 설계도, 틀
- 클래스는 객체가 아님, 실체도 아님
- 멤버 변수와 멤버 함수 선언
객체
- 객체는 생성될 때 클래스의 모양을 그대로 가지고 탄생
- 멤버 변수와 멤버 함수로 구성
- 메모리에 생성, 실체(instance)라고도 부름
- 하나의 클래스 틀에서 찍어낸 여러 개의 객체 생성 가능
- 객체들은 상호 별도의 공간에서 생성
class TV {
bool on;
int channel;
int volume;
public:
void powerON();
void powerOff();
void increaseChannel();
void decreaseChannel();
void increaseVolume();
void decreaseVolume();
};
클래스 작성
- 멤버 변수와 멤버 함수로 구성
- 클래스 선언부와 클래스 구현(정의)부로 구성
클래스 선언부(class declaration)
- class 키워드를 이용하여 클래스 선언
- 멤버 변수와 멤버 함수 선언
- 멤버 변수는 클래스 선언 내에서 초기화할 수 없음
- 멤버 함수는 원형(prototype) 형태로 선언
- 멤버에 대한 접근 권한 지정
- private, public, protected 중의 하나
- 디폴트는 private
- public: 다른 모든 클래스나 객체에서 멤버의 접근이 가능함을 표시
클래스 구현(class implementation)
- 클래스에 정의된 모든 멤버 함수 구현
#include <iostream>
using namespace std;
class Circle { //Circle 선언부
public:
int radius;
double getArea();
};
double Circle::getArea() { //Circle 구현부
return 3.14*radius*radius;
}
int main() {
Circle donut; //객체 donut 생성
donut.radius = 1; //donut의 멤버 변수 접근 => donut 객체의 반지름을 1로 설정
double area = donut.getArea(); //donut의 멤버 함수 호출 => donut 객체의 면적 알아내기
cout << "donut의 면적은 " << area << endl;
Circle pizza;
pizza radius = 30; //pizza 객체의 반지름을 30으로 설정
area = pizza.getArea(); //pizza 객체의 면적 알아내기
cout << "pizza 면적은 " << area << endl;
}
범위 지정 연산자(::):
'C++' 카테고리의 다른 글
C++: 데이터 타입 (0) | 2023.09.06 |
---|---|
chap.00: C++의 기초 (0) | 2023.09.05 |