Tipo abstrato de dado
De Wikipedia, a enciclopédia encyclopedia
Na ciência da computação, um Tipo Abstrato de Dados (abreviado TAD) é um modelo matemático para tipos de dados; ou seja, na programação de computadores é um código que define e implementa um novo tipo de informação ou um novo tipo de objeto utilizado na linguagem de programação orientada a objetos,[1] que é definido pelo seu comportamento (semântico) do ponto de vista de um usuário, do dado, especificamente em termos de valores possíveis, operações possíveis no dado desse tipo, e o comportamento dessas operações. Esse modelo matemático contrasta com estrutura de dados, que são representações concretas de dado, e são o ponto de vista de um implementador, não de um usuário.
Formalmente, um TAD pode ser definido como uma “classe de objetos do qual comportamento lógico é definido por um conjunto de valores e um conjunto de operações”;[2] isso é análogo à uma estrutura algébrica na matemática. O que significa “comportamento” varia de autor para autor, com dois principais tipos de especificações formais para comportamento sendo especificação axiomática (algébrica) e um modelo abstrato;[3] esses correspondem à semântica axiomática e semântica operacional de uma máquina abstrata, respectivamente. Alguns autores também incluem a complexidade computacional (“custo”), ambos em termos de tempo (para computar operações) e espaço (para representar valores). Na prática, vários tipos de dados comuns não são TADs, como a abstração não é perfeita, e usuários tem que ser avisados de problemas como overflow aritmético que são causados pela representação. Por exemplo, inteiros são geralmente armazenados com valores de tamanho fixo (32-bit ou 64-bit números binários), e assim quando o valor máximo é excedido, ocorre overflow de inteiro.
TAD é um conceito teórico, na ciência da computação, usada para o design e análise de algoritmos, estrutura de dados, e sistemas de software, e não corresponde às funcionalidades específicas de linguagens de programação – Linguagens de programação convencionais não suportam diretamente TADs. Entretanto, algumas funcionalidades de linguagens correspondem à certos aspectos dos TADs, e são facilmente confundidas com os próprios TADs; isso inclui tipos abstratos, tipos de dados opacos, protocolos(interface), e programação por contrato. TADs foram propostos por Barbara Liskov e Stephen N. Zilles em 1974, como parte do desenvolvimento da linguagem CLU.[4]