인간은 스스로 해결하기 어렵고 복잡한 문제를 풀기 위해 컴퓨터를 만들었다. 컴퓨터는 이러한 문제를 처리할 때, 인간의 뇌 기능 중 하나인 추상화를 이용한다.
우리가 친구를 기억하는 방식을 생각해 보자. 길을 가다가 같은 과 친구인 철수를 보고 손을 흔들었다면, 우리 뇌는 철수를 기억(인식)해 낸 것이다. 철수를 기억하기 위해 철수에 대한 모든 정보를 구체적이고 세세하게 저장하기는 어렵다. 그 대신 철수를 다른 사람과 구별할 수 있는 철수만의 특징을 찾아서 기억한다.([그림 1-23]). 이렇게 자세하고 복잡한 것 대신 필수적이고 중요한 특징만 골라서 단순화시키는 작업이 추상화 작업이다.
[그림 1-23] 뇌의 추상화 기능
컴퓨터에서 문제를 해결할 때도 크고 복잡한 문제에 추상화 작업을 적용하여 문제를 단순화시키면, 문제를 해결하는 방법을 쉽게 찾을 수 있다. 이러한 자료 추상화 작업은 이미 알고 있는 잘 정의된 기본 개념을 이용하여 표현한다. 자료 추상화에 이용하는 기본 개념에는 자료, 연산, 자료형이 있다.
자료형에는 프로그래밍 언어에서 정의하여 제공하는 시스템 정의 자료형과 사용자가 정의하여 쓰는 사용자 정의 자료형이 있다. 사용자 정의 자료형은 사용자가 필요에 따라 시스템 정의 자료형이나 기존에 정의해 놓은 다른 사용자 정의 자료형을 이용하여 정의한 것이다. 자료형을 정의하려면 구체적으로 구현하기 전에 자료형에 대한 자료의 특성, 연산자, 연산자가 무엇을 수행하는지 등을 논리적으로 정의해야 한다. 이렇게 추상화하여 정의한 자료형을 추상 자료형이라고 한다. 추상 자료형은 구체적인 구현을 포함하지 않기 때문에 문제 해결 방법인 알고리즘 개발이 훨씬 단순해진다. 그리고 원하는 프로그래밍 언어를 사용하여 프로그램으로 구체화하여 실행한다.
[그림 1-24]
추상화는 이해를 위해 '무엇인지를 논리적으로 정의하는 것'이고, 구체화는 사용을 위해 '어떻게 할지' 를 실제적으로 표현하는 것이다.
우리나라 속담에 '귀에 걸면 귀걸이, 코에 걸면 코걸이'라는 말이 있다. 같은 사물이라도 어떻게 쓰느냐에 따라 용도가 달라진다는 뜻이다. 추상화의 구체화를 갠며으로 접근해 보면, '고리'는 추상화된 기본 틀이고, 이 기본 틀을 용도에 맞게 귀걸이나 코걸이로 실제 사용하는 것이 구체화에 해당한다.
[그림 1-25] 추상화의 구체화의 예
자료의 연산에서 추상화와 구체화의 관계는 [표 1-8]과 같다.
[표 1-8] 자료와 연산의 추상화와 구체화