파이썬을 소개하는 글에 "파이썬은 객체 지향 프로그래밍 언어" 혹은 "파이썬은 객체나 객체의 성향을 띈 함수로 구성된 언어"라고 표현되어 있는 것을 본 적이 있는가?

필자는 Java -> JavaScript -> Python 순으로 몇 가지 언어를 조금씩 접할 기회가 있었다. 어느 것 하나 익숙하고 편하다고 할 수 없는 부끄러운 수준이지만, 배움의 과정에서 '객체 지향 프로그래밍'이라는 개념이 늘 따라다녔다. 그때마다 검색해 잠깐 이해하고 넘겼는데 이번에는 개념을 잘 정리해 오래 기억하고 싶어 이 글을 작성하기 시작했다.

지금부터 객체 지향 프로그래밍이란 무엇인지 알아보자.




1. 객체(Object)

객체 지향 프로그래밍에서 객체란 무엇인가?

  • 객체는 어떤 속성(attributes)이나 값(value), 함수(methods)를 가진 데이터이다.

  • 객체는 모든 클래스의 베이스(base) 클래스이다. (*클래스의 개념은 아래에서 자세히 다룰 예정)



2. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

그렇다면 객체 지향 프로그래밍이란?

OOP의 정의보다 의의에 중점을 두어 정리하면,

  • 객체 지향 프로그래밍은 프로그램을 객체 단위로 프로그래밍한다 - 각각의 객체는 서로 데이터나 정보를 주고 받는다.

  • 객체 지향 프로그래밍은 소프트웨어 개발과 보수를 용이하게 한다.

  • 객체 지향 프로그래밍을 하면 코드가 직관적이다.


OOP 개념을 정리해보니 컴퓨터 프로그래밍에서 OOP가 생겨난 배경에 대해 이해할 수 있게 되었다.

  • 코드는 언제나 바뀔 수 있다 - 빠르게 수정 가능해야 한다.
  • 중복 코드를 배제한다.

지금까지의 내용을 요약하면,

객체 프로그래밍의 목적
소프트웨어 개발시 개발과 보수(혹은 코드의 재사용 및 수정)를 용이하게 하기 위함

객체 지향 프로그래밍의 정의
객체 단위(속성이나 값, 함수를 가진 데이터 단위)로 프로그래밍하는 것




3. 클래스(class)

객체 단위로 프로그래밍한다는 것은 구체적으로 어떻게 하는 것일까? 여기서 클래스의 개념이 나온다.
위에서 객체를 정의할 때, 객체는 모든 클래스의 베이스(base) 클래스라고 했다.

객체는 이미 선언된(만들어진) 클래스를 기반으로 만들어진다는 말이다. 다르게 표현하면, 하나의 클래스로 다른 여러 개의 객체를 생성할 수 있다. 그래서 클래스를 주로 blueprint(청사진 혹은 설계도)에 비유를 많이 한다.

이때, 클래스를 기반으로 만들어진 실체를 오브젝트(object) 또는 인스턴스(instance)라고 한다.




위에서 정리한 내용을 잘 이해했다면 이제 "어떻게 객체 단위로 프로그래밍(=객체 지향 프로그래밍) 하는가?"에 대한 답을 할 준비가 되었다.


4. 객체 지향 프로그래밍 하는 방법(혹은 객체 지향 프로그램 작성하는 방법)

  1. 클래스를 설계한다 - 클래스는 속성값(attribute)와 메서드(method)로 구성
  2. 필요한 객체를 생성한다.
  3. 해당 객체 내에 속성과 메서드를 유기적으로 조작해가면 전체 코드를 작성한다.

프로그래밍을 하다보면 위와 같은 방법 혹은 순서는 반드시 일치하지 않을 수 있다. 객체 지향 프로그래밍의 목적은 1. 기능과 동작을 분리하고 2. 똑같은 기능을 하는 코드의 중복을 지양하기 위해 설계 과정이 필요하다는 것이다.

이 글이 객체 지향 프로그래밍을 처음 접하거나 그 프로세스에 대해 이해하기 위한 사람들을 위해 조금이나마 도움이 되기를 바란다.




현재 필자는 파이썬 언어를 집중적으로 공부하면서 데이터 분석가의 꿈을 키우고 있기 때문에 객체 지향 프로그래밍에 대해 이해한 것을 바탕으로 직접 파이썬 코드로 객체 지향 프로그램을 작성해보는 시간을 가질 예정이다.

따라서 다음 시리즈에서는 직접 파이썬 코드로 클래스를 이용한 객체 지향 프로그램을 작성해보는 과정에 대해 정리해보겠다.


References :

profile
기록. 수정. 기억.

0개의 댓글