본문 바로가기
Programming 개발은 구글로/C++

C++ 객체 지향 프로그래밍

by 40대직장인 2022. 6. 5.

절차 지향 프로그래밍 vs 객체 지향 프로그래밍

1. 절차 지향 프로그래밍(Procedural Programming)

절차 지향 프로그래밍이란 실행하고자 하는 절차대로 일련의 명령어를 나열하여 프로그래밍하는 방법이다.

작업을 절차로 표현하여 명령들의 순서나 흐름에 중점을 둔다. 절차 지향 프로그래밍은 흐름도 를 설계하여 흐름도 상의 동작들을 함수로 작성 후 흐름도에 따라 동작이 실행되도록 작성한다.

 

2. 객체 지향 프로그래밍

객체 지향 프로그래밍은 물체 간의 관계, 상호 작용 등으로 복잡하게 구성된 실세계에 가깝게 프로그래밍을 모델링한다.

실제 세계의 물체를 객체 로 표현하고, 객체들의 관계 와 상호 작용을객체 지향 기법으로 구현한다.

 

C++는 객체 지향 개념을 도입하여 이미 만들어진 C++ 클래스를 상속받거나, 재사용하거나, 부분 수정을 통해 소프트웨어의 생산성을 높였다. 또한 물체들의 상호 작용으로 모델링을 하여 실세계에 적합한 프로그래밍을 할 수 있도록 하였다.

 

3. 객체와 캡슐화(EnCapsulation)

캡슐화는 데이터를 캡슐로 싸서 외부의 접근으로부터 데이터를 보호하는 객체 지향 특성이다. 

클래스는 캡슐의 역할을 하며 class 키워드를 통해 작성한다. 

객체는 클래스라는 틀에서 생겨난 Instance (실체) 이다.

 

class Circle {                                       //클래스
private:                                             //접근 제어자
  int radius;                                        //멤버 변수
public:                                              //접근 제어자
  Circle(int r) { radius = r; }                      //생성자
  double getArea() { return 3.14*radius*radius; }    //멤버 함수
};

 

4. 상속성(Inheritance)

상속이란 자식 클래스가 부모 클래스의 속성을 물려받는 것이다. 객체를 정의하는 클래스 사이에 상속 관계를 두면, 자식 클래스의 객체가 생성될 때 자식 클래스에 선언된 멤버뿐만 아니라 부모 클래스에 선언된 멤버들도 함께 가지고 생성된다.

 

class Phone {
  void call();
  void receive();
};

 

class MobilePhone : public Phone { // Phone을 상속받음
  void connectWireless();
};

 

class MusicPhone : public MobilePhone { // MobilePhone을 상속받음
  void playMusic();
};

 

5. 다형성(Polymorphism)

다형성이란 어떠한 기능이 경우에 따라 서로 다르게 동작하는 현상이다.

  • 연산자 중복 (Operator Overloading) : 같은 연산자라도 피연산자에 따라 서로 다른 연산이 이루어짐
    • 2 + 3 = 5
    • “여자” + “남자” = “여자남자”
    • red 객체 + blue 객체 = purple 객체
  • 함수 중복 (Function Overriding) : 부모 클래스에서 구현된 어떠한 함수를 자식 클래스에서 서로 다르게 구현함

     

    void add(int a, int b) { ... }
    void add(int a, int b, int c) { ... }
    void add(int a, double b) { ... }
    void add(double a, double b) { ... }

 

 

댓글