카테고리 없음

[C/C++언어] OOP, Class, Object란? (Object Oriented Programming, 클래스, 객체)

끄적끄적아무거나 2021. 12. 20. 09:04
반응형

 

목차

     

     

     

     

     

     

     

     

    OOP란? (Object Oriented Programming)

     

    OOP는 Object Oriented Programming의 약자로 객체지향 프로그래밍이라고 합니다. 

    Object Oriented Programming 은 객체(Object)를 만듭니다. 그리고 객체(Object)는 함수(Function)와 데이터(Data)를 포함 합니다. 

    반면에 Procedural Programing이란 절차지향 프로그래밍이라고 부르고 C언어가 대표적입니다. 말 그대로 순차적으로 프로그램을 처리하는 방식 입니다. 절차지향 프로그래밍의 단점은 순서대로 처리하기 때문에 중간에 오류를 수정하기가 어렵고 수정 후 결과에 영향을 주기 때문에 디버깅(Debugging)이 쉽지 않습니다.

     

    반면에 객체지향 언어는 앞서 말한바와 같이 함수와 데이터를 다 포함한방식으로 하나의 객체를 하나의 파트처럼 프로그램에서 잘못된 부분이 있다면 해당 부품을 갈아 끼우는 방식처럼 디버깅이 효율 적입니다. 단점은 간단한 프로그램을 수행할 경우 객체 자체가 비효율적으로 클 수가 있고 전체 속도를 늦출 수 있습니다. 

     

    OOP의 절차지향 언어 대비 장점을 나열하면 아래와 같습니다.

     

    • OOP는 프로그램에 명료한(Clear) 구조를 제공
    • OOP는 C++의 DRY(Don't Repeat Yourself)에 유용(반복적으로 사용되는 기능의 최소화)
    • OOP는 유지 보수와 수정에 유리
    • OOP는 필요한 객체가 준비되면 개발 시간을 최소화 시켜줌

     

     

     

    클래스와 객체란? (Class, Object)

     

    클래스와 객체는 OOP를 구성하는 주요 요소 입니다. 

     

    예를 들어 클래스는 자동차가 되고 객체는 현대, GM, 르노가 됩니다.

     

    즉, 클래스는 객체를 대표하는 Template으로 생각하시면 됩니다. 

     

    앞서 말한 개념은 아래와 같이 코드로 풀어 낼 수 있습니다. 아래에 현대와 GM을 객체로 선언했고 클래스는 Car_Maker로 제작하였습니다. 

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Car_Maker {       // 클래스선언
    public:           
        int revenue;
    };
    
    int main() {
        Car_Maker Hyundai;
        Car_Maker GM;
    
        Hyundai.revenue = 15;
        GM.revenue = 10;
    
        // Print values
        cout << Hyundai.revenue << "\n";
        cout << GM.revenue << "\n";
        return 0;
    }

     

    결과>>

    15
    10

     

     

    반응형