131
Bauinformatik 1 Teil 1 / OOP, Klassen in VBA Ernst Baeck Fachgebiet Statik und Dynamik der Fl¨ achentragwerke 10. April 2019 E. Baeck (Uni-DUE) Folien-Skript (O) 1 / 36

Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Embed Size (px)

Citation preview

Page 1: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Bauinformatik 1Teil 1 / OOP, Klassen in VBA

Ernst Baeck

Fachgebiet Statik und Dynamik der Flachentragwerke

10. April 2019

E. Baeck (Uni-DUE) Folien-Skript (O) 1 / 36

Page 2: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP

ObjektorientierteProgrammierung

mit VBA

E. Baeck (Uni-DUE) Folien-Skript (O) 2 / 36

Page 3: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Ziele und Motivation

Ziele und Motivation

Reduktion des Entwicklungsaufwandes

Wiederverwertbarkeit von vorhandenen Programmquellen

Vereinfachung der Wiederverwertbarkeit

Reduktion des Wartungsaufwandes

Klare Programmstrukturen

Automatisierung der Dokumentationserstellung

⇓Ressourcen-Optimierung

Kostenoptimierung

E. Baeck (Uni-DUE) Folien-Skript (O) 3 / 36

Page 4: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Ziele und Motivation

Objektbeispiel Fahrzeuge, Daten und Prozeduren

Es gibt Fahrrader, Motorrader, PKWs, LKWs. Es gibt Busse.

Klassische Beschreibung durch Variablen und Prozeduren

In vielen F77-Programmen werden heute noch nur Felder eingesetzt.

LKWPosition

LKWMotor

PKWMotor

FahrradPosition

BusTuren

VerschiebeFahrrad

StartePKW

StarteLKW

OffneBussture

LenkeFahrrad

VerschiebeLKW

LenkeLKW

E. Baeck (Uni-DUE) Folien-Skript (O) 4 / 36

Page 5: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Kassen-Hierarchie

Was ist eine Klasse?

Konsequente Weiterentwicklung einer Struktur.

Eine Klasse enthalt Daten und Methoden (Variablen und Funktionen).

Eine Klasse kann eine Basisklasse beerben (Code Wiederverwertung).(Leider nicht in VBA)

Methode konnen uberschrieben, d.h. spezialisiert werden.(Leider nicht in VBA, da keine Vererbung)

Die Implementierung einer Klasse heißt Objekt oder Instanz.

Klassen werden durch UML-Klassendiagramme beschrieben.

Eine Klasse in VBA ist ein Klassenmodul.

Name1

Attribute1 (Variablen)

Methoden1 (Funktionen)

Name2

Attribute2 (Variablen)

Methoden2 (Funktionen)

Klasse Name2 beerbt Name1und erhalt deren Attribute undMethoden

Klasse Name2 beerbt Name1und erhalt deren Attribute undMethoden

E. Baeck (Uni-DUE) Folien-Skript (O) 5 / 36

Page 6: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

UML - Unified Modelling Language

Die UML verfeinert die Idee des ER-Diagramms.

UML Version 2 enthalt 13 Diagrammtypen zur OO-Modellierung.

UML zum Erstellen von Skizzen zum Programm-Design.

Es ist moglich aus einer vollstandigen UML Beschreibungen einlauffahiges Programm automatisiert zu erzeugen.

Wir beschranken uns auf Klassendiagramme und Notizen,

Generalisierungen (Vererbung), in VBA nicht moglich!

Kompositionsdiagramme und

Aggregationsdiagramme

E. Baeck (Uni-DUE) Folien-Skript (O) 6 / 36

Page 7: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

UML - Unified Modelling Language

Die UML verfeinert die Idee des ER-Diagramms.

UML Version 2 enthalt 13 Diagrammtypen zur OO-Modellierung.

UML zum Erstellen von Skizzen zum Programm-Design.

Es ist moglich aus einer vollstandigen UML Beschreibungen einlauffahiges Programm automatisiert zu erzeugen.

Wir beschranken uns auf Klassendiagramme und Notizen,

Generalisierungen (Vererbung), in VBA nicht moglich!

Kompositionsdiagramme und

Aggregationsdiagramme

Klassenname

Eigenschaften

Methoden

Zusatzliche Informationenim Notiz-DiagrammZusatzliche Informationenim Notiz-Diagramm

E. Baeck (Uni-DUE) Folien-Skript (O) 6 / 36

Page 8: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

UML - Unified Modelling Language

Die UML verfeinert die Idee des ER-Diagramms.

UML Version 2 enthalt 13 Diagrammtypen zur OO-Modellierung.

UML zum Erstellen von Skizzen zum Programm-Design.

Es ist moglich aus einer vollstandigen UML Beschreibungen einlauffahiges Programm automatisiert zu erzeugen.

Wir beschranken uns auf Klassendiagramme und Notizen,

Generalisierungen (Vererbung), in VBA nicht moglich!

Kompositionsdiagramme und

Aggregationsdiagramme

Basisklasse

Basis-Eigenschaften

Basis-Methoden

Abgeleitete Klasse

Eigenschaften

Methoden

E. Baeck (Uni-DUE) Folien-Skript (O) 6 / 36

Page 9: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

UML - Unified Modelling Language

Die UML verfeinert die Idee des ER-Diagramms.

UML Version 2 enthalt 13 Diagrammtypen zur OO-Modellierung.

UML zum Erstellen von Skizzen zum Programm-Design.

Es ist moglich aus einer vollstandigen UML Beschreibungen einlauffahiges Programm automatisiert zu erzeugen.

Wir beschranken uns auf Klassendiagramme und Notizen,

Generalisierungen (Vererbung), in VBA nicht moglich!

Kompositionsdiagramme und

Aggregationsdiagramme

geordnet

3..* Mittelpunkt

1Polygon Punkt Kreis

E. Baeck (Uni-DUE) Folien-Skript (O) 6 / 36

Page 10: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

UML - Unified Modelling Language

