본문 바로가기
IT/파이썬 Python

파이썬 입문자도 이해하는 객체 지향 프로그래밍(OOP)

by SidePower 2024. 11. 3.

 

프로그래밍에서도 현실처럼 물건이나 개념을 객체로 표현할 수 있어요.

이를 객체 지향 프로그래밍(Object-Oriented Programming, OOP)이라고 부르죠.

파이썬에서는 클래스(class)와 객체(object)라는 두 개념을 통해 OOP를 구현합니다.

 

오늘은 현실 속 강아지를 예시로 들어 클래스와 객체의 개념을 쉽게 알아보겠습니다.

 

 클래스와 객체의 개념

클래스는 일종의 ‘설계도’라고 할 수 있어요.

예를 들어, 강아지 클래스는 모든 강아지들의 특징을 담은 설계도입니다.

이 설계도로부터 만든 실제 강아지 한 마리가 객체가 되는 거죠.

class Dog:  # 강아지 클래스 정의
    def __init__(self, name, age):  # 생성자 (객체 초기화 메서드)
        self.name = name
        self.age = age

    def bark(self):  # 강아지가 짖는 메서드
        print(f"{self.name}가 멍멍 짖고 있어요!")

여기서 __init__()은 객체가 만들어질 때 자동으로 실행되는 생성자에요.

이름과 나이를 받아서 강아지 객체의 특성을 초기화하죠.

 

객체 만들기: 강아지 두 마리 생성

이제 강아지 두 마리를 만들어 볼게요.

클래스로 만든 각각의 객체는 독립적인 데이터를 가집니다.

dog1 = Dog("바둑이", 3)  # 첫 번째 강아지 객체 생성
dog2 = Dog("초코", 1)  # 두 번째 강아지 객체 생성

print(f"{dog1.name}는 {dog1.age}살입니다.")
dog2.bark()  # 초코가 짖기

실행 결과:

바둑이는 3살입니다.  
초코가 멍멍 짖고 있어요!  

메서드 활용과 객체 간 차이점

각 객체는 자신만의 속성(attribute)을 가지고 있어요.

예를 들어, dog1과 dog2는 서로 다른 이름과 나이를 갖고, 독립적으로 행동합니다.

객체가 각각의 특성을 갖는다는 게 OOP의 핵심이에요.

 

클래스와 메서드를 확장하기 . 강아지의 새로운 기능 추가

강아지 클래스에 새로운 메서드를 추가해 볼게요.

예를 들어, 강아지가 나이를 먹는 기능을 넣어보겠습니다.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name}가 멍멍 짖고 있어요!")

    def get_older(self):  # 나이를 한 살 더 먹는 메서드
        self.age += 1
        print(f"{self.name}는 이제 {self.age}살이에요!")

이제 강아지들이 나이를 먹을 수 있게 됐어요!

dog1 = Dog("바둑이", 3)
dog1.get_older()  # 바둑이가 4살이 됨

실행 결과:

바둑이는 이제 4살이에요!

 

반응형

댓글