본문 바로가기

쉽게 풀어본 IT 기술

객체지향을 쉽게 설명하면

객체지향이라는 말은 객체를 지향한다는 의미이다. 객체를 지향하는 것이 무슨 말일까?  
그렇다면 이 전에는 무엇을 지향했을까?

프로그램은 순차적인 진행 절차를 가지고 개발이 되어왔다. 어떤 기능이 동작하기 위한 로직들이 수행되는 것이다. 이것만 놓고 보면 객체지향이라고 할 수는 없다. 순차적 프로그래밍이다. 순차적 프로그램 당시 무언가를 지향한다고는 하지 않았다.

객체지향이 나오면서 기존 순차적 또는 절차적인 순서가 아닌 방향이 된 것이다. '객체 지향이라는 개념이다. 객체 지향 개념은 객체를 지향했다는 것인데, C언어의 경우는 순차적인 프로그램을 만들었다. C++의 경우에는 객체가 중심이 된다. 객체라는 개념부터 이해를 해야 할텐데, 객체는 우리 주변에 모든 것이라고 할 정도로 모든 것이 객체로 되어 있다. 사람도 객체이다. 강아지도 객체이다. 컴퓨터도 객체라고 할 수 있다. 그것이 살아 있든 죽어 있든 모든 것은 객체이다. 그럼 순차적인 것과 객체 지향의 차이는 이렇다. 순차적인 것은 강아지에게 밥을 준다. 강아지를 목욕 시킨다. 강아지와 산책을 한다. 이런식으로 일어나는 일들에 대해서 순차적으로 진행을 했다고 하면 객체 지향은 강아지가 중심이다. 그리고 밥을 준다. 목욕하다. 산책하다와 같은 기능을 가지는 것이다. 그리고 어떤 특정기능을 해야 할때 그 기능을 선택하여 진행을 한다.'

객체지향 설계는 이러한 객체를 중심으로 설계를 하는 것이다. 간혹 객체지향 프로그램인 C++이나 Java이용해서 개발을 했지만, 객체 지향으로 개발되지 않고, 순차적인 프로그램처럼 개발된 경우가 더러 있다. 객체지향에 대한 이해를 해야 하고, 객체 지향 관점에서 프로그램은 설계가 되어야 한다.

프로그램은 순차적일 수 있다. 그리고 어떤 기능이 동작되려고 하면 그 안에 로직은 절차대로 진행이 된다. 객체 지향이라고 해서 프로그램이 아래로 흐리지 않는 것은 아니다. 하지만 시작점 이후에 계속 순차적으로 진행되는 것은 아니다. 대표적으로 이벤트 드리븐 방식의 윈도우 프로그램의 경우 순차라는 것이 진행이 되기 전에 어떤 기능이 호출이 먼저이다. 예를 들면 버튼을 누르게 되면 시작이 된다든지 어떤 버튼을 누르면 종료된다든지 하는 기능 호출과 절차가 존재한다. 물론 이것을 객체지향이라고 말하기는 그렇지만, 일단 버튼이 중심이 되었다는 것에서는 객체지향에 가깝다고는 할 수 있다.

다시 객체지향을 언급한다면 단순하게 절차에 의해서 동작되는 것이 아니라 객체가 있고, 몇가지 기능이 있고, 이 기능을 호출했을 때 그 객체가 중심이 되어서 움직인다. 새가 난다고 했을때는 기존에 함수를 가지고 프로그램을 한다면 난다라는 함수에 새를 넣었다.
난다(새)

객체 지향은 새에 난다라는 함수가 포함되어 있다. 그래서 새가 난다.
새.난다()
이렇게 호출을 한다. 이렇게 객체가 중심이 된다는 의미이다.