캡슐화와 다형성, 객체지향 프로그래밍의 핵심 개념
캡슐화(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_speed
와 set_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
메서드는 Dog
와 Cat
클래스에서 각각 다르게 동작합니다.
이는 다형성을 통해 같은 메서드 호출이 객체에 따라 다른 결과를 반환할 수 있습니다.
객체지향 프로그래밍의 캡슐화
에 대한 설명으로 옳은 것은 무엇인가요?
객체의 상태를 외부에서 직접 접근할 수 있도록 하는 것
객체의 메서드를 외부에서 변경할 수 있도록 하는 것
객체의 상태를 외부에서 직접 접근하지 못하도록 보호하는 것
동일한 메서드나 연산자가 여러 객체에서 다르게 동작할 수 있도록 하는 것
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과