OOP의 이해
OOP란, (Object-Oriented Programming)의 약자이며, 우리에게는 객체 지향이라고 알려져 있다.
객체(Object)
객체(Object)는 속성과 함수로 구성되어 있다.
예) Car라는 객체를 가지고 있다고 생각해보자.
-속성 : fuel, speed, steering wheel, coordinate...
-함수 : accelerate(), takeLeft(), takeRight()...
즉, 속성은 해당 객체의 상태를, 함수는 해당 객체의 동작을 나타낸다고 생각하면 쉽다.
또한, 객체의 특성은 다음과 같다.
- 객체는 다른 객체와 상호작용하여 목적을 달성한다.
- 예) 자동차와 사람의 객체를 만든다고 할 때, Person과 Car는 프로그램 내 각각의 객체지만, Person은 Car를 이용할 수 있다.
- 객체는 프로그램을 무언가를 구현할 때, 그 세계관 내부의 의미 있는 정보의 단위들이다.
OOP의 사용
다음과 같은 예시를 들 수 있다.
당신은 IoT기반의 첨단 커피숍 운영을 계획하고 있다. 이때, 운영에 대한 scope를 구현한다고 생각해보자.
이 경우에 대해서 다음의 로직을 그려볼 수 있다.

그리고 다음의 경우를 생각해볼 수 있다.
- 테이블, 장비(에어컨, 냉장고, 공기청정기 등), 상품, 재고관리, 계산대, 커피 만드는 로봇과 같은 것들이 객체로 표현할수 있는 단위로 쓸 수 있다.
- 추상화를 할 때는 실제 눈에 보이는 물리적인객체가 아닌, 추상적인 객체로 생각할 수 있다.
- 예) 냉장고(구체적인 요소 - 객체) ==> 현재 온도, 냉방, 용량 등(추상적인 요소 - 추상화)