O que é ADT? (Tipo De Dados Abstractos)

estou actualmente a estudar tipos de dados abstractos (ADT), mas não entendo o conceito de todo. Alguém me pode explicar o que é isto? Também o que é coleção, saco, e lista ADT? em termos simples?

Author: Paulo Tomé, 2012-04-22

14 answers

Tipo de dados abstratos (ADT) é um tipo de dados, onde apenas o comportamento é definido, mas não a implementação.

O oposto do TDA é o tipo de dados concretos (CDT), onde contém uma implementação do TDA.

Exemplos:
Array, List, Map, Queue, Set, Stack, Table, Tree, and Vector são ADTs. Cada um destes ADTs tem muitas implementações, ou seja, CDT. Container is a high-level ADT of above all ADTs.

Exemplo da vida Real:
O livro é Abstracto (a lista telefónica é uma implementação)

enter image description here

 54
Author: Premraj, 2017-02-12 09:50:52

O artigoAbstact data type Wikipedia tem muito a dizer.

Em ciência da computação, um tipo de dados abstrato (ADT) é um modelo matemático para uma determinada classe de estruturas de dados que têm um comportamento semelhante; ou, para alguns tipos de dados de uma ou mais linguagens de programação semelhantes semântica. Um tipo de dados abstrato é definido indiretamente, apenas pelas operações que podem ser realizadas sobre ele e por restrições matemáticas sobre os efeitos (e possivelmente custo) dessas operações.

Em termos um pouco mais concretos, você pode tomar Java List interface como um exemplo. A interface não define explicitamente nenhum comportamento porque não existe nenhuma classe concreta List. A interface define um conjunto de métodos de outras classes (e.g. ArrayList e LinkedList) deve implementar para ser considerado um List.

