Objektorientiertes Programmieren mit
C++
und
JAVA
Axel Rogat
Vorlesung an der BUGH Wuppertal im WS 1997/98
 
Startseite
 
 
1
Objektorientiertes Programmieren
1.1
Einleitung
1.1.1
Objekte, Klassen, Vererbung
1.1.2
Objekte mit C
1.2
Programmierparadigmen
1.3
Qualitätskriterien für Software
1.4
Simulierte Objektorientiertheit
1.5
Modularisierung
1.6
Merkmale von Objektorientiertheit
1.7
Klassenbeschreibungen
1.7.1
Algebraische Spezifikation
1.7.2
Axiomatische Spezifikation
1.7.3
Einteilung der Funktionen
2
Grundlagen von
C++
2.1
Entstehung von
C++
2.2
Aufbau
2.2.1
Compiler
2.2.2
Beteiligte Dateien
2.2.3
Aufbau von
C++
-Programmen
2.2.4
Ein erstes Beispiel
2.3
Lexikalische Elemente
2.3.1
Kommentare
2.3.2
Tokens
2.3.3
Literalkonstanten
3
Typen und Deklarationen
3.1
Vordefinierte Datentypen
3.2
Deklarationen vs. Definitionen
3.3
Konstanten
3.4
Aufzählungstypen
3.5
Gültigkeitsbereiche
3.6
Externe und interne Bindung
3.7
Speicherklassen und Initialisierung
3.8
Namespaces
4
Ausdrücke
4.1
Lvalues
4.2
Grundrechenarten
4.3
Vergleichsoperatoren
4.4
Bedingte Ausdrücke
4.5
Zuweisungsoperatoren
4.6
Inkrement- und Dekrement-Operatoren
4.7
Shift-Operatoren
4.8
Bitweise Operatoren
4.9
Logische Operatoren
4.10
Der Komma-Operator
4.11
Konstante Ausdrücke
4.12
Typumwandlungen
4.12.1
Standardumwandlungen
4.12.2
Explizite Typumwandlungen
5
Anweisungen und Kontrollstrukturen
5.1
Anweisungen
5.2
Sequenz
5.3
Selektion (
if
,
else
,
switch
)
5.4
Schleifen (
while
,
do-while
,
for
)
5.5
Struktursprünge (
break
,
continue
)
6
Abgeleitete Typen
6.1
Pointer
6.2
Arrays
6.3
Strings
6.4
Referenzen
6.5
struct
s
6.6
union
s
6.7
typedef
6.8
Bitfelder
7
Funktionen
7.1
Funktionsdeklarationen
7.2
Funktionsdefinitionen
7.3
Referenz-Parameter
7.4
Array-Parameter
7.5
Überladen von Funktionen
7.6
Weniger Argumente
7.7
Mehr Argumente
7.8
inline
-Funktionen
7.9
Pointer auf Funktionen
7.10
Die Funktion
main
8
Speicherverwaltung
8.1
Speicherarten
8.2
new
8.3
new
-Handler
9
Klassen in
C++
9.1
Ein ADT in
C
9.2
Klassendefinitionen in
C++
9.3
C++
-Version von
intstack
10
Datenmember und Memberfunktionen
10.1
Allgemeines zu Membern
10.2
Hat-ein vs. Ist-ein
10.3
Header-Dateien
10.4
this
10.5
Lese- und Schreibfunktionen
10.6
inline
-Elementfunktionen
10.7
Konstante Elementfunktionen
10.8
Konsistenz
11
Konstruktoren und Destruktoren
11.1
Standard-Konstruktoren
11.2
Copy-Konstruktoren
11.3
Typumwandlungs-Konstruktoren
11.4
Weitere Konstruktor-Beispiele
11.5
Initialisiererlisten
11.6
Copy-Konstruktoren mit zusätzlichen Parametern
11.7
Destruktoren
12
Weitere Einzelheiten zu Klassen
12.1
Statische Daten-Member
12.2
Statische Elementfunktionen
12.3
friend
s
12.4
Konversionsfunktionen
12.4.1
Konversionen in den Typ hinein
12.4.2
Konversionen aus dem Typ heraus
12.5
Pointer auf Member
13
Überladen von Operatoren
13.1
Einstellige Operatoren
13.2
Zweistellige Operatoren
13.3
Zuweisungsoperator
13.4
Der Funktionsaufruf-Operator
()
13.5
Der Index-Operator
[]
13.6
Der Elementzugriffs-Operator
->
13.7
Vergleichsoperatoren
13.8
Überladen von
new
13.9
Schnittstellen
14
Stream-Klassen
14.1
Ausgabe-Streams
14.2
Stream-Manipulatoren
14.3
ios
-Flags
14.4
Eingabe-Streams
14.5
Stream-Status
14.6
Ein-/Ausgabe eigener Typen
14.7
Dateibearbeitung
14.8
String-Streams
14.9
Beispiel
14.10
Ausblicke
15
Ausführliche Beispiele
15.1
Strings
15.1.1
String-Philosophien
15.1.2
Interne Darstellung
15.1.3
Schnittstellen
15.1.4
Implementation
15.1.5
Beispielanwendung
15.2
Teilmengen von
int
16
Generizität
16.1
Parametrisierte Funktionen
16.2
Parametrisierte Klassen
16.3
Beispiele
16.3.1
Eine Array-Klasse
16.3.2
Restklassen-Klassen
16.3.3
Hashtables
17
Vererbung
17.1
Einführung
17.2
Ein erstes Beispiel
17.3
protected
-Status
17.4
Subobjekte und Speicher-Layout
17.5
Typkonversionen bei abgeleiteten Klassen
17.6
Vererbung und Templates
17.7
Virtuelle Funktionen
17.8
Dynamische Typinformationen (RTTI)
17.9
Rein virtuelle Funktionen und abstrakte Klassen
17.10
Ausführlichere Beispiele
17.10.1
Grafische Objekte
17.10.2
Pointer-Klassen
18
Mehrfachvererbung
18.1
Abstrakte und konkrete Eltern
18.2
Mehrfachvorkommen einer Klasse
18.3
Mehrfachvererbung oder Layering
18.4
Virtuelle Basisklassen
19
Ausnahmebehandlung in
C++
19.1
Grundlagen
19.2
try
,
throw
und
catch
19.3
throw
-Deklarationen
19.4
Typen der Fehlerobjekte
20
Die Standard Template Library (STL)
20.1
Iteratoren
20.2
Gemeinsamkeiten der Container
20.3
Vektoren, Listen, Schlangen
20.4
Operationen auf allen Containern
20.5
Andere spezielle Container
20.6
Funktions-Objekte
20.7
Standard-Algorithmen
21
Grundlagen von
JAVA
21.1
Zur Geschichte von
JAVA
21.2
JAVA
und
C++
21.3
Umgebung
21.4
Programme, Klassen und Packages
21.5
Ein erstes Beispiel
21.6
Lexikalische Elemente
21.6.1
Unicode
und Quelltext-Vorverarbeitung
21.6.2
Kommentare
21.6.3
Tokens
21.7
Anweisungen und Kontrollstrukturen
21.8
Eingebaute Typen
21.8.1
Arithmetik mit Integer-Typen
21.8.2
Arithmetik mit Gleitkomma-Typen
21.8.3
Ausdrücke
21.9
Referenz-Typen
21.10
Arrays
22
JAVA
-Standardklassen
22.1
Strings
22.2
java.text
22.3
Date
22.4
Vector
22.5
Hashtable
22.6
Weitere Standard-Klassen
23
Klassen in
JAVA
23.1
Ein Update
C++
->
JAVA
23.2
Konstruktoren
23.3
Freier und statischer Code
23.4
Garbage Collection und
finalize
23.5
Klassen als Objekte
23.6
Verschachtelte Klassen
23.6.1
Verschachtelte Top-Level-Klassen
23.6.2
Member-Klassen
23.6.3
Lokale Klassen
24
Ausnahmebehandlung in
JAVA
25
Vererbung in
JAVA
25.1
super
25.2
Überdeckung
25.3
Überschreiben
25.4
Typumwandlungen
25.5
Abstrakte Methoden, Klassen und Interfaces
25.6
Interface-Beispiel
26
Threads
26.1
Starten von Threads
26.2
Ableiten von
Thread
26.3
Synchronisation
26.4
sleep
und
interrupt
26.5
Producer/Consumer
26.6
Prioritäten
26.7
Dämonen
26.8
Weitere
Thread
-Methoden
27
Streams in
JAVA
27.1
Einfache Ein- und Ausgabe
27.1.1
InputStream
und
OutputStream
27.1.2
Gefilterte Streams
27.1.3
DataInputStream
und
DataOutputStream
27.1.4
BufferedInputStream
und
BufferedOutputStream
27.1.5
Gelayerte Streams
27.1.6
PrintStream
27.2
Reader
und
Writer
27.3
Pipes
27.4
Dateien
27.4.1
Die Klasse
File
27.4.2
Ein- und Ausgabe mit Dateien
27.5
Datenkompression
27.6
Serialisierung
28
JAVA
im Netz
28.1
Sockets
28.2
Datagramme
28.3
URL-Zugriff
28.4
Klassen über das Netz
29
Applets
29.1
HTML
29.2
Ein erstes Beispiel
29.3
Applet-Parameter
29.4
Zusammenarbeit mit dem Browser
29.4.1
Ausgaben, Umgebung und Dokumente
29.4.2
Bilder
29.4.3
Sounds
29.4.4
JAR
-Files
29.5
Kommunikation zwischen Applets
30
Grafik in
JAVA
30.1
Graphics
30.2
Color
30.3
Clipping
30.4
Font
30.5
Image
30.5.1
Animationen und Double Buffering
30.5+
Das
Ball
-Applet
31
Das Abstract Windowing Toolkit
31.1
Component
s
31.2
Container
31.3
Layout Manager
31.4
Fenster
31.5
Komponenten mit
JAVA
-Implementation
32
Events
32.1
Events in
JAVA
1.0
32.2
Events in
JAVA
1.1
33
Bausteine der Obefläche
33.1
Buttons
33.2
Labels
33.3
Texteingabe
33.4
Listen
33.5
Menüs
A
A
C++
-Grammatik
B
B ANSI-
C
-Standardbibliotheken
C
C Standard Template Library (STL)
D
D
JAVA
-Grammatik
E
E
HTML
-Tags
U
Übungsblätter
 
 
Startseite