Sub Visual
취업정보 홈 | 취업안내 | 취업정보 IT전문가와 취업의 꿈을 향하여 전진하는 곳입니다.
 
작성일 : 13-07-09 14:24
C언어 프로그래머가 알아야 할 것들!!! |
 글쓴이 : 조교 (220.♡.24.87)
조회 : 1,946  
[C언어] C언어, 프로그래머가 알아야 할 것들!!
 
 
C언어를 다루는 프로그래머는 객체지향 프로그래밍에 대해 공부를 하시는게 좋으며,
 
예전에 프로그래밍을 처음 공부하던 시기인 97년에 객체지향 프로그래밍은 단연 화두였습니다.
 
이번 포스팅에서는 당연히 여겨지고 있는 객체지향 프로그래밍과
 
그 3대 특징인 추상화, 캡슐화, 다형성이라 불렸던 것에 대해 알아보는 시간을 가져보겠습니다.
 
 
 
 
 [C언어] 추상화에 대해 알아보자!!
 

 
 
OOP에서는 모든 사물을 객체로 보기로 했다고 했었죠?
 
만약 여러가지 자동차의 전, 우, 좌, 우 사진을 보여주는 프로그램에서 동차를 개체로 구성한다고 해 봅시다.
 
 
자동차의 엔진, 타이어, 연료탱크 등 큰 구성요소를 포함해 나사 하나 하나와 그 나사들이 사용되는 위치까지
 
세세한 모든 정보를 구현하는 것은 힘듭니다.
 
 
그래서, 자동차 클래스에 자동차의 사진을 보여주기 위한 정보인 차 종류, 전, 우, 좌, 우 사진 정보,
 
차의 크기 등 보여줄 요약된 정보만 가지고 있기로 했습니다.
 
 
enum CAR_DIRECTION{
 
          CARDIRECTION_FORWARD = 0;
 
          CARDIRECTION_BACKWARD,
 
          CARDIRECTION_LEFTSIDE,
 
          CARDIRECTION_RIGHTSIDE,
 
};
 
struct CCarlmginfo
 
{
 
          CAR_DIRECTION m_CarDirection;
 
          char *m_pCarlmagePtr;
 
          Int m_iCarSize
 
};
 
class CCar
 
{
 
private;
 
  CCarlmglnfo *m_pcCarlmglnfo;  // 간략화 된 자동차 이미지 정보의 링크드 리스트
 
};
 
이렇듯 어떤 것을 객체로 만들 때, 필요한 정보만 간추려 구현하고,
 
중요하지 않은 부분을 추상화 하는 것을 객체 지향 프로그래밍에서의 추상화라고 합니다.
 
 
 
 
 
 [C언어] 캡슐화에 대해 알아보자!!
 

 
 
갭슐화란 무엇일까?
 
우리는 캡슐 안에 담긴 감기약을 먹을 때 어떤 성분의 약이 들어있는지
 
그 성분이 어떤 효과를 내는지를 알 필요 없고 우리는 단지 그 약을 먹으면 감기 치료에 도움이
 
단지 그 약을 먹으면 감기 치료에 도움이 된다는 것을 알고 복용할 뿐이죠.
 
 
OOP에서의 캡슐화도 비슷한 의미로 어떤 객체를 사용할 때, 이 객체가 어떤일을 하는지 알고 사용한다면
 
되도록 감싼다는 의미를 가집니다.
 
 
예를 들어 가속이라는 메소드가 있을 때,
 
이 메소드를 사용하면 가속이 될 거라는 사실만 알면 되도록 하는 것입니다.
 
내부적으로 어떻게 이루어져 있는지 알 필요가 없다는 것이죠.
 
 
 
class CCar
 
{
 
private:
 
    //차가 동작되기 위한, 각종 메소드와 멤버
 
public:
 
BOOL Accelate(); //이 메소드를 호출하면 자가 가속된다
 
};
 
 
 
이와 함께 은닉이란 것도 있는데 외부에 메소드만 제공하고
 
멤버로의 접근을 메소드를 통해서만 하도록 하는 것을 말합니다.
 
데이터를 변경할 때는 Setter (SetXX), 데이터 값을 얻어올 때는 Getter (GetXX)로 말하죠.
 
 
 
class CTemp
 
{
 
private:
 
    int m_iValue;
 
public:
 
    void SetValue(int value){m_iValue = value;} //Setter
 
    int GetValue(){return m_iValue;} //Getter
 
};
 
 
 
캡슐화를 하다 보면, 메소드의 사용법만 알려주기 때문에
 
자연스레 메소드 이외에는 데이터 변경을 불가능하게 만들어 은닉이 이뤄지는 경우가 많기에
 
캡슐화와 은닉을 묶어서 보는 경향이 있습니다.
 
 
 
 
 
 [C언어] 다형성에 대해 알아보자!!
 

 
 
다형성이란 같은 종의 생물이지만 모습이나 고유한 특징이 다양한 성질을 말하며,
 
OOP에서의 다형성이란 같은 이름 혹은 같은 종류가 다른 동작을 할 수 있다는 것을 말합니다.
 
 
C++에서는 가장 함수와 함수 재정의 템플릿이 다형성을 구현하고
 
템플릿은 C++에서 다형 성을 구현한 방식 중 하나입니다.
 
 
템플릿이란 데이터 타입에 구애 받지 않고 동작하는 것을 의미하며,
 
먼저 템플릿 함수부터 알아보겠습니다.
 
템플릿 함수란, 매개변수의 타입에 상관없이 동작할 수 있는 범용적인 함수를 의미합니다.
 
 
 
template<typename T>
 
T Multiple(T Num)
 
{
 
            return Num * Num;
 
}
 
void main()
 
{
 
            int age = 5;
 
            float weight = 45.7f;
 
            printf("%d * %d = %d\n", age, age, Multiple(age));
 
            printf("%f * %f = %f\n", weight, weight, Multiple(weight));
 
}
 
 
위 코드는 템플릿 함수를 이용한 코드입니다.