자료 저장소

# C++에서의 구조체 변수 선언

- 구조체의 등장 배경
연관있는 데이터를 하나로 묶으면, 프로그램의 구현 및 관리가 용이하다.

- C언어에서의 구조체 변수 선언
struct Car basicCar;
struct Car simpleCar;

- C++에서의 구조체 변수 선언
Car basicCar;
Car simpleCar;

-C++에서는 구조체 내에 함수 선언이 가능
C++은 구조체와 클래스의 키워드 차이일뿐 모든것이 같다. 또한 범위지정연산자를 통해 외부에 정의 선언이 가능.
struct Car 
{
char gamerID[ID_LEN]; // 소유자ID
int fuelGauge; // 연료량
int curSpeed; // 현재속도

void ShowCarState()
{
cout<<"소유자ID: "<<gamerID<<endl;
cout<<"연료량: "<<fuelGauge<<"%"<<endl;
cout<<"현재속도: "<<curSpeed<<"km/s"<<endl<<endl;
}
void Accel()
{
if(fuelGauge<=0)
return;
else
fuelGauge-=FUEL_STEP;

if(curSpeed+ACC_STEP>=MAX_SPD)
{
curSpeed=MAX_SPD;
return;
}

curSpeed+=ACC_STEP;
}
void Break()
{
if(curSpeed<BRK_STEP)
{
curSpeed=0;
return;
}

curSpeed-=BRK_STEP;
}
};
※ 구조체 안에 함수가 정의되면 내부적으로 함수를 인라인으로 처리한다. 구조체 밖으로 빼내면 의미가 사라진다.


# 클래스와 객체

- 접근제어 지시자
◎ public : 어디서든 접근 허용
◎ protected : 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용
◎ private : 클래스내(클래스 내에 정의된 함수)에서만 접근 허용

- 객체, 멤버변수, 멤버함수
◎ 클래스(class) : 멤버변수 + 멤버함수 (C++에서의 사용자 정의 자료형)
◎ 객체(object) : 클래스를 대상으로 생성된 변수(기능)을 가리켜 객체라 한다.
◎ 멤버변수 : 클래스 내에 선언된 변수를 가리켜 멤버변수라 한다.
◎ 멤버함수 : 클래스 내에 정의된 함수를 가리켜 멤버함수라 한다.

class Car 
{
private:
char gamerID[CAR_CONST::ID_LEN];
int fuelGauge;
int curSpeed;
public:
void InitMembers(char * ID, int fuel);
void ShowCarState();
void Accel();
void Break();
};
※ 클래스의 선언은 일반적으로 헤더파일에 삽입한다. 객체 생성문 및 멤버의 접근문장을 컴파일 하기 위해 필요
클래스의 이름을 떼서 헤더파일의 이름을 정의하기도 하며, 인라인 함수는 컴파일 과정에서 함수의 호출문을 대체
해야 하기 때문에 헤더파일에 함께 정의되어야 한다.



#  객체지향 프로그래밍

객체지향 프로그램미은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화 시키는 형태의
프로그래밍이다.

- 객체를 이루는 것은 데이터와 기능
객체는 하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)으로 구성된다.

- 클래스 기반의 두 가지 객체생성 방법
ClassName objName;
ClassNmae * ptrObj = new ClassName;

- 객체간의 대화 방법(Message Passing 방법)
객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 함수호출을 기반으로 한다. 그래서 객체지향에서는
이러한 형태의 함수호출을 가리켜 '메시지 전달(Message Passing)'이라 한다.

※ 클래스를 설계하는것은 매우 어려운 일이다. 하나의 독립된 클래스를 정의하는 것은 쉽지만 둘 이상의 클래스를
정의하여 서로간의 관계를 형성하는 것은 쉽지않을 뿐더러 매우 중요하다. 단순히 함수호출로 이해하면 아무것도
아니지만, 메시지 전달 관점에서 이는 매우 중요하다.

댓글 로드 중…

최근에 게시된 글