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.

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

tation umwandeln muss, um sie am Bildschirm ausgeben zu können. In e<strong>in</strong>em<br />

Programm hat man es aber e<strong>in</strong>erseits mit vielen Objekten als Instanzen<br />

vieler verschiedener Klassen zu tun, andererseits mit vielen verschiedenen<br />

Input- und Output-Devices. Den Begriff Device möchte ich hier nicht als<br />

Hardware-E<strong>in</strong>heit, wie z.B. Bildschirm oder Festplatte, verstanden wissen,<br />

sondern vielmehr als e<strong>in</strong>e beliebige Datensenke, auf die man Daten schreiben<br />

kann bzw. auch als e<strong>in</strong>e beliebige Datenquelle, von der man Daten lesen<br />

kann.<br />

Auch hier wurde die traditionelle Sicht der D<strong>in</strong>ge von der Entwicklung<br />

überholt, denn wer behauptet, dass man es immer mit byteorientierten Operationen<br />

zu tun haben muss? Je nach Datenquelle bzw. -senke kann e<strong>in</strong><br />

Datenwort beliebig lang se<strong>in</strong>.<br />

Setzen wir also die E<strong>in</strong>zelteile e<strong>in</strong>mal zu e<strong>in</strong>er modernen Sicht der D<strong>in</strong>ge<br />

zusammen: Es gibt Devices, die auf e<strong>in</strong>e bestimmte Art bedient werden wollen<br />

und die mit verschiedenartigen Datenströmen umgehen können. Es gibt<br />

<strong>in</strong> e<strong>in</strong>em Programm Objekte, die mit diesen Devices zu tun bekommen, weil<br />

sie entweder auf diese geschrieben oder von diesen gelesen werden wollen.<br />

Die sogenannten Streams s<strong>in</strong>d nun die Teile e<strong>in</strong>es Programms, die e<strong>in</strong>e Verb<strong>in</strong>dung<br />

zwischen beiden Welten herstellen, sodass Entwicklern das Leben so<br />

leicht wie möglich gemacht wird: Sie führen die Transformation zwischen der<br />

Welt der Devices und der Welt der Objekte durch. Dadurch s<strong>in</strong>d Entwickler<br />

z.B. nicht mehr gezwungen, bei jeder Schreiboperation per Hand e<strong>in</strong>e Byterepräsentation<br />

e<strong>in</strong>es Objekts zu generieren und diese dann als Datenblock <strong>in</strong><br />

entsprechendem Format an das Device zu senden. Selbiges gilt für das Lesen<br />

von Objekten: Wenn e<strong>in</strong> Programm die E<strong>in</strong>gabe e<strong>in</strong>er Zahl erwartet, dann<br />

wollen die Entwickler beim besten Willen ke<strong>in</strong>en irgendwie gearteten Str<strong>in</strong>g<br />

<strong>in</strong> die Hand bekommen und diesen von Hand umwandeln. Es sollte ja wohl<br />

genügen, für spezielle Klassen e<strong>in</strong>mal e<strong>in</strong>e Umwandlung zu implementieren<br />

und diese wird dann automatisch verwendet.<br />

Außerdem, und das ist e<strong>in</strong>er der ganz wichtigen Punkte bei Streams, will<br />

man e<strong>in</strong>fach e<strong>in</strong>en virtuellen Datenstrom benutzen, ohne z.B. Rücksicht auf<br />

Blockgrößen und andere Details zu nehmen.<br />

Wir hatten es bisher bereits öfters mit drei speziellen Streams zu tun:<br />

c<strong>in</strong>, cout und cerr, die Standard-Input, Standard-Output und Standard-<br />

Error e<strong>in</strong>es Programms bezeichnen. Diese speziellen Streams wurden immer<br />

<strong>in</strong> Zusammenhang mit den Operatoren >> für den Input und

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!