Die UML verfeinert die Idee des ER-Diagramms.

UML Version 2 enthalt 13 Diagrammtypen zur OO-Modellierung.

UML zum Erstellen von Skizzen zum Programm-Design.

Es ist moglich aus einer vollstandigen UML Beschreibungen einlauffahiges Programm automatisiert zu erzeugen.

Wir beschranken uns auf Klassendiagramme und Notizen,

Generalisierungen (Vererbung), in VBA nicht moglich!

Kompositionsdiagramme und

Aggregationsdiagramme

1 *

Blech Anschluss

E. Baeck (Uni-DUE) Folien-Skript (O) 6 / 36

Page 11: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

Klassen-Hierarchie einiger Fahrzeuge

Fahrzeug

positionbaujahrgewicht

verschiebelenke

Skateboard

rollenbreite

Zweirad

beifahrer

Fahrrad

ritzelsatteltaschen

Motorrad

leistungbeiwagen

schalte

Auto

sitzeplaetzeturenleistung

PKW

schiebedach

LKW

achsen

rueckfahrpiepsen

Camper

wassertank

E. Baeck (Uni-DUE) Folien-Skript (O) 7 / 36

Page 12: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

Klassen-Hierarchie von AutoCAD-Geometrieobjekten

Das Beispiel zeigt die Klassenhierarchie eines CAD-Geometriemodells.

Von einem allgemeinen Geometrie-Objekt leiten sich Primitives ab.

+ ist public, kursiv ist eine abstrakte (virtuelle) Methode.

GeoObjekt

+zeichne

Punkt

+zeichne

Linie

+zeichne

Polygon

+zeichne

Solid

+zeichne

MultiLinie

+zeichne

Zylinder

+zeichne

Quader

+zeichne

E. Baeck (Uni-DUE) Folien-Skript (O) 8 / 36

Page 13: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP UML

Polymorphie

Polymorphie ist die Fahigkeit je nach Klasse unterschiedlichespezialisierte Funktionen der Basisklasse aufrufen zu konnen, ohnenach der Klasse zu fragen.

Werden z.B. Klassen eines CAD-Programms von einer Basis-Klasseabgeleitet und hat diese z.B. eine virtuelle Funktion zeichnen, die vonabgeleiteten Klassen uberschrieben werde, konnen diese Funktionenbeim Iterieren der vorhanden Objekte ohne if oder switch Abfragespezialisiert aufgerufen werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 9 / 36

Page 14: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Zugriffsrechte

Problem globaler Daten

Globale Daten werden außerhalb der Prozeduren deklariert.Globale Daten konnen ohne explizite Parameterubergaben inUnterprogrammen verandert werden.Es fehlen Schutzmechanismen, alles ist sichtbar, alles ist erlaubt.Globale Daten konnen somit leicht versehentlich verandert werden.

’ D e k l a r a t i o n g l o b a l e r Va r i a b l e nDim a As Double , b as Double , c As Double’ HauptprogrammSub TestGlobVar ( )

a = 1 : b = 2 : c = 3Debug . Pr i n t ”a : ” & a & ” | b : ” & b ; ” | c : ” & cCa l l QuadItDebug . Pr i n t ”a : ” & a & ” | b : ” & b ; ” | c : ” & c

End Sub

Sub QuadIt ( )a = a ˆ 2 : b = b ˆ 2 : c = c ˆ 2

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 10 / 36

Page 15: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 16: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Klassenmo-dul einfugen

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 17: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.Eigenschaften sind globale Variablen des Klassenmoduls.Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.Instanzen werden mit Set Referenzen/Adressen zugewiesen.Eine Instanz wird durch Zuweisung von nothing explizit geloscht.Instanzen ohne Referenzen werden automatisch von VBA geloscht.VBA verfugt uber einen Garbage Collector.

GeoObjekt Punkt

double : xc(1:2)

Klassenmodul eines Punktes mit Basisklasse. xc und b sind Eigenschaften

Dim xc(1 To 2) As Double ’ Koordinaten

Dim b As GeoObjekt ’ GeoObject (Basis-Klasse)

Private Sub Class Initialize()

xc(1) = 0#

xc(2) = 0#

Set b = New GeoObjekt

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 18: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Der Konstruktor initialisiert die Koordinaten und erzeugt die Basis-Instanz

Private Sub Class Initialize()

xc(1) = 0#

xc(2) = 0#

Set b = New GeoObjekt

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 19: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Der Destruktor gibt die Basis-Instanz frei

Private Sub Class Terminate()

Set b = Nothing

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 20: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Zwei Versionen, eine Klassenmodul-Instanz zu erzeugen

Dim P1 As New Punkt Dim P1 As Punkt

Set P1 = New Punkt

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 21: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Zwei Versionen, eine Klassenmodul-Instanz zu erzeugen

Dim P1 As New Punkt Dim P1 As Punkt

Set P1 = New Punkt

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 22: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

Der Destruktor gibt die Basis-Instanz frei

Private Sub Class Terminate()

Set b = Nothing

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 23: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 24: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Klassenmodule

Klassenmodule

Klassen werden in VBA als Klassenmodul bezeichnet.

Ein Klassenmodul wird mit Rechts-Click/Einfugen erzeugt.

Eigenschaften sind globale Variablen des Klassenmoduls.

Der Konstruktor initialisiert ⇒ Class_Initialize.

Der Destruktor raumt auf ⇒ Class_Terminate.

Eine Instanz eines Klassenmoduls wird mit dem new Operator erzeugt.

Instanzen werden mit Set Referenzen/Adressen zugewiesen.

Eine Instanz wird durch Zuweisung von nothing explizit geloscht.

Instanzen ohne Referenzen werden automatisch von VBA geloscht.

VBA verfugt uber einen Garbage Collector.

E. Baeck (Uni-DUE) Folien-Skript (O) 11 / 36

Page 25: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Zugriffsrechte

Zugriffsrechte und Sichtbarkeit

In VBA gibt es 2 Zugriffsrechte Public und Private.

