Wie würdet ihr "iterierbares Objekt" in der Informatik definieren?

7 Antworten

Würde die Definition noch offenener formulieren, indem man das mit der Zählschleife auslässt. Iterieren ist, wenn man in einer Datenstruktur gespeicherte Objekte nacheinander besucht. Die Reihenfolge spielt dabei keine Rolle. Zum Beispiel gibt es Iteratoren, mit Hilfe derer man nur nach vorne gehen kann, aber nicht wieder zurück gehen kann, wie es bei einer einfach verketteten Liste der Fall ist. Bei einer zweifach verketteten Liste kann man beispielsweise einen Schritt vor und darauf wieder einen Schritt zurück machen, weil die Einträge jeweils einen Zeiger auf den vorherigen und den nächsten Eintrag speichern. Um eine Datenstruktur bequem durchlaufen zu können und solche Richtungsänderungen vornehmen zu können, benutzt man Iteratoren und keine einfachen Zählschleifen.

Im Kontext von Design Patterns ist vielleicht mit "iterierbarem Objekt" gemeint, dass ein Objekt einen Iterator (Cursor) zur Verfügung stellt (den Iterator eines Objektes würde man sich dann via eine Art "createIterator()"-Funktion erzeugen). Der Iterator definiert eine Schnittstelle, für den Zugriff und die Traversierung von Elementen.

Das kommt auf die Programmiersprache an, oft gibt es ein Interface dafür, in so einem Fall kann man das ganz klar bestimmen nämlich wenn dieses Interface implementiert ist.

Und ja, dann kann man in der Regel auch for Schleifen und ähnliches nutzen.

Der Begriff könnte ein Übersetzungsversuch von "Iterable" sein, in dem Fall ist es zwar alles andere als Unsinn, egal was so manche "Experten sagen", aber ich würde empfehlen eher bei Englisch zu bleiben. Begriffe eindeutschen ist oft Missverständlich in diesem Kontext.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Ruhrpotter4324 
Beitragsersteller
 12.10.2021, 17:06

Vielen Dank, das macht tatsächlich Sinn!

0

Ein Element ist dann iterierbar, wenn es einen Iterator bereitstellt, den man durchlaufen kann. (next())

Ich würde Sagen ein iterierbares "Objekt" ist eine Sammlung an Elementen, die wie du richtig sagst, durchlaufen werden können um einen sich wiederholenden Prozess auf jedes der Elemente anwenden zu können. Dabei liegen die Elemente einzeln im Speicher und der Iterator zeigt auf die entsprechende Stelle des aktuellen Elementes. Je nach Programmiersprache und Typ des Objekts müssen die Elemente nicht unbedingt "hintereinander" im virtuellen Speicherbereich stehen, im physischen ohnehin nicht.

Ich weiß nicht genau was du mit beliebig oft durchlaufen meinst.. Klar, wenn du iterieren kannst, kannst du beliebig oft iterieren..

Wobei ich den Begriff "iterierbares Objekt" noch nicht gehört habe. Eine iterierbare Sammlung ist nicht zwingend ein Objekt.


Ruhrpotter4324 
Beitragsersteller
 11.10.2021, 22:51

Vielen Dank, das hat mir sehr weitergeholfen. Das Wort "iterierbares Objekt" habe ich aus einem Python-Buch. Wäre "iterierbare Sammlung" hier die bessere Wortwahl?

Bezüglich des virtuellen Speicherbereichs: Dazu habe ich gelesen, dass eine "virtuelle Sequenz" zu keiner Zeit komplett im Speicher abgelegt werden muss und trotzdem durchlaufen werden kann, wie funktioniert das?

0
DaveDerRavet  11.10.2021, 23:40
@Ruhrpotter4324

Ich glaub mit der Wortwahl kannst du Glaubenskriege unter Informatikern anzetteln. Ich persönlich finde Sammlung oder Menge passend. Aber im Kontext der objektorientierten Programmierung sind das auch Objekte.

Bei der zweiten Frage bin ich überfragt. Ich dachte immer, dass der komplette Programmkontext im Speicher liegt aber vielleicht versteh ich die Frage auch falsch^^

0
Ruhrpotter4324 
Beitragsersteller
 11.10.2021, 23:42
@DaveDerRavet
Ich glaub mit der Wortwahl kannst du Glaubenskriege unter Informatikern anzetteln. 

Das ist nicht meine Absicht 😂

Kein Problem, überfragt bin ich auch. Leider erklärt der Autor teilweise nur sehr oberflächlich, weshalb ich auch nicht verstehe, worauf der eigentlich hinaus will.

1