A colecção é outro tipo de dados abstractos. No caso de Java Collection interface, é ainda mais abstrato do que {[[0]}, desde

A interface estabelece estipulações adicionais, para além das especificadas na interface Collection, nos contratos da iterator, add, remove, equals, e métodos.

A bag Também é conhecido como a multiset.

Em matemática, a noção de multiset (ou saco) é uma generalização da noção de conjunto em que os membros são autorizados a aparecer mais de uma vez. Por exemplo, existe um único conjunto que contém os elementos a e b, e outros não, mas há muitos multisets com esta propriedade, como o multiset que contém duas cópias de um e um de b ou o multiset que contém três cópias de ambos a e b.

Em Java, Um saco seria uma coleção que implementa uma interface muito simples. Você só precisa ser capaz de adicionar itens a um saco, verificar o seu tamanho, e iterar sobre os itens que ele contém. Ver Saco.java for an example implementation (from Sedgewick & Wayne's Algorithms 4th edition).

 15
Author: Bill the Lizard, 2012-08-25 18:26:51

Um tipo de dados verdadeiramente abstracto descreve as propriedades das suas instâncias sem compromisso com a sua representação ou operações particulares. Por exemplo, o tipo abstrato (matemático) inteiro é um conjunto discreto, ilimitado e linearmente ordenado de instâncias. Um tipo concreto dá uma representação específica para instâncias e implementa um conjunto específico de operações.

 3
Author: Dee, 2016-10-25 21:10:45

ADT são um conjunto de valores de dados e operações associadas que são precisamente independentes de qualquer implementação. A força de um ADT é implementaion é escondida do Usuário.apenas a interface é declarada .Isso significa que o ADT é de várias maneiras

 2
Author: purushottam ROY, 2013-12-11 05:16:55

Simplesmente um tipo de dados abstrato não é nada além de um conjunto de operação e conjunto de dados é usado para armazenar alguns outros dados de forma eficiente na máquina. Não há necessidade de qualquer declaração de tipo perticular. Só requer uma implementação do ADT.

 1
Author: Ashish Jain, 2015-03-08 14:14:21

O tipo de dados abstractos é um módulo matemático que inclui dados com várias operações. Detalhes de implementação estão escondidos e é por isso que é chamado de Abstrato. A abstração permitiu que você organizasse a complexidade da tarefa, concentrando-se nas propriedades lógicas dos dados e ações.

 1
Author: user7189947, 2016-11-21 14:51:47

Em linguagens de programação, um tipo é alguns dados e as operações associadas. Um ADT é um definido pelo usuário agregação de dados e operações sobre estes dados e caracteriza-se por encapsulamento, os dados e as operações são representadas, ou na lista declarou, em uma única unidade sintática, e esconder informações, apenas as operações relevantes são visíveis para o usuário do ADT ADT interface, da mesma forma que um normal tipo de dados na programação idioma. É uma abstração porque a representação interna dos dados e a implementação das operações não interessam ao usuário do ADT.

 1
Author: Alcino Dall'Igna Jr., 2017-05-16 19:14:32

Antes de definir os tipos de dados abstractos , consideremos os diferentes vista de tipos de dados definidos pelo sistema. Todos sabemos que, por defeito, tudo tipos primitivos de dados (int, float, etc.) apoiar operações de base, tais como como adição e subtração. O sistema fornece as implementações para os tipos de dados primitivos. Para tipos de dados definidos pelo Utilizador, nós também é preciso definir as operações. A implementação destas operações pode seja feito quando quisermos realmente usá-los. Isso significa em geral, os tipos de dados definidos pelo Utilizador são definidos juntamente com as suas operações.

Para simplificar o processo de resolução de problemas, combinamos os dados estruturas com as suas operações e chamamos a isto "dados abstractos Tipo " . (ADT).

Geralmente utilizados O ADT inclui: lista ligada, pilhas, filas, árvore binária, Dicionários, conjuntos disjuntos( União e procura), tabelas de Hash e muitos outro.

Os ADT consistem em dois tipos:

1. Declaração dos dados.

2. Declaração de funcionamento.

 1
Author: coding_ninza, 2017-12-23 12:52:51
Para resolver problemas, combinamos a estrutura de dados com as suas operações. Um TSA é constituído por duas partes:
  1. Declaração dos dados.
  2. Declaração de funcionamento.

Os ADT geralmente usados são listas ligadas, pilhas, filas, filas prioritárias, árvores, etc. Ao definir ADTs, não precisamos nos preocupar com os desvios de implementação. Só aparecem quando queremos usá-los.

 0
Author: cammando, 2017-03-14 13:31:21

O tipo de dados abstratos é como o tipo de dados definido pelo usuário no qual podemos executar funções sem saber o que há dentro do tipo de dados e como as operações são realizadas neles . Como a informação não é exposta a sua abstração. exemplo. Lista, Matriz, Pilha, Fila. Na pilha podemos executar funções como Push, Pop, mas não temos certeza de como está sendo implementado por trás das cortinas.

 0
Author: Ankit garg, 2017-05-31 04:07:24

ADT é um conjunto de objetos e operações, Não onde nas definições de um ADT existe qualquer menção de como o conjunto de operações é implementado. Programadores que usam coleções só precisam saber como instanciar e acessar dados de alguma forma pré-determinada, sem preocupações com os detalhes das implementações de coleções. Em outras palavras, do ponto de vista de um usuário, uma coleção é uma abstração, e por esta razão, na ciência da computação, algumas coleções são referidas como abstratas. tipos de dados (ADTs). O Usuário só se preocupa em aprender sua interface, ou o conjunto de operações que executa...mais

 0
Author: Muyide Ibukun, 2017-11-26 13:08:52

Notação do tipo de dados abstractos(TSA))

Um tipo de dados abstracto pode ser definido como um modelo matemático com um colecção de operações definidas nele. Um exemplo simples é o conjunto de inteiros juntamente com as operações da União, intersecção definida no set.

Os de ADT são generalizações do tipo de dados primitivos (inteiro, char etc) e encapsulam um tipo de dados no sentido de que a definição do tipo e tudo operações nesse tipo localizadas numa secção do programa. São tratados como um tipo de dados primitivo fora do secção em que são definidos o ADT e as suas operações.

Uma implementação de um ADT é a tradução em declarações de uma linguagem de programação da declaração que define uma variável para seja desse ADT , mais um procedimento nessa língua para cada funcionamento desse ADT . A implementação do TDA escolhe a estrutura de dados para representar o ADT .

Uma ferramenta útil para especificar as propriedades lógicas do tipo de dados é o tipo de dados abstratos. Fundamentalmente, um tipo de dados é uma coleção de valores e um conjunto de operações sobre esses valores. Esta colecção e essas operações formam uma construção matemática que pode ser implementada usando uma estrutura de dados específica de hardware e software. Termo "tipo de dados abstractos" refere-se ao conceito matemático básico que define o tipo de dados.

Na definição de um tipo de dados abstracto como conceito matemático, não somos preocupado com a eficácia espacial ou temporal. Trata-se de uma implementação. problema. Na prática, a desfinização de ADT não está relacionada com execução pormenorizada. Pode mesmo não ser possível implementar um determinado ADT numa determinada peça de hardware ou usando um sistema de software particular. Por exemplo, já vimos que uma ADT inteiro é não universalmente implementáveis.

Para ilustrar o conceito de um ADT {[5] } e o meu método de especificação, considere o ADT racional que corresponde ao conceito de um número racional. Um número racional é um número que pode ser expresso como o quociente de dois inteiros. As operações em números racionais que, definimos são a criação de um número racional from two integers, addition, multiplication and testing for equality. A seguir uma especificação inicial deste ADT .

                  /* Value defination */

abstract typedef <integer, integer> RATIONAL;
condition RATIONAL [1]!=0;

                 /*Operator defination*/

abstract RATIONAL makerational (a,b)
int a,b;
preconditon b!=0;
postcondition makerational [0] =a;
              makerational [1] =b;
abstract RATIONAL add [a,b]
RATIONAL a,b;
postcondition add[1] = = a[1] * b[1]
              add[0] = a[0]*b[1]+b[0]*a[1]
abstract RATIONAL mult [a, b]
RATIONAL a,b;
postcondition mult[0] = = a[0]*b[a]
              mult[1] = = a[1]*b[1]
abstract equal (a,b)
RATIONAL a,b;
postcondition equal = = |a[0] * b[1] = = b[0] * a[1];

O ADT é constituído por duas partes: -

1) Definição do valor