Public Eigenschaften/Funktionen sind sichtbar und ungekapselt.

Private Eigenschaften/Funktionen sind verborgen und gekapselt.

Mit Dim vereinbarte Eigenschaften sind stets Private.

Felder konnen nur mit Private erzeugt werden.

Felder erfordern Interfaces (Zugriffsmethoden).

Eventfunktionen sind immer Private.

E. Baeck (Uni-DUE) Folien-Skript (O) 12 / 36

Page 26: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Interfaces

Interfaces und Pseudo-Vererbung

VBA unterstutzt keine Vererbung.

Die Vererbung kann uber Interfaces simuliert werden.

Ein Eigenschafts-Interface wird mit Property fest gelegt.

Die Eigenschaft wird mit einer Let Property gesetzt.

Die Eigenschaft wird mit einer Get Property gelesen.

E. Baeck (Uni-DUE) Folien-Skript (O) 13 / 36

Page 27: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Interfaces

Interfaces und Pseudo-Vererbung

VBA unterstutzt keine Vererbung.

Die Vererbung kann uber Interfaces simuliert werden.

Ein Eigenschafts-Interface wird mit Property fest gelegt.

Die Eigenschaft wird mit einer Let Property gesetzt.

Die Eigenschaft wird mit einer Get Property gelesen.

E. Baeck (Uni-DUE) Folien-Skript (O) 13 / 36

Page 28: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Interfaces

Interfaces und Pseudo-Vererbung

VBA unterstutzt keine Vererbung.

Die Vererbung kann uber Interfaces simuliert werden.

Ein Eigenschafts-Interface wird mit Property fest gelegt.

Die Eigenschaft wird mit einer Let Property gesetzt.

Die Eigenschaft wird mit einer Get Property gelesen.

E. Baeck (Uni-DUE) Folien-Skript (O) 13 / 36

Page 29: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Interfaces

Interfaces und Pseudo-Vererbung

VBA unterstutzt keine Vererbung.

Die Vererbung kann uber Interfaces simuliert werden.

Ein Eigenschafts-Interface wird mit Property fest gelegt.

Die Eigenschaft wird mit einer Let Property gesetzt.

Die Eigenschaft wird mit einer Get Property gelesen.

Ein Let Property-Interface eines Punktes fur Koordinaten xc

’ setzen des x-Wertes

Public Property Let x(x1 As Double)

xc(1) = x1

End Property

’ setzen des y-Wertes

Public Property Let y(y1 As Double)

xc(2) = y1

End Property

Die Zuweisung erfolgt auf die Komponentendes Koordinatenfeldes.

E. Baeck (Uni-DUE) Folien-Skript (O) 13 / 36

Page 30: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

ObjektOrientierte Programmierung, OOP Interfaces

Interfaces und Pseudo-Vererbung

VBA unterstutzt keine Vererbung.

Die Vererbung kann uber Interfaces simuliert werden.

Ein Eigenschafts-Interface wird mit Property fest gelegt.

Die Eigenschaft wird mit einer Let Property gesetzt.

Die Eigenschaft wird mit einer Get Property gelesen.

Ein Get Property-Interface eines Punktes fur Koordinaten xc

’ Ruckgabe des x-Wertes

Public Property Get x() As Double

x = xc(1)

End Property

’ Ruckgabe des y-Wertes

Public Property Get y() As Double

y = xc(2)

End Property

Die Koorinatenwerte werden mittelsInterface-Routine zuruck gegeben.

E. Baeck (Uni-DUE) Folien-Skript (O) 13 / 36

Page 31: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse

Beispiel

Die Punkt-Klasse

E. Baeck (Uni-DUE) Folien-Skript (O) 14 / 36

Page 32: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Klassenkonzept

Das Klassenkonzept

Die Punkt-Klasse wird abgeleitet von Klasse GeoObjekt.

Die Vererbung ist uber eine Property Interface zu simulieren.

Property-Funktionen sind in der Lage die Parameter zu prufen.

GeoObjekt

integer : farbe

Punkt

double : xc(1:2)

E. Baeck (Uni-DUE) Folien-Skript (O) 15 / 36

Page 33: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Klassenkonzept

Das Klassenkonzept

Die Punkt-Klasse wird abgeleitet von Klasse GeoObjekt.

Die Vererbung ist uber eine Property Interface zu simulieren.

Property-Funktionen sind in der Lage die Parameter zu prufen.

Punkt

GeoObjekt : bdouble : xc(1:2)

Let : bGet : bLet : xcGet : xc

Let schreibt Daten in die Instanz,Get liest Daten aus der Instanz,Let schreibt Daten in die Instanz,Get liest Daten aus der Instanz,

E. Baeck (Uni-DUE) Folien-Skript (O) 15 / 36

Page 34: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Basisklasse

Implementierung der Basisklasse

Ein Klassenmodul der Bezeichnung GeoObjekt ist zu erzeugen.

Die Eigenschaft farbe ist einzutragen

Der Konstruktor initialisiert farbe mit 1.

Private farbe As Integer ’ Farbnummer

’ Der Konstruktor

Private Sub Class Initialize()

farbe = 1

End Sub

Das Attribut wird mit Private geschutzt.

E. Baeck (Uni-DUE) Folien-Skript (O) 16 / 36

Page 35: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Punktklasse

Implementierung der Punktklasse

Ein Klassenmodul der Bezeichnung Punkt ist zu erzeugen.

Die Eigenschaft xc und b sind einzutragen

Der Konstruktor erzeugt die Basisklassen-Instanz b.

Dim xc(1 To 2) As Double ’ Koordinaten

Dim b As GeoObjekt ’ GeoObject (Basis-Klasse)

’ Konstruktor

Private Sub Class Initialize()

xc(1) = 0#

xc(2) = 0#

Set b = New GeoObjekt

End Sub

’ Destruktor

Private Sub Class Terminate()

Set b = Nothing

End Sub

