반응형
Day 1: 클래스의 기본 개념
- 강의 내용:
- 클래스의 정의와 필요성
- 클래스와 객체의 개념
- 객체지향 프로그래밍의 장점
- 클래스 정의
- 클래스 정의 문법
- 객체 생성 및 사용
- 클래스의 정의와 필요성
- 실습:
- 기본 클래스 정의 및 객체 생성 예제 작성
# 클래스 정의
class Person:
pass
# 객체 생성
person1 = Person()
person2 = Person()
print(person1) # <__main__.Person object at 0x...>
print(person2) # <__main__.Person object at 0x...>
Day 2: 인스턴스 변수와 메서드
- 강의 내용:
- 인스턴스 변수
- 인스턴스 변수의 정의와 사용
- 인스턴스 변수 초기화
- 인스턴스 메서드
- 인스턴스 메서드 정의
- self 키워드의 의미
- 인스턴스 변수
- 실습:
- 인스턴스 변수와 메서드를 사용한 클래스 예제 작성
# 클래스 정의
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
# 객체 생성 및 사용
person1 = Person("Alice", 30)
person1.greet() # 'Hello, my name is Alice and I am 30 years old.'
person2 = Person("Bob", 25)
person2.greet() # 'Hello, my name is Bob and I am 25 years old.'
Day 3: 클래스 변수와 메서드
- 강의 내용:
- 클래스 변수
- 클래스 변수의 정의와 사용
- 클래스 변수와 인스턴스 변수의 차이
- 클래스 메서드
- 클래스 메서드 정의
- @classmethod 데코레이터
- 클래스 변수
- 실습:
- 클래스 변수와 메서드를 사용한 클래스 예제 작성
# 클래스 정의
class Person:
species = "Homo sapiens" # 클래스 변수
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
@classmethod
def describe_species(cls):
print(f"Humans are {cls.species}.")
# 객체 생성 및 사용
person1 = Person("Alice", 30)
person1.greet() # 'Hello, my name is Alice and I am 30 years old.'
person2 = Person("Bob", 25)
person2.greet() # 'Hello, my name is Bob and I am 25 years old.'
# 클래스 메서드 호출
Person.describe_species() # 'Humans are Homo sapiens.'
Day 4: 상속과 다형성
- 강의 내용:
- 상속의 개념
- 상속의 정의와 필요성
- 부모 클래스와 자식 클래스
- 다형성
- 메서드 오버라이딩
- 다형성의 개념과 사용
- 상속의 개념
- 실습:
- 상속과 다형성을 사용한 클래스 예제 작성
# 부모 클래스 정의
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 5: 다중 상속
- 강의 내용:
- 다중 상속의 개념
- 다중 상속의 정의와 사용
- 다중 상속의 장단점
- 다중 상속 사용 예제
- 다중 상속의 개념
- 실습:
- 다중 상속을 사용한 클래스 예제 작성
# 부모 클래스 정의
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 6: 특수 메서드와 연산자 오버로딩
- 강의 내용:
- 특수 메서드의 개념
- 특수 메서드의 정의와 사용
- __str__, __repr__, __add__ 등
- 연산자 오버로딩
- 연산자 오버로딩의 개념과 사용
- 특수 메서드를 사용한 연산자 오버로딩
- 특수 메서드의 개념
- 실습:
- 특수 메서드와 연산자 오버로딩 예제 작성
# 클래스 정의
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Vector({self.x}, {self.y})"
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
# 객체 생성 및 사용
v1 = Vector(2, 3)
v2 = Vector(4, 5)
print(v1) # 'Vector(2, 3)'
print(v2) # 'Vector(4, 5)'
v3 = v1 + v2
print(v3) # 'Vector(6, 8)'
Day 7: 객체지향 프로그래밍 종합 연습 및 프로젝트
- 강의 내용:
- 객체지향 프로그래밍 종합 연습 문제 풀이
- 다양한 클래스와 객체 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 객체지향 프로그래밍을 활용한 프로그램 구현 및 테스트
- 객체지향 프로그래밍 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 간단한 학생 관리 클래스 작성
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def __str__(self):
return f"Student({self.name}, {self.grade})"
student1 = Student("Alice", "A")
student2 = Student("Bob", "B")
print(student1) # 'Student(Alice, A)'
print(student2) # 'Student(Bob, B)'
# 연습 문제 2: 은행 계좌 클래스 작성 (입금, 출금 메서드 포함)
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
print(f"{amount}원이 입금되었습니다. 잔액: {self.balance}원")
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
print(f"{amount}원이 출금되었습니다. 잔액: {self.balance}원")
else:
print("잔액이 부족합니다.")
account = BankAccount("Alice")
account.deposit(1000)
account.withdraw(500)
account.withdraw(1000)
# 미니 프로젝트 예제: 도서 관리 시스템
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"Book({self.title}, {self.author})"
class Library:
def __init__(self):
self.books = []
def add_book(self, book):
self.books.append(book)
print(f"{book.title} by {book.author}이(가) 도서관에 추가되었습니다.")
def remove_book(self, book):
if book in self.books:
self.books.remove(book)
print(f"{book.title} by {book.author}이(가) 도서관에서 제거되었습니다.")
else:
print("도서를 찾을 수 없습니다.")
def list_books(self):
for book in self.books:
print(book
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 19: 객체지향 프로그래밍 - 상속 (0) | 2024.06.01 |
---|---|
[Python] Week 18: 객체지향 프로그래밍 - 메서드 (0) | 2024.06.01 |
[Python] Week 16: 패키지 (0) | 2024.06.01 |
[Python] Week 15: 모듈 (0) | 2024.06.01 |
[Python] Week 14: 예외 처리 (0) | 2024.06.01 |