[Python] OOP(1): 객체지향프로그래밍 개념

#1 객체지향프로그래밍(Object Orientative Programming, OOP)

OOP 소개 및 장점

OOP객체를 기본단위로 하는 프로그래밍 구조화 방법론이다. OOP에서 객체는 함수와 데이터의 속성의 묶음이다. OOP를 활용하면 고수준에서 프로그래밍 설계를 가능하게 한다. 그리고 잘 설계 된 자료형들은 재사용이 쉽다. OOP를 이해하려면 객체, 클래스, 인스턴스가 뭔지 알아야한다.

객체

파이썬에서 모든 것은 객체다. 구체적으로는 객체는 데이터와 기능이 묶인 것이다.

데이터속성, 메서드

속성이란 객체의 데이터와 기능이다. 객체를 담은 변수 뒤에 (.)을 찍어서 사용할 수 있다. 속성에는 데이터 속성과 메서드가 있다. 데이터 속성이란 객체가 내부적으로 갖는 변수들이다. 변수는 객체가 기능을 수행하거나 필요한 값들을 저장한다. 메서드객체가 갖는 함수들이다.

# 변수에 문자열 객체 할당
# hello, abc 모두 문자열 객체의 값임
a = str("hello")
b = str("abc")

# 문자열 객체의 메서드 호출
# 메서드 호출 만으로 값을 조작할 수 있음
a.upper()  # 'HELLO'
b.upper()  # 'ABC'

클래스

클래스란 객체가 갖게 될 데이터와 기능을 정의한 것이다. 즉, 클래스는 객체의 탬플릿이다. 클래스를 정의한다는 것은 자료형을 정의하는 것과 같다. 아래는 클래스를 정의하는 것의 예다.

class MyClass:

    def __init__(self, value):
        self.inst_var = value

    def print(self):
        print(MyClass.class_var, self.inst_var)

인스턴스

인스턴스는 객체의 다른 이름이다. 특정 클래스의 객체임을 강조할 때 인스턴스라는 표현을 쓴다.

a = str("hello") # a는 문자열 인스턴스의 참조를 가리킨다.