Der Konstruktor erzeugt die Instanz derBasisklasse mit dem new-Operator. DerDestruktor gibt diese explizit frei.

E. Baeck (Uni-DUE) Folien-Skript (O) 17 / 36

Page 36: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Punkt-Interface

Interface-Implementierung zur Klasse Punkt

Interface fur Eigenschaften von Punkt und GeoObjekt.

Die Eigenschaften werden mit Let geschrieben, mit Get gelesen.

Felder konnen uber Let/Get auch angesprochen werden.

’ Farbwert ubernehmen

Public Property Let farbe(f As Integer)

b.farbe = f

End Property

’ Farbwert lesen

Public Property Get farbe() As Integer

farbe = b.farbe

End Property

’ Koordinatenwert ubernehmen

Public Property Let x(i As Integer, x1 As Double)

xc(i) = x1

End Property

’ Koordinatenwert lesen

Public Property Get x(i As Integer) As Double

x = xc(i)

End Property

E. Baeck (Uni-DUE) Folien-Skript (O) 18 / 36

Page 37: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Beispiel Punktklasse Testumgebung

Hauptprogramm zum Test der Punktklasse

Zunachst werden die Instanzen erzeugt.

Punkt 1 wird gesetzt. Prufung der Let Funktionen.

Punkt 1 in Punkt 2 kopieren und Farbe auf 2 setzen.

Sub PunktTest()

’ Implementierung der Variablen und Instanzen

Dim P1 As New Punkt

Dim P2 As New Punkt

Dim i As Integer

’ schreiben der Startwerte in P1

P1.x(1) = 1#

P1.x(2) = 2#

’ ubernehmen der Werte in P2

For i = 1 To 2

P2.x(i) = P1.x(i)

Next

’ Farbe setzen

P2.farbe = 2

End Sub

E. Baeck (Uni-DUE) Folien-Skript (O) 19 / 36

Page 38: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen

Container-Klassen

Arrays, Listen

Collections

E. Baeck (Uni-DUE) Folien-Skript (O) 20 / 36

Page 39: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Allgemeines

Was ist eine Container-Klasse?

Eine Klasse zur Speicherung von Informationen.

Eine CK hat automatisches Speichermanagement.

Die Implementierung der Datenverwaltung ist gekapselt.

Methoden werden eingesetzt um

- Daten in die CK zu speichern,- Daten aus der CK abzurufen,- Daten aus der CK zu loschen,- Daten in der CK zu iterieren.

Der Typ der CK beeinflusst die Performance.

⇒ Vorsicht bei der Wahl des CK-Typs!

E. Baeck (Uni-DUE) Folien-Skript (O) 21 / 36

Page 40: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 41: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

11

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 42: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

1

22

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 43: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

1

2

5Fehler

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 44: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

1

2

5Fehler

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 45: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

1

2

5Fehler

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 46: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Felder

Ein Feld, erster Schritt zum Container

Ein Feld ist einfacher Daten-Speicher.

Zugriff uber Indizierung.

Kein Interface, keine Kapselung.

Kein automatisches Speichermanagement (ReDim)

Vosicht Indexfehler!

1

2

5Fehler5

Ein Feld ist eine schnelle Losung.

Ein bessere Implementierung bietet ein Klassenmodul.

Hierbei kann durch eine zusatzliche gekapselte Logik, einSpeicherproblem vermieden werden.

E. Baeck (Uni-DUE) Folien-Skript (O) 22 / 36

Page 47: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 48: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 49: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

SetAt(i,Object)

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 50: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

SetAt(i,Object)Object GetAt(i)

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 51: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

SetAt(i,Object)Object GetAt(i)InsertAt(i,Object)

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 52: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

SetAt(i,Object)Object GetAt(i)InsertAt(i,Object)RemoveAt(i)

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 53: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Array-Container-Klasse und ihr Interface

Vorteil eines Array-Containers sind schnelle indizierte Zugriffe.Nachteil ist das aufwendige Speicher-Managment bei Feldanpassungen.

AC ist ansprechbar uber Methoden.

Count liefert den großten gelegten Index.

Mit SetAt wird ein Objekt gespeichert.

Mit GetAt wird ein Objekt abgerufen.

Mit InsertAt wird ein Objekt eingefugt.

Mit RemoveAt wird ein Objekt entfernt.

Mit RemoveAll werden alle Objekte entfernt.

ArrayContainer

+Count

SetAt(i,Object)Object GetAt(i)InsertAt(i,Object)RemoveAt(i)RemoveAll()

E. Baeck (Uni-DUE) Folien-Skript (O) 23 / 36

Page 54: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

1 2 3

Kopie

1 2 3

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 55: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

1 2 3

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 56: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

1 2 3

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 57: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

1 2 3

Kopie

1 2 3

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 58: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

1 2 3

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 59: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

Das Anlegen (Allokieren) und Loschen (Deallokieren) des Speichersdefragmentiert den Hauptspeicher.

Hauptspeicher-Defragmentierung reduziert die Performance.

Wird die Instanz einer Array-Klasse in einer Anwendung mit kleinenZuwachsen hinreichend oft erweitert, wird die Performanceuberproportional schlechter.

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 60: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

Das Anlegen (Allokieren) und Loschen (Deallokieren) des Speichersdefragmentiert den Hauptspeicher.

Hauptspeicher-Defragmentierung reduziert die Performance.

Wird die Instanz einer Array-Klasse in einer Anwendung mit kleinenZuwachsen hinreichend oft erweitert, wird die Performanceuberproportional schlechter.

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 61: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Array-Container

Erweitern einer Array-Container-Instanz

Der Inhalt des Arrays ist zu sichern.

Alten Speicher entfernen.

Neuen Speicher in gewunschter Große anlegen.

Die Sicherung ist in das angepasste Array zu kopieren.

Die Sicherung ist zu loschen.

Das Anlegen (Allokieren) und Loschen (Deallokieren) des Speichersdefragmentiert den Hauptspeicher.

Hauptspeicher-Defragmentierung reduziert die Performance.

