[프로그래밍 언어] Python Class 객체 지향(Object Oriented)
객체지향 VS 절차지향
- 절차 지향 ( Procedural Programming ) -> C언어
Top Down 방식 ( 순차적인 처리 )
프로그램 전체가 유기적으로 연결
장점 : 실행속도가 빠름
단점 : 유지보수가 어려움, 디버깅이 어려움
- 객체 지향 ( Object Oriented Programming ) -> C++, Java, Python
실제 세계를 모델링하여 개발
속성(Attribution)과 행동(Method)로 이루어짐
3대 특성
1. 추상화 : 공통성과 본질을 모아 추출
2. 상속 : 상위 클래스의 속성과 method를 재사용할 수 있음
3. 다형성 : 하나의 객체가 다양한 속성과 method를 가질 수 있음
4. 캡슐화 : 연관된 속성과 기능을 하나의 캡슐로 만들어 외부로부터 데이터 보호 ( Data Protection, Data Hiding )
장점 : 코드의 재활용성, 디버깅 쉬움
단점 : 처리속도가 느림, 설계에 시간 소요
- 객체 지향 용어 정리
Ex) Cookie
1. Class : Cookie 객체를 만들기 위한 과자 틀
2. 객체 ( Object ) : 과자 틀에 의해 만들어진 과자
3. 인스턴스 ( Instance )
ex) a = Cookie() -> a는 객체, a는 Cookie의 인스턴스
Python 객체 지향 ( Class )
Ex) 계산기 ( Calculator )
1. Class 생성
Class Calculator:
2. 생성자 ( __init__)
생성자 : 객체가 생성될 때 자동으로 호출되는 Method
Class Calculator:
def __init__(self):
self.result = 0
result -> Instance의 속성
3. 메서드 정의 ( Class의 주요 기능, 함수 )
import sys
input = sys.stdin.readlines
class Calculator:
def __init__(self, num):
self.result = num
def add(self, num):
self.result += num
return self.result
def sub(self, num):
self.result -= num
return self.result
def mul(self, num):
self.result *= num
return self.result
def div(self, num):
self.result /= num
return self.result
Cal1 = Calculator(0)
print(Cal1.add(10))
# 출력 : 10
print(Cal1.sub(5))
# 출력 : 5
print(Cal1.mul(3))
# 출력 : 15
print(Cal1.div(5))
# 출력 : 3.0