일단해봐

[Python] 객체 지향(Object Oriented)이 뭐지? 본문

Python

[Python] 객체 지향(Object Oriented)이 뭐지?

GoEz 2021. 4. 18. 12:46

객체(Object)란?

객체는 세상에 존재하는 모든 것이 객체가 될 수 있다.

또 객체는 속성(Attribute)와 행동(Action)으로 구성되어 있다. 

정말 뜬 구름 잡는 소리다. 내가 말하면서도 모르겠다. 

실제로 무슨의미 인지 예를 들어 살펴보자.

자동차 시동을 거는 과정을 객체로 만들어 보자.

자동차 시동 걸리는 과정을 설명하면 "버튼이 눌리면 엔진이 켜져서 시동 On 상태가 된다."

위 문장에서 명사(키워드)를 뽑아 보면 [버튼], [시동 상태]이고 동사를 뽑아 보면 [엔진이 켜진다.]이다. 

위 그림은 명사(키워드)를 속성(Attribute)으로 동사를 행동(Action)으로 정의하여 표현하였다.

늘 그런 것은 아니지만 객체의 기능을 설명하고 그중 명사를 속성으로 동사를 행동으로 표현하는 것이 어떠한 것을 객체로 정의할 때 효과적인 경우가 많다.

객체지향 프로그래밍(Object Oriented Programing) 이란?

이렇게 객체를 정의했는데 이게 프로그래밍과 무슨 관계가 있나? 대답을 알아보기 위해 객체 지향 프로그래밍의 의미를 알아보자.

객체 지향 프로그래밍은 객체와 객체 간의 소통으로 구성하여 프로그램을 설계하는 방식이다. 이것도 예를 들어 알아보자. 

위에서 예를 들었던 자동차 시동을 다시 살펴보자. 자동차 시동을 켜기 위해서는 시동을 켜줄 운전자가 필요하다. 운전자를 객체로 추가해보자. 

운전자가 시동을 거는 과정을 설명하면 "운전자가 손을 움직여서 버튼을 누른다."이다. 위와 동일하게 속성(손), 행동(버튼을 누른다.)을 정의했다. 

위 설명 문장에서 '버튼'도 명사이지만 버튼은 운전자를 구성이 아니므로 동사에 포함 시킴.

자 이렇게 두 개의 객체를 정의했다. 그러면 이 두 객체는 어떻게 소통할까?

두 객체와 객체 내부의 소통을 보면 그림과 같이 표현할 수 있고 요약하면 아래와 같다. 

  • 운전자가 손을 움직여서 버튼을 누른다.
  • 버튼이 눌려서 엔진이 켜진다.
  • 엔진이 켜져서 시동 상태가 On 된다. 

이런 식으로 각 객체를 정의하고 객체 간 혹은 객체 내의 소통을 정의하여 자동차 시동을 거는 과정을 프로그래밍할 수 있다. 이러한 방식이 객체 지향 프로그래밍이다. 

똑같은 시동 거는 과정을 절차 지향 프로그래밍(Procedural Programming)과 비교해보면 차이가 명백해진다. 

객체지향과 절차 지향을 그림으로 비교해 보면 명확한 차이점은 객체지향은 어떠한 기능이 수행되는데 누가(객체) 어떠한 일을 하는지 명확하게 표현되고 절차 지향의 경우 기능이 어떠한 순서(Sequence)로 수행되는지 잘 표현된다. 

이렇게 해서 객체지향(Object Oriented) 프로그래밍에 대해 설명하였다. 여기까지만 보았을 때 왜 객체지향이 요즘 더 각광을 받는지 전혀 설명이 되지 않았다. 다음에는 클래스(Class)를 설명하면서 객체지향의 장점을 알아보자.

2021.04.18 - [Python] - [Python] Class 기본 사용법

Comments