객체지향 프로그래밍은 현실 세계의 객체들을 프로그램에 반영하는 프로그래밍 패러다임입니다. 이 패러다임은 클래스와 객체를 중심으로 구성되어 있습니다. 클래스는 객체의 설계도이며, 객체는 클래스의 인스턴스입니다. 이번 강좌에서는 파이썬을 사용하여 클래스와 객체지향 프로그래밍에 대해 알아보도록 하겠습니다.
- 클래스 정의하기 클래스는 “class” 키워드를 사용하여 정의할 수 있습니다. 클래스의 이름은 일반적으로 대문자로 시작하며, 관례적으로 카멜 케이스(camel case)를 사용합니다. 클래스는 속성(attribute)과 메서드(method)로 구성됩니다. 속성은 클래스의 변수이고, 메서드는 클래스의 함수입니다.
예를 들어, 동물을 나타내는 Animal 클래스를 정의해보겠습니다.
class Animal:
def __init__(self, name):
self.name = name
def sound(self):
print("동물 소리를 내는 중입니다.")
위의 예제에서 Animal 클래스는 속성으로 name을 가지고 있으며, 메서드로 sound를 가지고 있습니다. 생성자 메서드인 __init__
은 객체가 생성될 때 호출되며, 초기화 작업을 수행합니다. self는 현재 객체를 참조하는 특별한 변수입니다.
- 객체 생성하기 클래스로부터 객체를 생성하기 위해서는 클래스를 호출하면 됩니다. 객체는 클래스의 인스턴스입니다.
cat = Animal("고양이")
dog = Animal("개")
위의 예제에서 cat과 dog는 Animal 클래스의 인스턴스입니다. 생성자 메서드 __init__
이 호출되어 객체의 속성이 초기화됩니다.
- 메서드 호출하기 객체의 메서드를 호출하기 위해서는 객체명 다음에 마침표를 붙인 뒤 메서드를 호출하면 됩니다.
cat.sound()
dog.sound()
위의 예제에서는 cat과 dog 객체의 sound 메서드를 호출하고 있습니다. 이를 실행하면 “동물 소리를 내는 중입니다.”라는 메시지가 출력됩니다.
- 상속 상속은 객체지향 프로그래밍의 중요한 개념 중 하나입니다. 상속을 사용하면 기존 클래스의 속성과 메서드를 다른 클래스에서 재사용할 수 있습니다. 파이썬에서는 다중 상속도 지원합니다.
class Cat(Animal):
def sound(self):
print("야옹~")
class Dog(Animal):
def sound(self):
print("멍멍!")
위의 예제에서 Cat 클래스와 Dog 클래스는 Animal 클래스를 상속받았습니다. 상속받은 클래스는 부모 클래스의 속성과 메서드를 그대로 사용하거나 필요에 따라 재정의할 수 있습니다.
cat = Cat("고양이")
dog = Dog("개")
cat.sound() # "야옹~" 출력
dog.sound() # "멍멍!" 출력
위의 예제에서 cat 객체는 Cat 클래스의 인스턴스이므로 Cat 클래스에서 재정의한 sound 메서드가 호출됩니다. 마찬가지로 dog 객체는 Dog 클래스의 인스턴스이므로 Dog 클래스에서 재정의한 sound 메서드가 호출됩니다.
이처럼 클래스와 객체지향 프로그래밍은 코드의 재사용성과 유지보수성을 향상시키는데 도움을 줍니다. 파이썬을 비롯한 많은 프로그래밍 언어에서 객체지향 프로그래밍을 지원하고 있으며, 이를 통해 복잡한 문제를 더욱 효율적으로 해결할 수 있습니다.