kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

8.2 Templates

Das sammeln von Elementen, deren Anzahl nicht von vorne herein bekannt ist, ist eine wichtige, immer wieder anzuwendende Möglichkeit in der Programmierung.

Listen für andere Datentypen

Wir könnten nun Varianten für die Klassen Liste und ListenContainer schreiben, um damit nicht nur Strings, sondern auch andere Datentypen, wie ganze Zahlen (int), Fließkommazahlen (double), oder einzelene Zeichen (char) sammeln zu können. Gerade letzteres hat eine besondere Bedeutung, wenn es darum geht, den Inhalt eines Files in den Arbeitsspeicher zu laden.

Fehleranfälligkeit

Diese vielen Varianten zu scheiben, ist jedoch nicht nur lästig und Zeit aufwändig, es birgt auch immer die Gefahr Fehler in die neuen Klassen einzubauen, die zuvor nicht da waren. Zudem machen diese ganzen Klassen ja im Prinzip genau das gleiche. Lediglich der Datentyp des Attributs daten in der Klasse Liste und alle Methoden, die darauf zugreifen müßten jeweils angepasst werden.

So wenig Code wie möglich

Eine wichtige Regel Fehler beim Programmieren zu vermeiden und Programme übesichtlich zu halten, ist es, so wenig Code wie möglich zu schreiben.

Schablonen/Templates anwenden

C++ hält zur einfachen Anpassung unserer Klassen einen einfachen und effizienten Mechanismus bereit: Die Anwendung von Schablonen.

Es ist möglich dem Compiler zu sagen, dass er je nach Bedarf einen anderen Datentyp an den entsprechenden Stellen unserer Objekte, die aus den Klassen Liste und ListenContainer gebildet werden einsetzen soll.