Brise

[C++ 기본 2] 4. OOP(Object Oriented Programming) 본문

프로그램/C,C++

[C++ 기본 2] 4. OOP(Object Oriented Programming)

naudhizb 2022. 2. 23. 23:57
반응형

예를 들어 복소수를 더하는 프로그램에 대하여 생각해보자.

OOP가 아닌 절차적 프로그래밍 방식의 경우 인자로 변수를 받아 값을 더하게 된다.

// 4_OOP1.cpp     57 page
#include <iostream>

void Add(int ar, int ai, int br, int bi,  // in parameter
        int* sr, int* si) // out parameter
{
    *sr = ar + br;
    *si = ai + bi;
}
int main()
{
    // 복소수 2개를 더하는 함수를 생각해 봅시다.
    int ar = 1, ai = 1; // 1 + 1i
    int br = 2, bi = 2; // 2 + 2i
    int sr, si;
    Add(ar, ai, br, bi, &sr, &si);
}

객체 지향(또는 기반) 프로그래밍의 기본은 값들을 유의미한 단위로 묶어 사용하는데에서부터 시작한다.

#include <iostream>

// 핵심 1. S/W 개발에 필요한 데이타 타입을 먼저 설계한다.

// 핵심 2. 타입을 만들때 상태를 나타내는 데이타와 
//           상태를 조작하는 함수를 묶어 놓는다
//     C언어   : 구조체에는 데이타 만 가능
//     C++언어 : 구조체에 함수를 넣을수 있다.


// 복소수라는 타입을 먼저 설계하자.
struct Complex
{
    int real;
    int image;

};
Complex Add(Complex c1, Complex c2)
{
    Complex temp;
    temp.real  = c1.real  + c2.real;
    temp.image = c1.image + c2.image;
    return temp;
}
int main()
{
    Complex c1 = { 1,1 };
    Complex c2 = { 2,2 };
    Complex c3 = Add(c1, c2);
}

클래스를 실제 사용하지는 않았지만, 코딩을 하기 이전 SW개발에 필요한 데이터를 먼저 정의하여 설계를 하는 것이 OOP의 기본이다.

반응형

'프로그램 > C,C++' 카테고리의 다른 글

[C++ 기본 2] 7. 접근지정자  (0) 2022.03.02
[C++ 기본 2] 6. STL  (0) 2022.03.02
[C++ 기본2] 5. OOP(Stack example)  (0) 2022.02.24
[C++ 기본 2] 3. example(reference, template)  (0) 2022.01.29
[C++ 기본 2] 2. memory allocation  (0) 2022.01.29
[C++ 기본 2] 1. reference  (0) 2022.01.29
[C++ 기본] 11. nullptr  (0) 2022.01.29
Comments