Python/수업

객체지향(Object Oriented Programming) 특강

끈끈 2023. 4. 28. 21:02

 

객체지향

  • 클래스
  • 다형성
  • 캡슐화
  • 상속
  • 추상화
  • 메시지 전달

 

객체지향 프로그래밍 구성요소
절차지향 vs 객체지향

 

클래스와 인스턴스

  • 클래스 : 붕어빵틀
  • 인스턴스 : 붕어빵

 

클래스 안에는 속성(attribute, property)메서드가 있다

 

괄호의 차이:

my_car.color : 속성
my_car.drive() : 메서드

 

# 자동차 클래스
class Car:
    # 클래스에서 속성을 만들면 인스턴스를 만들 필요 없이 사용 가능
    color = 'red'
    
    # 자동차 객체가 가질 속성 (모델명, 색상, 현재 속도)
    # 더블언더바(던더) # 만들 때 바로 무조건 실행되는 함수
    def __init__(self, value):
    	self.color = value
        
    # 자동차 객체가 가질 동작, 메서드 (전진, 후진, 가속, 감속)
    def drive(self):
    	print("부릉")
        
    
my_car1 = Car();
my_car2 = Car();
my_car2.color = 'blue'

print(my_car1.color) # red
print(my_car2.color) # blue

my_car1.drive() # 부릉

my_car = Car();
print(type(my_car)) # <class '__main__.Car'>

 

my_list = []
print(dir(my_list))

 

dir(my_list)

 


 

캡슐화 (Encapsulation)

  • 객체지향에서는 데이터와 그 데이터를 다루는 메서드들을 하나로 묶어 캡슐화 함
  • 캡슐화된 객체는 외부에서 직접적으로 접근할 수 없음
  • 메서드를 통해서만 데이터 조작 가능
  • 데이터의 보안성안정성을 높일 수 있음
  • getter / setter를 이용해 안전하게 접근하도록 하는 것이 좋다

 

상속

  • 이미 정의된 클래스에서 속성과 메서드를 물려받아 새로운 클래스를 생성하는 것
  • 코드 재사용성을 높일 수 있음
  • 계층적 구조를 만들 수 있음

 

Django

 

다형성

  • 부모 클래스의 메서드를 오버라이딩하여 각 동물 종류에 맞게 재구현
  • 동일한 메서드명을 갖는 메서드가 각 클래스에서 다르게 구현되는 것
  • 코드의 가독성유지보수성을 높여줌

 

'Python > 수업' 카테고리의 다른 글

itertools, collections  (2) 2023.05.29
파이썬 대패키지시대_패키지 의존성 관리  (6) 2023.04.23
파이썬의 코루틴  (2) 2023.04.23
프로세스와 스레드  (2) 2023.04.16
타입별 메서드의 종류  (0) 2023.04.16