ADT verständnis Problem

Unikate

Aktives Mitglied
Hallo zusammen,

ich habe ein Problem Abstrakte Datentypen zu verstehen.
Also es gibt die einfachen DT (boolean, byte, int etc. ), dann gibt es die komplexen Datentypen (Referenzdatentypen z.B. String) und dann gibt es die ADT's.

Und die ADT's sind genau was?Die Definitionen im Internet helfen irgendwie nicht.
Sind das nur Interfaces? Also Schnittstellen, die vorgeben welche Methoden man nutzen muss?
Oder sind das einfach nur meine Objektreferenzen?wenn ich z.B. eine Klasse Auto erstelle und ein Objekt
Auto auto1?hmm

😵

Ich denke ein konkretes Beispiel wäre hilfreich!
Danke fürs Helfen.
 
hallo,

von Abstrakten Klassen kannst du keine Instanzen bilden.

z.B.

Du hast eine Klasse Säugetier, von dieser solllen Klassen wie Affe und Mensch erben.

Da es kein Tier gibt das Säugetier heisst aber der Mensch und der Affe viele Gemeinsamkeiten haben, kann man diese Klasse abstrakt machen.

So enthält die ABSTRAKTE Klasse Säugetier sowas wie Herz, Lunge etc. und z.B. setters und getters. So sind diese Methoden bereits für alle Unterklassen verfügbar. Abstrakte Methoden müssen keinen Rumpf enthalten, können es aber 😉

hoffe das war deine Frage und es hilft dir weiter
 
Abstrakte Datentypen sind Datenstrukturen, die keine Vorschriften darüber machen, aus welchen Datenstrukturen oder Typen sie zusammengesetzt sind, oder wie sie intern organisiert sind. Sie bieten Operationen an, die mit abstrakten Parametern und Rückgabewerten arbeiten. Also normalerweise Schnittstellen mit generischen Parametern, die z.B. Stacks, Listen usw beschreiben.

Typische Aufgabe: Gegeben sei der abstrakte Datentyp Stack, der wie folgt in Haskell spezifiziert werden kann:

push :: Stack a -> a -> Stack a
pop :: Stack a -> (a, Stack a)

Entwerfen Sie eine Schnittstelle und eine Implementation in Java. Viel Spaß 😉
 
also abstrakte Klassen habe ich nun verstanden, aber abstrakter Datentyp noch nicht wirklich O_O
habt ihr mal ein codebeispiel?
 
Es ist völlig egal in welcher Sprache er beschrieben wird:

Java:
push :: Stack a -> a -> Stack a
pop :: Stack a -> (a, Stack a)
 
hallo,

von Abstrakten Klassen kannst du keine Instanzen bilden.

z.B.

Du hast eine Klasse Säugetier, von dieser solllen Klassen wie Affe und Mensch erben.

Da es kein Tier gibt das Säugetier heisst aber der Mensch und der Affe viele Gemeinsamkeiten haben, kann man diese Klasse abstrakt machen.

So enthält die ABSTRAKTE Klasse Säugetier sowas wie Herz, Lunge etc. und z.B. setters und getters. So sind diese Methoden bereits für alle Unterklassen verfügbar. Abstrakte Methoden müssen keinen Rumpf enthalten, können es aber 😉

hoffe das war deine Frage und es hilft dir weiter


Ist das falsch?
wenn ja dann erzählt mein Lehrer ziemlichen Quark 🙂
 
Du meinst nur abstrakte Methoden beinhaltet?
Nein, es ist dann eine abstrakte Klasse mit abstrakten Methoden 😉 [c]abstract class[/c] vs. [c]interface[/c].
 
ja ich meinte methoden ^^

und was sind dann interfaces? Mein lehrer hat gesagt der einzige unterschied ist das Interfaces Komplett aus abstracten methoden bestehen und durch implements eingebunden werden

Habe interfaces und abstrakte Klassen nie wirklich verstanden nicht mal durch erklärungen aus dem Internet
 
Einfach gesagt:
Ne Schnittstelle (interface) ist eine Vorgabe, wie etwas auszusehen hat.

zb Das Interface Collection schreibt die Methode size() vor. Alle Collection (List,Set,Queue...) müssen diese Methode besitzten.
Das ermöglicht "gegen das Interface zu implementieren".
Java:
Collection<String> collection = new ArrayList<String>();
// was auch immer für eine collection das ist: size() ist immer da;
int size = collection.size();
collection = new HashSet<String>();
//jetzt ist es ein hasset
size = collection.size();
//die collection hat immer noch eine size
Man kann die implementierung auswechseln, das interface schreibt nur vor, was da sein muss.
 

Zurück
Oben