Wird die Instanz einer Array-Klasse in einer Anwendung mit kleinenZuwachsen hinreichend oft erweitert, wird die Performanceuberproportional schlechter.

E. Baeck (Uni-DUE) Folien-Skript (O) 24 / 36

Page 62: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Kopf Knoten 1 Knoten 2 Knoten 3

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 63: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Kopf Knoten 1 Knoten 2 Knoten 3

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 64: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 65: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Knoten

Knoten: nextDaten: data

Daten

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 66: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Knoten

Knoten: nextDaten: data

Daten

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 67: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Ein List-Container, einfach verkettet

Einfachste Implementierung eines LCs ist die einfach verkettete Liste.

Die Liste besteht aus einer Kette von Knoten.

Eine einfach Verkettete Liste ist eine rekursive Datenstruktur.

Ein Knoten besteht aus einem Daten- und einem Adresselement.

Das Datenelement enthalt Daten oder die Adresse der Daten.

Das Adresselement verweist auf den nachsten Knoten der Kette.

Knoten

Knoten: nextDaten: data

Daten

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 25 / 36

Page 68: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Einfugen

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 69: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Einfugen

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 70: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Einfugen

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 71: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Einfugen

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 72: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 73: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 74: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Einfugen eines neuen Knotens in die Liste

Das Einfugen eines neuen Knotens ist relativ einfach.

Keine Speicherplatz-Umorganisation erforderlich.

Es wird eine neue Knoten-Instanz erzeugt.

Anpassen der Listen-Zeiger (Knoten einhangen).

Zunachst Zeiger von neuem Knoten auf Nachfolger setzen.

Dann Zeiger von Vorganger auf neuen Knoten Setzen

Damit wird der alte Zeiger uberschrieben.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 26 / 36

Page 75: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Loschen eines Knotens aus der Liste

Das Entfernen des Knotens ist wie das Einfugen relativ einfach.

Vorganger-Zeiger auf den Nachfolger-Knoten setzen.

Falls erforderlich, zu loschende Instanz explizit deallokieren.

VORSICHT: Falls der Container nicht mehr benotigt wird, sind dieKnoten ggf. explizit mit Zuweisung von Nothing zu entfernen.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Entfernen

E. Baeck (Uni-DUE) Folien-Skript (O) 27 / 36

Page 76: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Loschen eines Knotens aus der Liste

Das Entfernen des Knotens ist wie das Einfugen relativ einfach.

Vorganger-Zeiger auf den Nachfolger-Knoten setzen.

Falls erforderlich, zu loschende Instanz explizit deallokieren.

VORSICHT: Falls der Container nicht mehr benotigt wird, sind dieKnoten ggf. explizit mit Zuweisung von Nothing zu entfernen.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

Knoten Entfernen

E. Baeck (Uni-DUE) Folien-Skript (O) 27 / 36

Page 77: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Loschen eines Knotens aus der Liste

Das Entfernen des Knotens ist wie das Einfugen relativ einfach.

Vorganger-Zeiger auf den Nachfolger-Knoten setzen.

Falls erforderlich, zu loschende Instanz explizit deallokieren.

VORSICHT: Falls der Container nicht mehr benotigt wird, sind dieKnoten ggf. explizit mit Zuweisung von Nothing zu entfernen.

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 27 / 36

Page 78: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Loschen eines Knotens aus der Liste

Das Entfernen des Knotens ist wie das Einfugen relativ einfach.

Vorganger-Zeiger auf den Nachfolger-Knoten setzen.

Falls erforderlich, zu loschende Instanz explizit deallokieren.

VORSICHT: Falls der Container nicht mehr benotigt wird, sind dieKnoten ggf. explizit mit Zuweisung von Nothing zu entfernen.

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 27 / 36

Page 79: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Aufbau einer Liste mit Knoten-Klasse

Der Knoten-Klassenmodul Node besteht aus 2 public Attributen.

Der Zeiger nextNode zeigt auf die nachste Knoten-Instanz.

Die Daten werden in einer Variant-Variablen abgelegt.

ListAufbau erzeugt eine Liste in einer for-Schleife.Der Schleifenindex wird als Datenobjekt ubernommen.

Node

+Node : nextNode+Variant : data

E. Baeck (Uni-DUE) Folien-Skript (O) 28 / 36

Page 80: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Aufbau einer Liste mit Knoten-Klasse

Der Knoten-Klassenmodul Node besteht aus 2 public Attributen.

Der Zeiger nextNode zeigt auf die nachste Knoten-Instanz.

Die Daten werden in einer Variant-Variablen abgelegt.

ListAufbau erzeugt eine Liste in einer for-Schleife.Der Schleifenindex wird als Datenobjekt ubernommen.

Public nextNode As Node

Public data As Variant

E. Baeck (Uni-DUE) Folien-Skript (O) 28 / 36

Page 81: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Aufbau einer Liste mit Knoten-Klasse

Der Knoten-Klassenmodul Node besteht aus 2 public Attributen.

Der Zeiger nextNode zeigt auf die nachste Knoten-Instanz.

Die Daten werden in einer Variant-Variablen abgelegt.

ListAufbau erzeugt eine Liste in einer for-Schleife.Der Schleifenindex wird als Datenobjekt ubernommen.

Public nextNode As Node

Public data As Variant

E. Baeck (Uni-DUE) Folien-Skript (O) 28 / 36

Page 82: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Aufbau einer Liste mit Knoten-Klasse

Der Knoten-Klassenmodul Node besteht aus 2 public Attributen.Der Zeiger nextNode zeigt auf die nachste Knoten-Instanz.Die Daten werden in einer Variant-Variablen abgelegt.ListAufbau erzeugt eine Liste in einer for-Schleife.Der Schleifenindex wird als Datenobjekt ubernommen.

Sub ListAufbau()

Dim nHead As New Node ’ Startknoten

Dim nPos As Node ’ aktueller Knoten

Dim nNext As Node ’ nachster Knoten

