2.1 Introdução à Abstração de Dados
Na seção 1.1.8, observamos que uma função usada como um elemento na criação de uma função mais complexa poderia ser considerada não apenas como uma coleção de operações particulares, mas também como uma abstração funcional. Ou seja, os detalhes de como a função foi implementada poderiam ser suprimidos, e a função particular em si poderia ser substituída por qualquer outra função com o mesmo comportamento geral. Em outras palavras, poderíamos fazer uma abstração que separaria a maneira como a função seria usada dos detalhes de como a função seria implementada em termos de funções mais primitivas. A noção análoga para dados compostos é chamada de abstração de dados. A abstração de dados é uma metodologia que nos permite isolar como um objeto de dados composto é usado dos detalhes de como ele é construído a partir de objetos de dados mais primitivos.
A ideia básica da abstração de dados é estruturar os programas que devem usar objetos de dados compostos de modo que eles operem em "dados abstratos". Ou seja, nossos programas devem usar dados de tal maneira que não façam suposições sobre os dados que não sejam estritamente necessárias para executar a tarefa em mãos. Ao mesmo tempo, uma representação de dados "concreta" é definida independentemente dos programas que usam os dados. A interface entre essas duas partes de nosso sistema será um conjunto de funções, chamadas seletores e construtores, que implementam os dados abstratos em termos da representação concreta. Para ilustrar essa técnica, consideraremos como projetar um conjunto de funções para manipular números racionais.