-
[프로그래밍 언어] Python Class 객체 지향(Object Oriented)Python 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
'Python' 카테고리의 다른 글
[OOP] Binary Search Tree 자료구조 만들기 (0) 2023.03.20 [OOP] Linked List 자료구조 만들기 (0) 2023.03.19 [프로그래밍 언어] Python 기초 (0) 2023.03.16 [Python] Heapq 모듈로 힙(Heap) 구현하기 (0) 2022.10.20