Set nPos = nHead ’ Initialisierung

For i = 1 To 4

’ neuen Knoten erzeugen

Set nNext = New Node

Set nPos.nextNode = nNext

’ Daten zuweisen

nPos.data = i

’ Zeiger weiter setzen

Set nPos = nNext

Next

End SubE. Baeck (Uni-DUE) Folien-Skript (O) 28 / 36

Page 83: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 84: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 85: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

Knoten

Knoten: next

Head Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 86: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

Head

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 87: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

Head

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 88: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen List-Container

Deallokieren des List-Containers

Einfache Tests zeigen, dass EXCEL beim Verlassen des Programmsnicht in der Lage ist, alle erzeugten Knoten zu loschen. EinMemory-Fehler wird angezeigt und EXCEL ist neu zu starten.

Werden die Knoten entfernt, gibt es keine Probleme.

Das Loschen der Knoten beginnt beim ersten Knoten (Head).

Der Nachfolger wird so der neue Head-Knoten.

Dies erfolgt solange, bis der Nachfolger auf Nothing verweist.

Head Nothing

Knoten

Knoten: next

Knoten

Knoten: next

Knoten

Knoten: next

E. Baeck (Uni-DUE) Folien-Skript (O) 29 / 36

Page 89: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).

Hash-Funktion bildet Schlussel auf Index-Wert ab.

Kollision, falls mehrere Schlussel den selben Index erhalten.

Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.

Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 90: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).

Hash-Funktion bildet Schlussel auf Index-Wert ab.

Kollision, falls mehrere Schlussel den selben Index erhalten.

Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.

Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

hash: 2 hash: 7 hash: 5

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 91: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).

Hash-Funktion bildet Schlussel auf Index-Wert ab.

Kollision, falls mehrere Schlussel den selben Index erhalten.

Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.

Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

hash: 2 hash: 7 hash: 5

L 60x5 :Profildaten

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 92: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).Hash-Funktion bildet Schlussel auf Index-Wert ab.Kollision, falls mehrere Schlussel den selben Index erhalten.Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.MD5-Hash codiert Passworte in 128Bit.

Anfrage mitSchlussel

Hash-Generator

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

L 60x5 :Profildaten

hash: 2 hash: 7 hash: 5

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 93: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).Hash-Funktion bildet Schlussel auf Index-Wert ab.Kollision, falls mehrere Schlussel den selben Index erhalten.Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

Anfrage mitSchlussel

Hash-Generator

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

L 60x5 :Profildaten

hash: 2 hash: 7 hash: 5

Listenlange = 2 anstatt 4

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 94: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).

Hash-Funktion bildet Schlussel auf Index-Wert ab.

Kollision, falls mehrere Schlussel den selben Index erhalten.

Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.

Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

Anfrage mitSchlussel

Hash-Generator

IPB 120 :Profildaten

I 100 :Profildaten

L 50x5 :Profildaten

L 60x5 :Profildaten

hash: 2

Listenlange = 4

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 95: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Maps, Dictionaries und die VBA Collection

Die Collection (auch Map, Dictionary, Hash) speichert Daten untereinem Schlussel (ein beliebiger String).

Hash-Funktion bildet Schlussel auf Index-Wert ab.

Kollision, falls mehrere Schlussel den selben Index erhalten.

Daten mit selbem Index werden oft in Listen (Buckets) abgelegt.

Durch die Reduktion der Listenlange reduziert sich der Suchaufwand.

Prinzipiell kann eine Collection als Liste entarten.

MD5-Hash codiert Passworte in 128Bit.

Kollisionen werden gesucht, um Passworte zu hacken.

md5("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") =

a3cca2b2aa1e3b5b3b5aad99a8529074

md5("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") =

7e716d0e702df0505fc72e2b89467910

E. Baeck (Uni-DUE) Folien-Skript (O) 30 / 36

Page 96: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.

Die Collection ist ein VBA-Klassenmodul.

Count liefert die Anzahl der Datensatze.

Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.

Item liest einen Datensatz (mit Index oder Schlussel)

Remove entfernt einen Datensatz (mit Index oder Schlussel)

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 97: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.

Die Collection ist ein VBA-Klassenmodul.

Count liefert die Anzahl der Datensatze.

Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.

Item liest einen Datensatz (mit Index oder Schlussel)

Remove entfernt einen Datensatz (mit Index oder Schlussel)

Collection

integer: Count

Add(..)Item(..)Remove(..)

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 98: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.

Die Collection ist ein VBA-Klassenmodul.

Count liefert die Anzahl der Datensatze.

Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.

Item liest einen Datensatz (mit Index oder Schlussel)

Remove entfernt einen Datensatz (mit Index oder Schlussel)

Sub testCollection()

Dim Liste As New Collection

Dim Pkt As Punkt

’ Aufbau der Liste

For i = 1 To 10

Set Pkt = New Punkt

Call Liste.Add(Pkt)

Next

’ Datensate prufen

n = Liste.Count

End Sub

Nach Listenaufbau wird die Anzahl dergespeicherten Datensatze mit Count ermittelt.

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 99: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.

Die Collection ist ein VBA-Klassenmodul.

Count liefert die Anzahl der Datensatze.

Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.

Item liest einen Datensatz (mit Index oder Schlussel)

Remove entfernt einen Datensatz (mit Index oder Schlussel)

Sub testCollection()

Dim Liste As New Collection

Dim Pkt As Punkt

’ Aufbau der Liste

For i = 1 To 10

Set Pkt = New Punkt

Call Liste.Add(Pkt)

Next

’ Datensate prufen

n = Liste.Count

End Sub

Hier wird mit Add ein Datensatz ohneSchlussel in die Collection ubernommen.

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 100: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.

Die Collection ist ein VBA-Klassenmodul.

Count liefert die Anzahl der Datensatze.

Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.

Item liest einen Datensatz (mit Index oder Schlussel)

Remove entfernt einen Datensatz (mit Index oder Schlussel)

Dim Liste As New Collection

Dim Pkt As Punkt

