# C++에서의 구조체 변수 선언
- 구조체의 등장 배경
연관있는 데이터를 하나로 묶으면, 프로그램의 구현 및 관리가 용이하다.
- C언어에서의 구조체 변수 선언
struct Car basicCar;
struct Car simpleCar;
- C++에서의 구조체 변수 선언
Car basicCar;
Car simpleCar;
-C++에서는 구조체 내에 함수 선언이 가능
C++은 구조체와 클래스의 키워드 차이일뿐 모든것이 같다. 또한 범위지정연산자를 통해 외부에 정의 선언이 가능.
# 클래스와 객체
- 접근제어 지시자
◎ public : 어디서든 접근 허용
◎ protected : 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용
◎ private : 클래스내(클래스 내에 정의된 함수)에서만 접근 허용
- 객체, 멤버변수, 멤버함수
◎ 클래스(class) : 멤버변수 + 멤버함수 (C++에서의 사용자 정의 자료형)
◎ 객체(object) : 클래스를 대상으로 생성된 변수(기능)을 가리켜 객체라 한다.
◎ 멤버변수 : 클래스 내에 선언된 변수를 가리켜 멤버변수라 한다.
◎ 멤버함수 : 클래스 내에 정의된 함수를 가리켜 멤버함수라 한다.
클래스의 이름을 떼서 헤더파일의 이름을 정의하기도 하며, 인라인 함수는 컴파일 과정에서 함수의 호출문을 대체
해야 하기 때문에 헤더파일에 함께 정의되어야 한다.
# 객체지향 프로그래밍
객체지향 프로그램미은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화 시키는 형태의
프로그래밍이다.
- 객체를 이루는 것은 데이터와 기능
객체는 하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)으로 구성된다.
- 클래스 기반의 두 가지 객체생성 방법
ClassName objName;
ClassNmae * ptrObj = new ClassName;
- 객체간의 대화 방법(Message Passing 방법)
객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 함수호출을 기반으로 한다. 그래서 객체지향에서는
이러한 형태의 함수호출을 가리켜 '메시지 전달(Message Passing)'이라 한다.
※ 클래스를 설계하는것은 매우 어려운 일이다. 하나의 독립된 클래스를 정의하는 것은 쉽지만 둘 이상의 클래스를
정의하여 서로간의 관계를 형성하는 것은 쉽지않을 뿐더러 매우 중요하다. 단순히 함수호출로 이해하면 아무것도
아니지만, 메시지 전달 관점에서 이는 매우 중요하다.
- 구조체의 등장 배경
연관있는 데이터를 하나로 묶으면, 프로그램의 구현 및 관리가 용이하다.
- 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)'이라 한다.
※ 클래스를 설계하는것은 매우 어려운 일이다. 하나의 독립된 클래스를 정의하는 것은 쉽지만 둘 이상의 클래스를
정의하여 서로간의 관계를 형성하는 것은 쉽지않을 뿐더러 매우 중요하다. 단순히 함수호출로 이해하면 아무것도
아니지만, 메시지 전달 관점에서 이는 매우 중요하다.
'프로그래밍 > C/C++' 카테고리의 다른 글
C++ :: 복사생성자, 얕은복사와 깊은복사, 호출시기 (2) | 2010.08.14 |
---|---|
C++ :: 정보은닉, 캡슐화, 생성자와 소멸자, this포인터, friend 선언 (0) | 2010.08.13 |
C++ :: bool형, 참조자(Reference), new & delete, C표준함수 호출 (0) | 2010.08.12 |
C++ :: 입출력, 함수오버로딩, 디폴트매개변수, 인라인함수, 이름공간 (0) | 2010.08.12 |
C :: 퀵소트 라이브러리 함수 사용법 (0) | 2010.06.30 |
댓글 로드 중…