가이드라인

캡슐화와 다형성, 객체지향 프로그래밍의 핵심 개념

캡슐화(Encapsulation)다형성(Polymorphism) 역시 객체지향 프로그래밍의 핵심 개념입니다.

이번 수업에서는 캡슐화와 다형성의 개념을 소개하고, 파이썬에서 어떻게 활용하는지 알아보겠습니다.


캡슐화란?

캡슐화는 객체의 상태를 외부에서 직접 접근하지 못하도록 보호하는 것을 뜻합니다.

객체 내부의 데이터는 외부에서 직접 접근할 수 없으며, 공개된 메서드를 통해서만 조작할 수 있습니다.

이를 통해 데이터 무결성(데이터의 정확성과 일관성)을 보장하고, 객체의 상태를 안전하게 유지합니다.

캡슐화 예시
class Car: def __init__(self, speed): self.__speed = speed # speed 속성을 비공개로 설정, __는 비공개 속성을 의미 def get_speed(self): return self.__speed # 캡슐화된 속성 반환 def set_speed(self, speed): if speed > 0: self.__speed = speed # 캡슐화된 속성 변경 my_car = Car(50) # 출력: 50 print(my_car.get_speed())

위 예제에서 __speed 속성은 캡슐화되어 비공개 상태이기 때문에 외부에서 직접 접근할 수 없습니다.

'__speed' 속성은 get_speedset_speed 메서드를 통해서만 조작 가능합니다.

my_car.__speed와 같이 속성에 직접 접근하면 오류가 발생하므로, 데이터의 무결성을 보장할 수 있습니다.


다형성이란?

다형성은 동일한 메서드가 여러 객체에서 다르게 동작할 수 있는 것을 뜻합니다.

이를 통해 코드의 유연성과 확장성이 크게 향상됩니다.

부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하는 메서드 오버라이딩은 다형성의 대표적인 예시입니다.

다형성 예시
class Animal: def speak(self): return "소리를 낸다" class Dog(Animal): def speak(self): return "멍멍" class Cat(Animal): def speak(self): return "야옹" animals = [Dog(), Cat()] for animal in animals: # Dog 클래스와 Cat 클래스에서 오버라이딩한 speak 메서드 호출 print(animal.speak()) # 출력: 다른 줄에 '멍멍'과 '야옹'이 출력됨

위 예제에서 Animal 클래스에 정의된 speak 메서드는 DogCat 클래스에서 각각 다르게 동작합니다.

이는 다형성을 통해 같은 메서드 호출이 객체에 따라 다른 결과를 반환할 수 있습니다.

Mission
0 / 1

객체지향 프로그래밍의 캡슐화에 대한 설명으로 옳은 것은 무엇인가요?

객체의 상태를 외부에서 직접 접근할 수 있도록 하는 것
객체의 메서드를 외부에서 변경할 수 있도록 하는 것
객체의 상태를 외부에서 직접 접근하지 못하도록 보호하는 것
동일한 메서드나 연산자가 여러 객체에서 다르게 동작할 수 있도록 하는 것

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행

실행 결과