’ Aufbau der Liste

For i = 1 To 10

Set Pkt = New Punkt

Pkt.farbe = i

Call Liste.Add(Pkt, "Punkt " & i)

Next

’ Punkt 3 aus Liste holen

Set Pkt = Liste.Item("Punkt 3")

Set Pkt = Liste.Item(3)

Mit Add werden 10 Punkt Instanzen in dieListe aufgenommen. Schlussel ist

”Punkt

[Nr]“. In einem zweiten Schritt wird dieInstanz des 3. Punktes mit der Methode Itemaus der Liste geholt. Item arbeite mit Indexund Schlussel.

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 101: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Der VBA Build-In Container Collection

VBA bietet eine Map genannt Collection.Die Collection ist ein VBA-Klassenmodul.Count liefert die Anzahl der Datensatze.Add ubernimmt einen Datensatze mit bzw. ohne Schlussel.Item liest einen Datensatz (mit Index oder Schlussel)Remove entfernt einen Datensatz (mit Index oder Schlussel)

Sub CreateAndDeleteCollection()

Dim Liste As New Collection

Dim Pkt As Punkt

’ Aufbau der Liste

...

’ Datensate prufen

n = Liste.Count

’ Loschen einer Collection

For i = 1 To n

Set Pkt = Liste(1)

Set Pkt = Nothing

Liste.Remove (1)

Next

Set Liste = Nothing

End Sub

Das Loschen des Container-Inhalts erfolgt hierdurch fortlaufendes Loschen des erstenDatensatzes bis alle Datensatze entfernt sind.Prinzip des Zigarettenautomaten =Entnehmen bis leer. Es ist darauf zu achten,dass nicht nur der Container-Verweis sondernauch die gespeicherte Instanz selbst geloschtwird. Im letzten Schritt wird der Containerselbst geloscht.

E. Baeck (Uni-DUE) Folien-Skript (O) 31 / 36

Page 102: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 103: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 104: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 105: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 106: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 107: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Aufbau einer Liste mit Datenelementen.

Es wird ein neuer Knoten erzeugt,

das Datenobjekt wird erzeugt und der Zeiger gesetzt.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 108: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 109: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 110: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 111: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 112: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Daten

Datensatz 3

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 113: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Collection-Container

Aufbau und Loschen einer Liste/Collection

Das Loschen einer Liste erfordert das Loschen Daten-Instanzen

und das Loschen der Knoten-Instanzen.

Knoten

Knoten: nextDaten: data

Daten

Datensatz 1

Knoten

Knoten: nextDaten: data

Daten

Datensatz 2

Knoten

Knoten: nextDaten: data

Daten

Datensatz 3

E. Baeck (Uni-DUE) Folien-Skript (O) 32 / 36

Page 114: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Allgemeines zur Performance-Analyse

Bei der Performance-Analyse der Container-Klassen sind dieSpeicheralgorithmen und die Performance der Datenstrukturen zumessen.

Es ist darauf zu achten, dass Zeiten, die mit den zu analysierendenEigenschaften nichts zu tun haben, vernachlassigt werden konnen(z.B. Programmladezeiten).

Die Performance-Probleme treten haufig erst bei sehr großenProblemen auf, hier bei einer großen Anzahl zu speichernderDatensatze.

Messungen an großen Systemen sind daher wesentlichaussagekraftiger als Messungen an kleinen Systemen. Benchmarks inder Großenordung Millisekunden sind damit i.A. wenig aussagekraftig.

E. Baeck (Uni-DUE) Folien-Skript (O) 33 / 36

Page 115: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Allgemeines zur Performance-Analyse

Bei der Performance-Analyse der Container-Klassen sind dieSpeicheralgorithmen und die Performance der Datenstrukturen zumessen.

Es ist darauf zu achten, dass Zeiten, die mit den zu analysierendenEigenschaften nichts zu tun haben, vernachlassigt werden konnen(z.B. Programmladezeiten).

Die Performance-Probleme treten haufig erst bei sehr großenProblemen auf, hier bei einer großen Anzahl zu speichernderDatensatze.

Messungen an großen Systemen sind daher wesentlichaussagekraftiger als Messungen an kleinen Systemen. Benchmarks inder Großenordung Millisekunden sind damit i.A. wenig aussagekraftig.

E. Baeck (Uni-DUE) Folien-Skript (O) 33 / 36

Page 116: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Allgemeines zur Performance-Analyse

Bei der Performance-Analyse der Container-Klassen sind dieSpeicheralgorithmen und die Performance der Datenstrukturen zumessen.

Es ist darauf zu achten, dass Zeiten, die mit den zu analysierendenEigenschaften nichts zu tun haben, vernachlassigt werden konnen(z.B. Programmladezeiten).

Die Performance-Probleme treten haufig erst bei sehr großenProblemen auf, hier bei einer großen Anzahl zu speichernderDatensatze.

Messungen an großen Systemen sind daher wesentlichaussagekraftiger als Messungen an kleinen Systemen. Benchmarks inder Großenordung Millisekunden sind damit i.A. wenig aussagekraftig.

E. Baeck (Uni-DUE) Folien-Skript (O) 33 / 36

Page 117: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Allgemeines zur Performance-Analyse

Bei der Performance-Analyse der Container-Klassen sind dieSpeicheralgorithmen und die Performance der Datenstrukturen zumessen.

Es ist darauf zu achten, dass Zeiten, die mit den zu analysierendenEigenschaften nichts zu tun haben, vernachlassigt werden konnen(z.B. Programmladezeiten).

Die Performance-Probleme treten haufig erst bei sehr großenProblemen auf, hier bei einer großen Anzahl zu speichernderDatensatze.

Messungen an großen Systemen sind daher wesentlichaussagekraftiger als Messungen an kleinen Systemen. Benchmarks inder Großenordung Millisekunden sind damit i.A. wenig aussagekraftig.

E. Baeck (Uni-DUE) Folien-Skript (O) 33 / 36

Page 118: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Array-Container-Performance

