bauinformatik 1 - teil 1 / oop, klassen in...
TRANSCRIPT
![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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/33.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/34.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/35.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/37.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/38.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/39.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/40.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/41.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/42.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/43.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/44.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/45.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/46.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/47.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/48.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/49.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/50.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/51.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/52.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/53.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/54.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/55.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/56.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/57.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/58.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/59.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/60.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/61.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/62.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/63.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/64.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/65.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/66.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/67.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/68.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/69.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/70.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/71.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/72.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/73.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/74.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/75.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/76.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/77.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/78.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/79.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/80.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/81.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/82.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/83.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/84.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/85.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/86.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/87.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/88.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/89.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/90.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/91.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/92.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/93.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/94.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/95.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/96.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/97.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/98.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/99.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/100.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/101.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/102.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/103.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/104.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/105.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/106.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/107.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/108.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/109.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/110.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/111.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/112.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/113.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/114.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/115.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/116.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/117.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/118.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/119.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/120.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/121.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/122.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/123.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/124.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/125.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/126.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/127.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/128.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/129.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/130.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022040117/5d481e2e88c99349508b54a3/html5/thumbnails/131.jpg)
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