CPP 초급 강좌 26. 객체와 객체지향 프로그래밍 이란?
cpp, c++ 하면 가장 먼저 많이들 하는 말이 오 그거 객체 지향 프로그래밍 언어,라고 많이들 들어보셨을 겁니다.
그러면 객체는 뭐고, 객체지향 프로그래밍은 또 뭘까요?
아래 코드를 좀 보죠.
#include <iostream>
#include <vector>
#include <stack>
#include <list>
using namespace std;
int main()
{
int i = 0; //a0
float f = 0; //b0
char c = 'a'; //c0
std::vector<int> vector; //a1
std::stack<int> stack; //b1
std::list<int> list; //c1
vector.push_back(0);
vector.push_back(1);
vector.push_back(2);
vector.clear();
}
우리는 객체란 표현 이전에 변수라는 표현을 먼저 배웠습니다. 위에서 a0, b0, c0는 변수라고 말할 수 있습니다. a1, b1, c1은 객체라고 말할 수 있습니다.
변수는?
a0, b0, c0
변 하는 수, 혹은 변 할수 있는 수입니다.
특정 메모리의 공간을 지칭하는 이름이고, 이 이름을 이용하여 그 메모리 공간에 값을 쓸 수 있는 것입니다. 주로 언어가 제공하는 기본 타입(primitive type)을 말합니다.
객체는?
a1, b1, c1
메모리를 할당함과 동시에 특정 작업(초기화)등을 할 수 있습니다.
객체는 상태(값)와 동작(함수)을 가지고 있습니다. 객체는 다양한 함수를 통해 다양한 기능을 제공할 수 있습니다. 주로 사용자 정의 타입이라 볼 수 있죠
흐으음... 객체는 이렇다고 맛만 보시고 그럼 다음으로?
그럼 객체지향 프로그래밍은 뭔디여?
객체지향 프로그램을 말하려면, 먼가 다른 프로그래밍 방법이 있으니까 객체지향 프로그래밍이 잇겠죠. 과거 c를 통해 프로그램을 구현 시 이는 명령형(정차적) 프로그래밍 이란 표현을 썼습니다.
명령형(절차적) 프로그래밍
위의 main 함수와 같이 내부 첫 줄의 코드부터 마지막 줄까지 쭈욱 실행되는 형식을 표현합니다. 순차적으로 실행된다고 말하며, 제어문, 반복문, 함수 등을 사용하여 실행 흐름을 변경시켜 프로그램을 진행합니다.
그럼
객체지향 프로그램이란?
프로그램을 구현한다는 것은 하나의 목적이 있습니다. 이 목적을 구현하기 위해 어떤 객체가 필요한 지부터 설계하고 그 사이의 관계성으로 프로그램을 진행하는 패러다임입니다.
음? 그냥 저런 느낌이구나 정도 일단 이해하고, 코딩하면서 이해합시다...ㅠㅠ
그럼 c++로 코딩하면 다 객체 지향 프로그램인 것이에요?
그럴 수도 아닐 수도 있습니다.
c++은 c를 기반으로 설계되었습니다. 기본은 명령형 프로그래밍 형식으로 구현할 수도 있습니다. 객체 관련 기능을 지원하기에 객체 지향 프로그래밍도 가능합니다. 아직 언급하지 않은 일반화 프로그래맹(템플릿 방식), 함수형 프로그래밍의 기능조차 사용할 수 있습니다.
c++ 은 객체지향 기능을 본격 지원하기 시작한 언어이지 객체 지향만으로 코딩해야 하는 언어가 아닙니다.
c++은 다중 패러다임 언어라고 보시는 게 합당합니다.
절차적, 객체 지향, 일반화, 함수형
사용자가 어떤 생각으로 사용을 하는가 그 거시 중요한 것이죠.
여기에 언급이 부족한 내용은 이후 이어지는 내용들에 차차 등장할 것이에요.
봐주셔서 감사합니다.
'IT > C++(CPP)' 카테고리의 다른 글
CPP 초급 강좌 28. 생성자 constructor (1) | 2020.11.09 |
---|---|
CPP 초급 강좌 27. 접근지정자, 캡슐화, friend 함수 (4) | 2020.11.06 |
CPP 초급 강좌 25. 객체지향 프로그램밍 클래스, 생성자, 소멸자, 파일분할, 클래스 탬플릿 (4) | 2020.11.04 |
CPP 초급 강좌 24. 객체지향 프로그램밍 객체화, 접근 지정자 맛보기 (9) | 2020.11.03 |
CPP 초급 강좌 23. C++ 동적메모리 사용(new, delete, delete[]), nullptr (6) | 2020.11.02 |
댓글