CS

추상화가 도대체 뭔데? (추상화, 추상자료형)

jinsang-2 2024. 8. 27. 19:41

추상화란?

  • 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
  • 즉, 복잡한 문제를 단순하게 만드는 것
  • 추상화의 반대말은 구체
  • 추상의 반대말은 구현이다.

추상화의 예

완벽하게 구체적인 상태

추상화를 거친 상태

추상화란!

  1. 핵심적인 요소만 추출해서 단순하게 만드는 것
  2. 복잡한 문제를 단순히 만드는
  3. 문제를 쉽게 해결하기 위해 핵심적인 요소만 뽑아내는 것
  4. 중요하거나 꼭 필요한 특징만을 추출하는 것

추상자료형(ADT-Abstract Data Type)

[추상화(abstraction)] 를 통해 정의한 자료형

  • 구체적인 기능의 완성 과정은 서술하지 않고 오로지 순수하게 기능이 무엇인지만 나열하는 것
  • 어떤 자료를 다루고, 어떤 연산이 필요한지 정의해 보는 것이다.
  • 기능으로만 정의한 개
  • 흐름을 생각할 때와 같이 구현에 집중할 필요가 없을 때 추상 자료형을 사용한다.

스택(stack)을 예로 들자면 LIFO를 구현하기 위해서
"새로운 요소를 넣어주는 삽입 기능 push(e) 와 가장 위에 요소를 뺄 수 있는 삭제 기능 pop() 이 있어야 하겠네"를 생각하면 됨.
구현 하려는 것이 아니고 기능만 생각해 보는 것이다. push, pop, isEmpty, isFull, peek, size 같은 기능들이 있어야 겠구만 ! 이런느낌