본문 바로가기

Windows Developer/C++

[C++] 절차지향 vs 객체지향


// 절차지향 코드
 
#include <iostream.h>
 
void startup(int *sp)
{
    *sp = 0;
    cout << "차량 출발" << endl;
}
 
void speedup(int *sp)
{
    (*sp)++;
}
 
void stop(int *sp)
{
    *sp = 0;
    cout << "차량이 멈추었습니다" << endl;
}
 
int car2_speed ;
 
void startup2()
{
    car2_speed  = 0;
    cout << "차량 출발" << endl;
}
 
int main()
{
    int car1_speed ;
    startup(&car1_speed);
    speedup(&car1_speed);
    cout << "현재 속도는 " << car1_speed;
    stop(&car1_speed);
 
    startup2();
    speedup(&car2_speed);
    cout << "현재 속도는 " << car2_speed;
    stop(&car2_speed);
   
    return 0;
}
 
절차지향 코드는 함수중심이다. 함수를 정의하고 각 함수를 호출관계로 엮어가는 방식이다





// 객체지향 코드
 
#include <iostream.h>
 
class Car
{
public :
    int speed;
    void startup()
    {
      speed = 0;
      cout << "차량 출발" << endl;
    }
 
    void speedup()
    {
      speed++;   
    }
    void stop()
    {
      speed = 0;
      cout << "차량이 멈추었습니다" << endl;
    }
};
 
 
int main()
{
    Car car1;
   car1.startup();
   car1.speedup();
   cout << "현재 속도는 " << car1.speed << endl;;
   car1.stop();
 
   Car car2;
   car2.startup();
   car2.speedup();
   cout << "현재 속도는 " << car2.speed << endl;;
   car2.stop();
   
    return 0;
}
 
main함수를 보시면 car1, car2에 대한 인스턴스를 생성하고 각 인스턴스의 멤버를 접근하는 방식으로 코딩되어 있음을 확인할 수 있다. 마치 누구에게 명령을 내리는 느낌이든다. 
car1.speedUp();
 
코드는 car1에게 speedup()을 하라는 명령을 내리는 것 같이 보인다. 아주 직관적인 코딩이다. 확실한 대상을 먼저 지정하고 그 대상이 가진 속성이나 기능을 쓰게 한다. 바로 이것이 객체지향 코딩의 특징이다

'Windows Developer > C++' 카테고리의 다른 글

[C++] 가상함수  (0) 2010.07.26
[C++]템플릿(template)  (0) 2010.07.20
[C++]STL 표준 C++ 라이브러리  (0) 2010.07.20
[C++]상수 함수  (1) 2010.07.19
[C++]객체지향 프로그램의 4대 특징  (0) 2010.07.17