30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

496 16. Die <strong>C++</strong> Standard Library<br />

1. Die Gefahr von Memory Leaks und wild gewordenen Po<strong>in</strong>tern ist<br />

extrem groß.<br />

2. Zeichentabellen, wie z.B. Unicode, die mehr als 8 Bits pro Zeichen<br />

verlangen, s<strong>in</strong>d nachträglich nur extrem schwer bis überhaupt nicht<br />

<strong>in</strong> e<strong>in</strong> existentes Programm e<strong>in</strong>zubauen.<br />

Die e<strong>in</strong>zig s<strong>in</strong>nvolle Lösung zum sauberen Umgang mit Str<strong>in</strong>gs <strong>in</strong> Programmen<br />

ist daher ihre Kapselung <strong>in</strong> e<strong>in</strong>e eigene Klasse bzw., aus<br />

Gründen der verschiedenartigen Zeichensatztabellen, <strong>in</strong> e<strong>in</strong> Template.<br />

Streams: Ob es sich nun um Input vom Keyboard, von e<strong>in</strong>em File oder auch<br />

von e<strong>in</strong>em Str<strong>in</strong>g handelt und ob der Output auf den Bildschirm oder<br />

sonstwoh<strong>in</strong> gehen soll, es handelt sich immer um e<strong>in</strong>en Datenstrom. Dieser<br />

ist <strong>in</strong> se<strong>in</strong>er Länge pr<strong>in</strong>zipiell nicht im Vorh<strong>in</strong>e<strong>in</strong> def<strong>in</strong>ierbar und auch<br />

das Zeitverhalten (z.B. wann wird etwas geschrieben und wie viel) ist<br />

nicht limitiert. Genau um dieses Verhalten zu modellieren, gibt es die<br />

sogenannten Streams.<br />

Numerik: Verschiedene aus dem Bereich der Numerik kommende Datenstrukturen<br />

(z.B. verschiedene Array-Typen, komplexe Zahlen) und Algorithmen<br />

zum Rechnen mit diesen werden oft genug <strong>in</strong> der Praxis verwendet,<br />

dass sie <strong>in</strong> die STL E<strong>in</strong>gang fanden. In diesem Bereich der STL<br />

s<strong>in</strong>d unter anderem die typischen Funktionen für den S<strong>in</strong>us, Cos<strong>in</strong>us,<br />

Logarithmus, etc. und natürlich auch die Zufallszahlen enthalten.<br />

Algorithmen und Funktionsobjekte: In diesem Bereich der Library f<strong>in</strong>den<br />

sich die typischen Algorithmen, die immer wieder auf Datenstrukturen<br />

angewandt werden. Vertreter hierfür s<strong>in</strong>d z.B. Transformationen, das<br />

Vertauschen von Inhalten, etc.<br />

Wie es auch <strong>in</strong> den Anforderungen def<strong>in</strong>iert ist, kann man natürlich auf Basis<br />

der Teile, die <strong>in</strong> der STL enthalten s<strong>in</strong>d, eigene Komponenten schreiben,<br />

wie z.B. sehr spezielle Conta<strong>in</strong>er etc. Um e<strong>in</strong> Gefühl für die mit der<br />

STL ausgelieferten Komponenten zu bekommen, ist den verschiedenen oben<br />

erwähnten Gruppen <strong>in</strong> der Folge jeweils e<strong>in</strong> kurzer Abschnitt gewidmet.<br />

E<strong>in</strong>e tiefer gehende Beschreibung vieler Design- und Anwendungsaspekte<br />

können <strong>in</strong>teressierte Leser <strong>in</strong> [Stroustrup 1997] nachlesen. E<strong>in</strong> sehr gutes<br />

und ausführliches Buch, das sich e<strong>in</strong>zig und alle<strong>in</strong> mit der STL beschäftigt,<br />

stellt [Musser et al. 2001] dar. Außerdem gibt es im Internet e<strong>in</strong>ige onl<strong>in</strong>e-<br />

Manuals und Tutorials zur STL zum Download. Zu [Stroustrup 1997] möchte<br />

ich noch erwähnen, dass ich ganz absichtlich auf die Special Edition se<strong>in</strong>es<br />

Buchs verweise und nicht auf die Standard Edition, da die Special Edition<br />

gerade durch die sehr tief gehende Diskussion der STL so “special” wird :-).<br />

Im Pr<strong>in</strong>zip muss man zur STL sagen, dass ihr Inhalt sehr <strong>in</strong>tuitiv verwendbar<br />

ist, sofern man sich e<strong>in</strong>mal an die doch nicht ganz standardgemäße Namensgebung<br />

gewisser Methoden gewöhnt hat (z.B. implementiert e<strong>in</strong>e Queue<br />

Methoden namens push und pop anstatt die sonst üblichen Bezeichnungen<br />

put und get zu verwenden). Ist man e<strong>in</strong>mal über diese kle<strong>in</strong>e Hürde h<strong>in</strong>weg,<br />

kann man den Umgang mit den Komponenten der STL auch e<strong>in</strong>fach durch

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!