반응형
Day 1: 상속의 기본 개념
- 강의 내용:
- 상속의 정의와 필요성
- 상속의 개념과 장점
- 코드 재사용성과 유지보수성 향상
- 기본 상속 구조
- 부모 클래스와 자식 클래스
- 기본 상속 문법
- 상속의 정의와 필요성
- 실습:
- 기본 상속 예제 작성
# 부모 클래스 정의
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
# 자식 클래스 정의
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
# 객체 생성 및 사용
dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak()) # 'Buddy says Woof!'
print(cat.speak()) # 'Whiskers says Meow!'
Day 2: 부모 클래스 호출
- 강의 내용:
- 부모 클래스 메서드 호출
- super() 함수 사용
- 부모 클래스의 초기화 메서드 호출
- 부모 클래스의 메서드 오버라이딩
- 부모 클래스 메서드 호출
- 실습:
- super() 함수를 사용한 예제 작성
# 부모 클래스 정의
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
# 자식 클래스 정의
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def speak(self):
return f"{self.name} the {self.breed} says Woof!"
# 객체 생성 및 사용
dog = Dog("Buddy", "Golden Retriever")
print(dog.speak()) # 'Buddy the Golden Retriever says Woof!'
Day 3: 메서드 오버라이딩
- 강의 내용:
- 메서드 오버라이딩의 개념
- 부모 클래스의 메서드를 자식 클래스에서 재정의
- 메서드 오버라이딩의 필요성과 사용 예제
- 메서드 오버라이딩의 개념
- 실습:
- 메서드 오버라이딩을 사용하는 클래스 예제 작성
# 부모 클래스 정의
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
# 객체 생성 및 사용
rectangle = Rectangle(5, 10)
print(rectangle.area()) # 50
Day 4: 다중 상속
- 강의 내용:
- 다중 상속의 개념
- 다중 상속의 정의와 사용
- 다중 상속의 장단점
- 다중 상속 사용 예제
- 다중 상속의 개념
- 실습:
- 다중 상속을 사용하는 클래스 예제 작성
# 부모 클래스 정의
class Flyer:
def fly(self):
return "Flying high in the sky!"
class Swimmer:
def swim(self):
return "Swimming deep in the sea!"
# 자식 클래스 정의 (다중 상속)
class FlyingFish(Flyer, Swimmer):
pass
# 객체 생성 및 사용
flying_fish = FlyingFish()
print(flying_fish.fly()) # 'Flying high in the sky!'
print(flying_fish.swim()) # 'Swimming deep in the sea!'
Day 5: 다형성과 추상 클래스
- 강의 내용:
- 다형성의 개념
- 다형성의 정의와 필요성
- 동일한 인터페이스의 다양한 구현
- 추상 클래스
- abc 모듈을 사용한 추상 클래스 정의
- @abstractmethod 데코레이터
- 다형성의 개념
- 실습:
- 다형성과 추상 클래스를 사용하는 예제 작성
from abc import ABC, abstractmethod
# 추상 클래스 정의
class Animal(ABC):
@abstractmethod
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 6: 상속과 구성
- 강의 내용:
- 상속과 구성의 차이
- 상속의 장점과 단점
- 구성의 정의와 사용
- 상속과 구성의 사용 예제
- 상속과 구성의 차이
- 실습:
- 상속과 구성을 사용하는 클래스 예제 작성
# 상속 예제
class Engine:
def start(self):
return "Engine started"
class Car(Engine):
def drive(self):
return "Car is driving"
car = Car()
print(car.start()) # 'Engine started'
print(car.drive()) # 'Car is driving'
# 구성 예제
class Engine:
def start(self):
return "Engine started"
class Car:
def __init__(self, engine):
self.engine = engine
def drive(self):
return f"{self.engine.start()} and car is driving"
engine = Engine()
car = Car(engine)
print(car.drive()) # 'Engine started and car is driving'
Day 7: 상속 종합 연습 및 프로젝트
- 강의 내용:
- 상속 종합 연습 문제 풀이
- 다양한 상속 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 상속을 활용한 프로그램 구현 및 테스트
- 상속 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 도형 클래스를 작성하고, 면적과 둘레를 계산하는 메서드 추가 (상속 사용)
class Shape:
def area(self):
return 0
def perimeter(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
def perimeter(self):
return 2 * (self.width + self.height)
rect = Rectangle(4, 5)
print(f"Area: {rect.area()}") # Area: 20
print(f"Perimeter: {rect.perimeter()}") # Perimeter: 18
# 연습 문제 2: 직원 관리 시스템 클래스 작성 (상속 사용)
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
def get_details(self):
return f"Name: {self.name}, Salary: {self.salary}"
class Manager(Employee):
def __init__(self, name, salary, department):
super().__init__(name, salary)
self.department = department
def get_details(self):
return f"Name: {self.name}, Salary: {self.salary}, Department: {self.department}"
emp = Employee("Alice", 50000)
mgr = Manager("Bob", 70000, "IT")
print(emp.get_details()) # 'Name: Alice, Salary: 50000'
print(mgr.get_details()) # 'Name: Bob, Salary: 70000, Department: IT'
# 미니 프로젝트 예제: 차량 관리 시스템
class Vehicle:
def __init__(self, make, model):
self.make = make
self.model = model
def get_info(self):
return f"Make: {self.make}, Model: {self.model}"
class Car(Vehicle):
def __init__(self, make, model, num_doors):
super().__init__(make, model)
self.num_doors = num_doors
def get_info(self):
return f"Make: {self.make}, Model: {self.model}, Doors: {self.num_doors}"
class Truck(Vehicle):
def __init__(self, make, model, payload_capacity):
super().__init__(make, model)
self.payload_capacity = payload_capacity
def get_info(self):
return f"Make: {self.make}, Model: {self.model}, Payload Capacity: {self.payload_capacity} kg"
car = Car("Toyota", "Corolla", 4)
truck = Truck("Ford", "F-150", 1200)
print(car.get_info()) # 'Make: Toyota, Model: Corolla, Doors: 4'
print(truck.get_info()) # 'Make: Ford, Model: F-150, Payload Capacity: 1200 kg'
이 강의는 파이썬의 객체지향 프로그래밍에서 상속을 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 21: 고급 문법 - 이터레이터와 제너레이터 (0) | 2024.06.01 |
---|---|
[Python] Week 20: 객체지향 프로그래밍 - 다형성 (0) | 2024.06.01 |
[Python] Week 18: 객체지향 프로그래밍 - 메서드 (0) | 2024.06.01 |
[Python] (수정 필요)Week 17: 객체지향 프로그래밍 - 클래스와 객체 (0) | 2024.06.01 |
[Python] Week 16: 패키지 (0) | 2024.06.01 |