OOP가 뭘까? 굉장히 중요하다던데
내가 지금껏 정리한 Python은 Procedural Programming이다.(Module/Class 제외)
Procedural Programming 이란?
-->변수선언, 자료구조선언, 함수선언 등을 하고 이것들을 사용
OOP란?
- A programming paradigm that relies on the concept of classes and objects
- Class --> 청사진 Blueprint , Object --> Instance들 in class
- ex) students.append("MARCUS") , students.clear()
- 즉, Class 다루는 것! 좀 더 Module화 된 Programming을 하자
- Combine a group of related variables( ATTRIBUTES ) and functions ( METHODS )
into a unit, which is called an object( ENCAPSULATION)
Four Principles of OOP
1. Encapsulation
2. Abstraction
3. Inheritance
4. Polymorphism
Encapsulation
- 서로 관련있는 정보들을(Attributes and Methods) 한 Object에 넣어라
- ex) 학생들 성적 계산해보기
- Procedural Programming(PP)의 경우 Function과 Variables가 분리되어 있다.
- OOP의 경우 Student Object를 만들어 버려서 그 안에 시험점수 관련 Var과 Func를 전부 넣었다.
- 중간에 function에 수정사항이 생겼다면?
- OOP Encapsulation --> Object 안에서 "self"를 이용해 간편한 수정이 가능!
Abstraction
- Class 안에 다양한 Attribute와 Method가 있을텐데, 사용자 입장에선 그 복잡한 것들을 다 알 필요가 없으므로 이것들은 숨기고 High Level Method만 보일 수 있도록 한다.
- 위의 경우에서 사용자는 get_total()만 알면 된다. hw, final 어쩌고 알 필요가 없음! 그저 Interface만 심플하다면 만사 OK
Inheritance
- 상속! Parent Class에서 data/behaviors를 상속해서 Child Class에 준다. --> 불필요한 코드생성 막아줌
- ex)
- 일반적으론, 부모Class는 자식Class를 여러 개 지원 가능 + 자식Class는 부모Class를 하나만!(경우에 따라 여러 부모 get도 가능은 하다)
Polymorphism(Many Forms)
- 같은 Method도 Object에 따라 다르게 동작할 수 있다.
- ex)
- Method 정의는 Member Class에 되지만 기능은 자식 Class에 따라 다르다.
- Object에 따라 method 기능을 다르게 하는 것을 PP로 한다면 --> If/elif/else 를 엄청 써야해서 불편..!
SW 협업을 위해선 OOP가 매우 매우 중요하다~
'SW 만학도 > Python' 카테고리의 다른 글
9-1 . Binary Search의 여러가지 Case 코딩해보기 (0) | 2024.03.17 |
---|---|
9. Computational Complexity & Searching (Big O with Search/Sort in Python) (2) | 2024.03.17 |
7. File I/O in Python (1) | 2024.03.15 |
6. Sets, Tuples, and Dictionaries (2) | 2024.03.15 |
5. Lists and Loops in Python (0) | 2024.03.14 |