추상화(abstract)란 뭘까?

추상화란 뭘까..
일단 나는 아래와 같이 생각했다.

예시가 뭐가있을까? 일상생활에서도 많다.
예를들면..냄비를 생각해보자

냄비의 역할은

이다.
저 세개의 규칙을 통해서 라면도 끓일 수 있고, 행주도 삶을 수 있고, 밥도 지을 수 있다. 심지어 호빵도 찔 수 있다.
그리고 우리는 냄비가 '어떻게' 가열이 가능한건지 몰라도 쉽게 여러 요리를 할 수 있다.

그럼 추상화를 왜할까?

추상화 === 공통 기능 뽑아내기?!

하지만 이렇게되면..

라고 했을 때 이에 맞춰서 추상화된 냄비를 만들것이다. 그런데 만약..

요구사항 2번이 "근데 이제는 잡곡밥도 지을 수 있게 해주세요!!" 라고 한다면 어떨까?
그러면 추상화된 냄비에 기능을 덧대거나..하는 과정이 반복됨. 설계 시에 이런 것들을 모두 예측할 수도 없다.

세부 규칙들에서 추상적인걸 뽑지 말고, 추상적인걸 먼저 떠올려보기