Python

[프로그래밍 언어] Python Class 객체 지향(Object Oriented)

SCodaily 2023. 3. 19. 20:36

객체지향 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