1. OOP
- Object Oriented Programming ↔ C언어 (절차지향; 함수 기준)
- 객체의 기준에서 프로그래밍 ; 객체들의 유기적인 관계
- 객체란? - 어떠한 속성값과 행동을 가지고 있는 데이터 (숫자, 문자, 함수)
- 특정 객체를 컴퓨터라는 도구에 인식시키는 것
- Data-Driven, 컴퓨터하드웨어성능, 데이터양 증가에 따라 OOP 활동도 증가
- 실제로 머릿속에서 떠올릴 수 있는 것을 프로그래밍하는 것
- 기능별로 객체가 효율적으로 (재사용가능하도록) 분리되어야 한다.
- 제대로 하기 위해서는 재사용 가능한 클래스, 메소드(기능) 설계가 중요

캡슐화
- 내부 속성(변수)과 함수를 하나로 묶어서 클래스로 선언하는 일반적인 개념
- 객체 및 소스코드 구현에 대한 상세정보는 분리 됨
- 디버깅에 편리
- 소스코드의 목적을 알기 쉽다
- 캡슐화 형태로 코드를 작성하지 않으면 특정 기능(함수, 변수)에 직접 접근해야 함

ex)
class Student:
def __init__(self, name, number):
self._name = name
self._number = number
def get_name(self):
return self._name
def set_name(self, name):
self._name = name
def get_number(self):
return self._number
def set_number(self, number):
self._number = number
student = Student("민지", 13)
print(student.get_name())
print(student.get_number())
- 변수에 직접적으로 접근이 힘듦
- getter 나 setter와 같은 함수를 이용하여 접근
상속과 포함 (Inheritance & Composition)
- 상속 - 상위 클래스의 모든 기능 (함수, 변수)을 재사용 할 수 있음
- 포함 - 다른 클래스의 일부 기능(함수) 만을 재사용한다.
