C01.파이썬 객체지향 프로그래밍 기초

학습 목표

이번 강의에서는 객체지향 프로그래밍(OOP)의 기본 개념을 이해하고, 이를 파이썬에서 어떻게 적용할 수 있는지 배웁니다. 클래스와 객체의 개념을 익히고, 기본적인 OOP 구조를 만드는 방법을 학습할 것입니다.

개념 설명

객체지향 프로그래밍은 프로그램을 객체(object)로 구성하여 설계하는 방법론입니다. 객체는 데이터(속성)와 해당 데이터를 조작하는 기능(메서드)을 포함합니다. OOP의 주요 개념은 다음과 같습니다:

  • 클래스(Class): 객체를 정의하기 위한 설계도 또는 청사진입니다. 속성과 메서드를 포함합니다.
  • 객체(Object): 클래스로부터 생성된 실체입니다. 클래스의 인스턴스라고도 합니다.
  • 캡슐화(Encapsulation): 객체의 데이터와 메서드를 하나의 단위로 묶고, 외부에서 접근을 제한하는 개념입니다.
  • 상속(Inheritance): 기존 클래스를 기반으로 새로운 클래스를 생성하여 속성과 메서드를 재사용하는 기능입니다.
  • 다형성(Polymorphism): 같은 이름의 메서드가 서로 다른 클래스에서 다르게 동작하는 것을 의미합니다.

예제 코드

# 클래스 정의
class Dog:
    def __init__(self, name, age):
        """초기화 메서드, 객체 생성 시 호출됨"""
        self.name = name  # 이름 속성
        self.age = age  # 나이 속성

    def bark(self):
        """개가 짖는 메서드"""
        return f"{self.name}가 짖습니다: 멍멍!"

    def get_info(self):
        """개에 대한 정보를 반환하는 메서드"""
        return f"이름: {self.name}, 나이: {self.age}세"


# 객체 생성
my_dog = Dog("Buddy", 3)

# 메서드 호출
print(my_dog.bark())  # 개가 짖는 소리 출력
print(my_dog.get_info())  # 개의 정보 출력

코드 설명

위 코드는 객체지향 프로그래밍의 기본적인 예시입니다.

  • Dog 클래스는 개의 이름과 나이를 속성으로 가지며, bark 메서드와 get_info 메서드를 정의합니다.
  • __init__ 메서드는 클래스의 초기화 메서드로 객체가 생성될 때 자동으로 호출되어 속성 값을 설정합니다.
  • bark 메서드는 개가 짖는 소리를 반환하고, get_info 메서드는 개의 정보를 문자열 형식으로 반환합니다.
  • 마지막으로, my_dog 객체를 생성하고, 메서드를 호출하여 결과를 출력합니다.

연습 문제

1. Car 클래스를 정의하여 자동차의 브랜드, 모델, 연식을 속성으로 가지게 하고, 자동차 정보를 출력하는 메서드를 추가해 보세요.

2. Person 클래스를 정의하여 이름, 나이, 성별 속성을 가지며, 인사하는 메서드를 추가해 보세요. 객체 생성 후 인사 메서드를 호출해 보세요.

연습 문제 해답

# 1번 문제: Car 클래스 정의
class Car:
    def __init__(self, brand, model, year):
        self.brand = brand  # 브랜드 속성
        self.model = model  # 모델 속성
        self.year = year    # 연식 속성

    def get_info(self):
        """자동차 정보 반환"""
        return f"차종: {self.brand} {self.model}, 연식: {self.year}"

# 자동차 객체 생성
my_car = Car("현대", "소나타", 2022)
print(my_car.get_info())  # 자동차 정보 출력

# 2번 문제: Person 클래스 정의
class Person:
    def __init__(self, name, age, gender):
        self.name = name       # 이름 속성
        self.age = age         # 나이 속성
        self.gender = gender   # 성별 속성

    def greet(self):
        """인사하는 메서드"""
        return f"안녕하세요, 제 이름은 {self.name}입니다."

# 사람 객체 생성
person1 = Person("최지우", 28, "여성")
print(person1.greet())  # 인사 메서드 호출
### 설명 - **객체지향 프로그래밍(OOP)**의 기본 개념을 소개하며, 이 클래스와 객체를 활용한 예제를 통해 실습할 수 있도록 합니다. - **클래스**와 **객체**, **속성** 및 **메서드**의 구조를 이해하고, 이를 실제로 구현하는 방법을 배울 수 있습니다. - **연습 문제**를 통해 사용자가 직접 클래스와 메서드를 구성하여 객체를 정의하고 활용함으로써 실습 경험을 쌓을 수 있도록 설계하였습니다.

댓글 쓰기

0 댓글