반응형
Day 1: 다형성의 기본 개념
- 강의 내용:
- 다형성의 정의와 필요성
- 다형성의 개념과 장점
- 객체지향 프로그래밍에서 다형성의 역할
- 다형성의 구현
- 메서드 오버라이딩을 통한 다형성
- 다양한 객체의 동일한 인터페이스
- 다형성의 정의와 필요성
- 실습:
- 기본 다형성 예제 작성
# 부모 클래스 정의
class Animal:
def speak(self):
pass
# 자식 클래스 정의
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# 객체 생성 및 사용
animals = [Dog(), Cat()]
for animal in animals:
print(animal.speak()) # 'Woof!' 'Meow!'
Day 2: 메서드 오버라이딩과 다형성
- 강의 내용:
- 메서드 오버라이딩
- 부모 클래스의 메서드를 자식 클래스에서 재정의
- 다형성의 활용
- 메서드 오버라이딩을 통한 다형성 구현
- 메서드 오버라이딩
- 실습:
- 메서드 오버라이딩을 사용한 다형성 예제 작성
# 부모 클래스 정의
class Shape:
def area(self):
return 0
# 자식 클래스 정의
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
# 객체 생성 및 사용
shapes = [Rectangle(3, 4), Circle(5)]
for shape in shapes:
print(shape.area()) # 12, 78.5
Day 3: 인터페이스와 다형성
- 강의 내용:
- 인터페이스의 개념
- 인터페이스와 추상 클래스의 차이
- 인터페이스를 통한 다형성 구현
- 파이썬에서의 인터페이스 역할
- 인터페이스의 개념
- 실습:
- 인터페이스를 사용한 다형성 예제 작성
from abc import ABC, abstractmethod
# 추상 클래스 정의
class Vehicle(ABC):
@abstractmethod
def drive(self):
pass
# 자식 클래스 정의
class Car(Vehicle):
def drive(self):
return "Driving a car"
class Bike(Vehicle):
def drive(self):
return "Riding a bike"
# 객체 생성 및 사용
vehicles = [Car(), Bike()]
for vehicle in vehicles:
print(vehicle.drive()) # 'Driving a car', 'Riding a bike'
Day 4: 다형성과 연산자 오버로딩
- 강의 내용:
- 연산자 오버로딩의 개념
- 연산자 오버로딩을 통한 다형성 구현
- 특수 메서드를 사용한 연산자 오버로딩
- 다형성의 장점
- 연산자 오버로딩의 개념
- 실습:
- 연산자 오버로딩을 사용한 다형성 예제 작성
# 클래스 정의
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __str__(self):
return f"Vector({self.x}, {self.y})"
# 객체 생성 및 사용
v1 = Vector(2, 3)
v2 = Vector(4, 5)
v3 = v1 + v2
print(v3) # 'Vector(6, 8)'
Day 5: 다형성과 타입 검사
- 강의 내용:
- isinstance() 함수
- isinstance()를 사용한 타입 검사
- 다형성과 타입 검사 활용
- 타입 검사와 다형성의 조합
- isinstance() 함수
- 실습:
- isinstance()를 사용한 다형성 예제 작성
# 부모 클래스 정의
class Animal:
def speak(self):
pass
# 자식 클래스 정의
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# 객체 생성 및 사용
animals = [Dog(), Cat()]
for animal in animals:
if isinstance(animal, Dog):
print("This is a dog.")
elif isinstance(animal, Cat):
print("This is a cat.")
print(animal.speak()) # 'Woof!' 'Meow!'
Day 6: 다형성과 콜백 함수
- 강의 내용:
- 콜백 함수의 개념
- 콜백 함수를 사용한 다형성 구현
- 다형성과 콜백 함수 활용
- 콜백 함수의 개념
- 실습:
- 콜백 함수를 사용한 다형성 예제 작성
# 콜백 함수 정의
def execute_callback(callback):
print(callback())
# 클래스 정의
class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
# 객체 생성 및 사용
dog = Dog()
cat = Cat()
execute_callback(dog.speak) # 'Woof!'
execute_callback(cat.speak) # 'Meow!'
Day 7: 다형성 종합 연습 및 프로젝트
- 강의 내용:
- 다형성 종합 연습 문제 풀이
- 다양한 다형성 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 다형성을 활용한 프로그램 구현 및 테스트
- 다형성 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 다양한 도형 클래스를 작성하고, 면적을 계산하는 메서드 추가
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
shapes = [Rectangle(4, 5), Circle(3)]
for shape in shapes:
print(shape.area()) # 20, 28.26
# 연습 문제 2: 다양한 차량 클래스를 작성하고, 운전 방식을 정의하는 메서드 추가
class Vehicle(ABC):
@abstractmethod
def drive(self):
pass
class Car(Vehicle):
def drive(self):
return "Driving a car"
class Bike(Vehicle):
def drive(self):
return "Riding a bike"
vehicles = [Car(), Bike()]
for vehicle in vehicles:
print(vehicle.drive()) # 'Driving a car', 'Riding a bike'
# 미니 프로젝트 예제: 간단한 텍스트 편집기
class TextEditor:
def __init__(self):
self.text = ""
def add_text(self, new_text):
self.text += new_text
def display_text(self):
return self.text
class UpperCaseEditor(TextEditor):
def display_text(self):
return self.text.upper()
class LowerCaseEditor(TextEditor):
def display_text(self):
return self.text.lower()
editor = UpperCaseEditor()
editor.add_text("Hello, World!")
print(editor.display_text()) # 'HELLO, WORLD!'
editor = LowerCaseEditor()
editor.add_text("Hello, World!")
print(editor.display_text()) # 'hello, world!'
이 강의는 파이썬의 객체지향 프로그래밍에서 다형성을 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 22: 고급 문법 - 데코레이터 (0) | 2024.06.01 |
---|---|
[Python] Week 21: 고급 문법 - 이터레이터와 제너레이터 (0) | 2024.06.01 |
[Python] Week 19: 객체지향 프로그래밍 - 상속 (0) | 2024.06.01 |
[Python] Week 18: 객체지향 프로그래밍 - 메서드 (0) | 2024.06.01 |
[Python] (수정 필요)Week 17: 객체지향 프로그래밍 - 클래스와 객체 (0) | 2024.06.01 |