새소식

💻 Programming (프로그래밍)/C++

[C++] 객체지향 프로그래밍 (Object-Oriented-Programming)

  • -

이 포스팅에선 아주아주 심플 하게 간단명료를 목표로 글을 씁니다.

 

객체 지향 프로그래밍이란

코드를 재사용! 하기 위해서 쓰이는 방법론입니다.

 

어떤 특징이 있나요

클래스의 3가지 특징을 예로 들어봅니다.

1) Encapsulation 캡슐화

2) Polymorphism 다형성

3) Inheritance 상속

 

캡슐화 (Encapsulation)

// 클래스 예시

class Stack{

private:
    int stack[16];
    int sp;

public:
    Stack() {sp = 0;}
    void push(int value) {stack[sp++] = value;}
    int pop() {return stack[--sp];}

};

여러 코드를 하나의 클래스란 캡슐로 만들어 기능도 사용하고, 코드도 보호할 수 있습니다.

위 처럼 간단한 스택 구현의 기능및 변수들을 Stack 이란 클래스 안에서 관리하는 모습입니다.

 

다형성 (Polymorphism)

// 다형성 예시

class Stack{

private:
    int stack[16];
    int sp;

public:
    Stack() {sp = 0;}
    
    void push(int value) {stack[sp++] = value;}
    void push(float value) {stack[sp++] = (int)value;}
    
    int pop() {return stack[--sp];}
    
    

};

하나의 함수 이름으로, 여러가지 기능을 실현할 수 있습니다.

대표적인 예로 오버로딩, 오버라이딩이 있습니다.

 

위의 코드는 push 라는 함수를 오버로딩하여 매개변수별로 다르게 넣어주는 기능입니다.

 

상속 (Inheritance)

class Animal{
private:
    int age;
    int name;

public:
    void cry();
    void sleep();
}


class Dog : public Animal {

public:
    void cry() { cout << "월월";} // 다형성 개념
    void sleep() { cout << "쿨쿨"; }

}

클래스 복제를 하여 부분적인 기능을 구현할 수 있습니다.

 

위의 코드는 Animal을 상속받아, 변수 age, name는 그대로 물려받고

함수 cry, sleep 은 오버라이딩(overriding) 합니다.

 

상속덕분에 Dog 클래스의 코드를 짤때는 더 쉽게 구현할 수 있습니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.