Die Performance der Zugriffe ist dimensionsunabhangig.

Die Aufbau-Performance der Arrays hangt ab von der Große derErweiterungsschritte.

Lasst sich eine Große eindeutig indizieren und wird mit haufigenZugriffen gerechnet, so ist ein Array die beste Container-Form.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s] Erweiterung100.000 104 0 6

51 0 1225 0 2512 0 506 0 100

200.000 48 0 5025 0 100

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 34 / 36

Page 119: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Array-Container-Performance

Die Performance der Zugriffe ist dimensionsunabhangig.

Die Aufbau-Performance der Arrays hangt ab von der Große derErweiterungsschritte.

Lasst sich eine Große eindeutig indizieren und wird mit haufigenZugriffen gerechnet, so ist ein Array die beste Container-Form.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s] Erweiterung100.000 104 0 6

51 0 1225 0 2512 0 506 0 100

200.000 48 0 5025 0 100

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 34 / 36

Page 120: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Array-Container-Performance

Die Performance der Zugriffe ist dimensionsunabhangig.

Die Aufbau-Performance der Arrays hangt ab von der Große derErweiterungsschritte.

Lasst sich eine Große eindeutig indizieren und wird mit haufigenZugriffen gerechnet, so ist ein Array die beste Container-Form.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s] Erweiterung100.000 104 0 6

51 0 1225 0 2512 0 506 0 100

200.000 48 0 5025 0 100

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 34 / 36

Page 121: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Array-Container-Performance

Die Performance der Zugriffe ist dimensionsunabhangig.

Die Aufbau-Performance der Arrays hangt ab von der Große derErweiterungsschritte.

Lasst sich eine Große eindeutig indizieren und wird mit haufigenZugriffen gerechnet, so ist ein Array die beste Container-Form.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s] Erweiterung100.000 104 0 6

51 0 1225 0 2512 0 506 0 100

200.000 48 0 5025 0 100

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 34 / 36

Page 122: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance einer einfach verketteten Liste

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Fur sequentiell abzuarbeitende Datenbestande (Ringbuffer, Stack,etc.) sind Listen geeignet.

Direkte Zugriffe sind sehr langsam.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]20.000 0 1030.000 1 2240.000 1 3950.000 1 63100.000 1 260

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 35 / 36

Page 123: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance einer einfach verketteten Liste

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Fur sequentiell abzuarbeitende Datenbestande (Ringbuffer, Stack,etc.) sind Listen geeignet.

Direkte Zugriffe sind sehr langsam.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]20.000 0 1030.000 1 2240.000 1 3950.000 1 63100.000 1 260

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 35 / 36

Page 124: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance einer einfach verketteten Liste

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Fur sequentiell abzuarbeitende Datenbestande (Ringbuffer, Stack,etc.) sind Listen geeignet.

Direkte Zugriffe sind sehr langsam.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]20.000 0 1030.000 1 2240.000 1 3950.000 1 63100.000 1 260

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 35 / 36

Page 125: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance einer einfach verketteten Liste

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Fur sequentiell abzuarbeitende Datenbestande (Ringbuffer, Stack,etc.) sind Listen geeignet.

Direkte Zugriffe sind sehr langsam.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]20.000 0 1030.000 1 2240.000 1 3950.000 1 63100.000 1 260

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 35 / 36

Page 126: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance einer einfach verketteten Liste

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Fur sequentiell abzuarbeitende Datenbestande (Ringbuffer, Stack,etc.) sind Listen geeignet.

Direkte Zugriffe sind sehr langsam.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]20.000 0 1030.000 1 2240.000 1 3950.000 1 63100.000 1 260

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 35 / 36

Page 127: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance der VBA-build-in-Collection

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Geeignet, falls Schlussel, keine Indizierung verwendet wird.

Direkte Zugriffe schneller als bei Listen, langsamer als bei Arrays.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]30.000 0 150.000 0 4100.000 0 20130.000 0 33150.000 0 46200.000 0 89

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 36 / 36

Page 128: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance der VBA-build-in-Collection

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Geeignet, falls Schlussel, keine Indizierung verwendet wird.

Direkte Zugriffe schneller als bei Listen, langsamer als bei Arrays.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]30.000 0 150.000 0 4100.000 0 20130.000 0 33150.000 0 46200.000 0 89

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 36 / 36

Page 129: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance der VBA-build-in-Collection

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Geeignet, falls Schlussel, keine Indizierung verwendet wird.

Direkte Zugriffe schneller als bei Listen, langsamer als bei Arrays.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]30.000 0 150.000 0 4100.000 0 20130.000 0 33150.000 0 46200.000 0 89

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 36 / 36

Page 130: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance der VBA-build-in-Collection

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Geeignet, falls Schlussel, keine Indizierung verwendet wird.

Direkte Zugriffe schneller als bei Listen, langsamer als bei Arrays.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]30.000 0 150.000 0 4100.000 0 20130.000 0 33150.000 0 46200.000 0 89

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 36 / 36

Page 131: Bauinformatik 1 - Teil 1 / OOP, Klassen in VBAinfo.statik.uni-due.de/Lehre/Bauinformatik-1/Skripte/BI1-1-Skript-3O.pdf · ObjektOrientierte Programmierung, OOP Kassen-Hierarchie Was

Container-Klassen Performance

Performance der VBA-build-in-Collection

Die Performance der Zugriffe ist dimensionsabhangig.

Die Performance des Aufbaus ist quasi dimensionsunabhangig.

Geeignet, falls Schlussel, keine Indizierung verwendet wird.

Direkte Zugriffe schneller als bei Listen, langsamer als bei Arrays.

Zufalliger Direkter ZugriffElemente Aufbau [s] Zugriff [s]30.000 0 150.000 0 4100.000 0 20130.000 0 33150.000 0 46200.000 0 89

Messung auf DELL-Notebook mit i7-Prozessor

E. Baeck (Uni-DUE) Folien-Skript (O) 36 / 36