IT일반

파이썬 프로그래밍, 객체 지향 언어, 클래스

IT하는 으노 2024. 12. 12. 17:00
반응형

파이썬은 클래스 기능을 제공한다. 클래스를 사용할 수 있다는 것은 객체 지향 프로그래밍을 지원한다는 뜻이다. 클래스에 대해서 다루기 전에 객체 지향 언어에 대해 살펴보자. 객체 지향 언어는 절차 지향 언어와 함께 프로그래밍의 두 가지 주요 패러다임이다.

기본 아이디어

절차 지향

우리가 지금까지 프로그래밍 한 방식은 절차 지향 언어의 형식이다. 절차 지향 언어는 절차로 구성된 프로그래밍 방식으로,위에서 아래로 진행되는 순차적인 명령어 처리를 추구하며 프로그램은 처음부터 끝까지 유기적으로 연결되어 일련의 과정을 따라 실행된다.

객체 지향

객체 지향 언어는 프로그램을 단순한 명령어의 흐름으로 이해하지 않고, 독립된 객체들의 작용으로 이해한다. 데이터와 관련된 메서드를 하나로 묶어 객체의 상태와 동작을 관리함으로써 유연한 프로그래밍을 추구한다.

빵 굽는 예

예컨대, 빵을 굽는 예로 각 언어의 특성을 이해해 보자면, 절차 지향의 경우 빵을 굽는 각 단계의 작업에 관심이 있다.

  1. 재료를 준비한다 > 2. 반죽을 한다. > 빵 모양을 만든다 > 4. 빵을 굽는다. > 5. 빵을 완성한다.

각 과정에 필요한 일련의 명령어 순서를 잘 작성하는 것이 프로그래밍 방식이 된다. 반면에, 객체 지향의 경우에는 빵을 만들 때 필요한 상태와 동작을 정의하는 데 관심이 있다.

  1. 빵을 만드는 데 필요한 속성과 동작을 정의한다.
  2. 여러 종류의 빵 객체(식빵, 초코빵, 슈크림 빵)를 생성한다.
  3. 해당 빵을 만들기 위한 반죽 메서드, 굽기 메서드를 실행한다.
  4. 빵을 완성한다.

​만약 식빵, 초코빵, 슈크림 빵 등 여러 종류의 빵을 만들고자 한다면 절차 지향 언어의 경우에는 각각의 빵 종류에 필요한 함수와 데이터를 별도로 작성해 주어야 한다. 그러나 객체 지향 언어를 선택한다면 클래스를 잘 정의하는 것만으로 이 과정을 완료할 수 있다. 비슷한 유형의 작업을 하나의 클래스로 '모듈화'함으로써 유연성을 도모하는 것이 객체 지향 언어라고 할 수 있다.

​붕어빵, 클래스와 인스턴스

붕어빵은 붕어빵 틀로 만들어진다. 반죽과 안에 들어갈 속 재료를 준비하고 붕어빵 틀에 적절히 배치하여 구우면 여러 종류의 붕어빵을 만들 수 있다. 객체 지향 언어에서 클래스는 붕어빵 틀과 같다. 클래스는 객체의 특성과 속성을 정의한다. 붕어빵 틀에서 빵을 굽는다면 속 재료가 어떻든지, 어떤 형태로 빵을 굽든지 붕어빵이 된다. 붕어빵 클래스인 것이다. 다만 각각 만들어진 붕어빵의 속성값은 조금씩 다를 수 있다. 팥 붕어빵, 슈크림 붕어빵, 김치 붕어빵은 서로 속성값이 다른 붕어빵이다. 하나의 클래스로 생성된 각각의 개체를 인스턴스라고 하며, 이 인스턴스를 객체라고도 한다.

특징

객체 지향 언어의 주요 특징으로 추상화, 상속, 다형성, 캡슐화가 있다.

  • 추상화는 프로그램을 간단히 표현하는 것이다. 복잡하고 불필요한 내용은 제외하고 중요한 정보만을 표현한다. 객체의 공통적인 속성과 기능을 추출함으로써 추상화하게 된다.
  • 상속은 새로 생성한 클래스에게 기존 클래스의 속성을 이용할 수 있도록 하는 기능을 말한다. 이때 상속 관계에 따라 부모 클래스, 자식 클래스 등의 관계가 발생한다.
  • 다형성은 어떤 속성이나 기능이 다양한 형태를 가지게 됨을 말한다. 핸드폰이 누군가에게는 중요한 연락의 도구이지만, 어떤 사람에게는 여가 시간을 보내는 미디어로, 어떤 사람에게는 예쁜 추억을 남기는 카메라로 사용되는 것과 같다.
  • 캡슐화는 속성과 메서드를 하나로 묶는 것을 말한다. 캡슐화의 목적은 데이터 보호와 데이터 은닉에 있다.

​이해하기 어려운 것이 많지만, '붕어빵 틀은 클래스이고 각각의 붕어빵은 객체구나' 정도만 이해해도 괜찮다.

반응형