Abstract data type vs-Datentyp vs Datenstruktur, mit Bezug auf Objekt-orientierte Programmierung
Es ist mein Verständnis, dass eine Daten-Struktur ist im wesentlichen eine Blaupause, die alle Informationen enthält, die erforderlich sind, um ein Endprodukt entsprechend der Spezifikation, und ein Datentyp ist eine physikalische Umsetzung oder Realisierung, das design (sehr ähnlich wie der Unterschied zwischen einem Genotyp und Phänotyp, von der Biologie).
Wenn es um Objekt-orientierte orientierte Programmierung, wäre es korrekt zu sagen, dass ein abstrakte Klasse oder Schnittstelle ist eine Datenstruktur, denn es enthält einen Satz von Werten und Verhaltensweisen erklärt, und dass ein Klasse, die implementiert, dass die abstrakte Klasse oder das interface ist ein Datentyp, denn es ist eine konkrete manifestation dieser Verhaltensweisen?
Wenn dies der Fall ist, was ist dann der Unterschied zwischen einem abstrakten Datentyp (ADT) und eine Daten Typ? Sind Sie wirklich Verschieden, oder ist ADT nur umgangssprachlich verkürzt zu 'Datentyp'?
Ich Frage das, weil es mir schien, dass diese Begriffe Häufig Synonym verwendet im Gespräch, und es machte mich Frage mich, wenn mein Verständnis falsch war.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ziemlich neu in der Beantwortung auf stackoverflow und zu dieser Art von Datenstruktur vs-Datentypen Diskussion, aber hoffentlich hilft. Diese links haben viel für mich getan, zusätzlich zu dem, was ich gelehrt habe:
Gibt es einen Unterschied zwischen "Daten-Struktur" und "Daten-Typ"?
Erklären Sie den Unterschied zwischen einem Daten *Struktur* und Daten *Typ*
http://cs.lmu.edu/~ray/notes/dtds/
Zunächst werde ich definieren, meine Verwendung des Wortes "implementation", da es scheint, ich könnte es auch etwas anders, als Sie sind. Ich definiere die Umsetzung wie die Umsetzung von Dateien in C++. Diese Umsetzung enthält den Quellcode für die, wie einige interface funktioniert. Zum Beispiel die Implementierung einer einfach verketteten Liste ist eine Reihe von Knoten, die jeweils Daten enthalten, beginnend mit einem Knoten, der verweist auf den nächsten Knoten, bis der Letzte Knoten Punkte zu einer Art null. In diesem Sinne, ich kann nicht ganz sagen, dass ein Datentyp ist eine physikalische Umsetzung der Daten in einer Datenstruktur. Eine vereinfachte version ist, dass eine Daten-Struktur ist tatsächlich die physische Umsetzung von einem oder mehreren Datentypen. Zum Beispiel, ein stack ist ein Datentyp, während ein LinkedStack ist eine Datenstruktur implementiert einen stack. Obwohl ein Datentyp darstellen kann, alle möglichen Instanzen einer Datenstruktur, die wie beschrieben durch die links oben, nicht alle Datentypen müssen. Zum Beispiel, ein int ist ein Datentyp, aber es ist nicht gerade die beste Idee zu sagen, es ist eine Daten-Struktur.
Zusammenzufassen, die jeder, bitte lassen Sie mich gehen Sie in der Reihenfolge der Datentypen, abstrakte Datentypen, und dann werden die Daten-Strukturen.
Daten-Typen oder Typen, für kurze klassifizieren Sie die Daten nach Ihren Werten und Operationen. Zum Beispiel, wenn Sie die Daten, 42, 42 ein int oder ein string? Wenn es ein int ist, was int ist es (was seinen Wert)? Ist es positiv oder negativ? Welche Arten von Operationen gibt es? Kann ich Teile mit ihm? In diesem Sinne, Daten-Typen hängt rein von Ihrem äußeren Verhalten.
Nun einige Datentypen möglicherweise nicht geben Sie jede Art von Umsetzung und diese Daten Typen werden als abstrakte Datentypen. Im Grunde eine Daten-Typ ist ein abstrakter Datentyp, wenn der Benutzer keinen Zugriff auf noch kümmern, Zugang zu, wie sich die Werte und durchgeführt werden. Beispielsweise int-Werte sind abstrakte Daten-Typen, da ein Programmierer nicht wissen muss und vielleicht nicht interessieren, zu wissen, wie mit int-Werten arbeiten oder wie mit int-Werten Hinzugefügt werden. Doch, sagte der Programmierer noch arbeiten können mit ints, hinzufügen Weg zu seinem/Ihrem Inhalt. Benutzer-Daten-Typen, die nicht offenbaren, seine Umsetzung wäre auch abstrakte Datentypen. Weil dieser, viele Datentypen abstrakte Datentypen. Darüber hinaus abstrakte Datentypen modellieren können ähnliche Daten Typen und Daten Strukturen und umgesetzt werden, indem bestimmte Daten-Typen und Daten Strukturen, wie die links oben beschreiben.
Schließlich Datenstrukturen werden Möglichkeiten zur effizienten Speicherung von Daten, und Sie sind alle über den Implementierungen. Zum Beispiel, eine einfach verknüpfte Liste und eine doppelt verkettete Liste sind verschiedene Daten-Strukturen, weil Sie haben unterschiedliche Implementierungen. Einfach verkettete Listen, die nur vorwärts in der Erwägung, dass doppelt verknüpfte Listen vorwärts und rückwärts gehen. Ich beschrieb die Umsetzung für einfach verknüpfte Listen oben, während kurz eine doppelt verkettete Liste Implementierung ist das gleiche wie eine einfach verkettete Liste ist die Umsetzung, sondern jeder Knoten hätte auch einen Zeiger zu jedem vorherigen Knoten zu ermöglichen, die doppelt verknüpfte Liste, um rückwärts zu gehen. Der Kern von Datenstrukturen ist, dass die Umsetzung (wie die Daten organisiert/abgelegt), der eine Datenstruktur ist, wie es ist, zu unterscheiden.
Wenn Sie möchten ein Beispiel für die Effizienz doppelt verkettete Listen haben über einfach verknüpfte Listen, diese links sind nett:
Wann ist eine doppelt verkettete Liste effizienter als einzeln verkettete Liste?
https://social.msdn.microsoft.com/Forums/vstudio/en-US/270bebdb-9032-4fc1-97c6-bc017d7e0a45/when-to-use-single-linked-list-and-when-to-use-double-linked-list?forum=csharpgeneral
Ansonsten hoffe, ich war Ihnen von nutzen und Glück.
Abstrakten Datentyp
mathematical model
.Datenstruktur
Klasse-Ebene die Umsetzung des Vertrages definiert einen abstrakten Datentyp.
Datenstrukturen existiert in der form des Codes, das aus der Klassendefinition.
Daten Typ
Konkrete Instanz einer Klasse
Daten-Typen gibt es in der form der Objekte, die aus Klassen, die Sie definiert.
Beispiele
Eine Priority Queue ist ein abstrakter Datentyp, die umgesetzt werden können, mit einem Binären Heap-Datenstruktur.
Einer Liste ist ein abstrakter Datentyp, der umgesetzt werden kann mit einem array oder einer verknüpften Liste-Daten-Struktur
TLDR
Abstrakten Datentyp > Daten-Struktur > Datentyp
Methode der Untersuchung ein bit-Muster bezeichnet einen Datentyp. Es gibt mehrere Datentypen wie binäre zahlen, binary coded decimal, nicht-negative ganze zahlen, reelle zahlen und Zeichenketten. E. g.: ein bit-string 00100110 interpretiert werden kann, wie die Zahl '38' (Binär kodierte Dezimalzahl).
Wenn wir einige spezifische operation mit Daten, die Struktur, dann die Daten-Struktur mit diesen speziellen Vorgang sind die sogenannten Abstrakten Datentyp. Es ist ein Werkzeug für die Angabe von logischen Eigenschaften und Betrieb von Daten-Typen.
Datenstruktur ist die Implementierung der abstrakten Operationen.
source: Bücher, google-Suche....
Als ich darüber wissen,zum Beispiel in Python,
int
float
bool
sind Datentypen,Sie sind built-in-Klassen,str
list
tuple
dict
set
frozenset
sind Daten-Strukturen,Sie sind auch built-in-Klassen,und wir können schreibenlinked list
linked stack
linked queue
linked deque
positional list
array stack
array queue
linked tree
linked binary tree
binary search tree
AVL tree
red black tree
splay tree
hash table
priority queue
und etc,können wir nennen diese Datenstruktur,oder ADT,meiner Meinung nach, - Daten-Struktur/ADT, ist das organisieren von Daten,Daten-Typ zu klassifizieren Daten in int/float/bool/etcPython built-in
list
ist implementiert ein dynamisches array,Python built-intuple
implementiert, mit statischen array,Python built-in'dict/set/frozrnset umgesetzt werden hash-Tabelle