2) Definição da operação

1) Definição Do Valor: -

A definição do valor define a colecção de valores para o TSA e é constituído por duas partes:

1) Cláusula De Definição

2) Cláusula De Condição

Por exemplo, o a definição de valor para o ADT racional afirma que: um valor racional consiste em dois inteiros, o segundo dos quais não é igual a 0.

A palavra-chave abstract typedef introduz uma definição de valores e a a condição de palavra-chave é usada para especificar quaisquer condições no novo tipo de dados definido. Nesta definição, a condição especifica que: o denominador pode não ser 0. A cláusula de definição é necessária, mas a a condição pode não ser necessária para todos ADT .

2) Definição Do Operador: -

Cada operador é definido como uma junção abstracta com três partes.

1)cabeçalho

2)Condições Prévias Facultativas

3)Pós-Condições Opcionais

Por exemplo, a definição de operador do ADT racional inclui o operações de criação (makerational), adição (add) e multiplication (mult) as well as a test for equality (equal). Vamos considere a especificação para a multiplicação primeiro, uma vez que, é o simplificado. Contém um cabeçalho e pós-condições, mas não pré-condições.

abstract RATIONAL mult [a,b]
RATIONAL a,b;
postcondition mult[0] = a[0]*b[0]
              mult[1] = a[1]*b[1]

O cabeçalho desta definição são as duas primeiras linhas, que são apenas como um cabeçalho de função C. A palavra-chave abstrata indica que é Não uma função C, mas uma definição de operador ADT.

A pós-condição especifica, o que a operação faz. Em pós-condição, o nome da função (neste caso, mult) é utilizado indicar o resultado de uma operação. Assim, mult [0] representa numerador do resultado e mult 1 representa o denominador do resultado. Isto é, Especifica, que condições se tornam verdadeiras após o a operação é executada. Neste exemplo a pós-condição especifica que o neumerador do resultado de uma multiplicação racional é igual produto inteiro dos numeradores das duas entradas e do denominador é igual a um produto einteger de dois denominador.

Lista

Em Ciência da computação, uma lista ou sequência é um tipo de dados abstracto que representa um número contável de valores ordenados, em que o mesmo valor pode ocorrer mais de uma vez. Uma instância de uma lista é um computador representação do conceito matemático de uma sequência finita; (potencialmente) analógico infinito de uma lista é um fluxo. As listas são uma base exemplo de contentores, uma vez que contêm outros valores. Se o mesmo valor ocorre múltiplo vezes, cada ocorrência é considerada um item distinto

A lista de nomes também é usada para várias estruturas de dados concretas que pode ser usado para implementar listas abstratas, especialmente listas vinculadas.

enter image description here

Imagem de uma lista

Saco

Um saco é uma colecção de objectos, onde pode continuar a adicionar objectos a o saco, mas você não pode removê-los uma vez adicionado ao saco. Então com um estrutura de dados de saco, você pode coletar todos os objectos, e depois iterar através deles. Você vai sacudir normalmente quando você programar em Java.

Bag

Imagem de um saco

Colecção

Uma colecção no sentido Java refere-se a qualquer classe que implemente a Interface de recolha. Uma coleção em um sentido genérico é apenas um grupo de objectos.

enter image description here

Imagem das colecções

 0
Author: coding_ninza, 2017-12-23 11:28:20

O tipo de dados abstractos é a recolha de valores e qualquer tipo de operação sobre estes valores torna-o tipo de dados abstractos por exemplo: String uma vez que é um tipo de dados não primitivo, podemos incluí-lo em tipos de dados abstratos

 0
Author: Huwaiza Tahir, 2018-01-11 08:32:20

Em uma palavra simples: um tipo de dados abstrato é uma coleção de dados e operações que trabalham sobre esses dados. As operações descrevem os dados para o resto do programa e permitem que o resto do programa altere os dados. A palavra "dados" em "Tipo de dados abstratos" é usada vagamente. Um ADT pode ser uma janela gráfica com todas as operações que o afetam, um arquivo e operações de arquivo, uma tabela de taxas de seguro e as operações sobre ele, ou algo mais.

de código completo 2 Livro

 0
Author: Alireza Rahmani, 2018-06-01 17:37:51