Zusammenfassung
Ein Softwareprojekt mit C++ unterliegt meistens ganz spezifischen technischen Beschränkungen, die unabhängig zu den fachlichen Aspekten durch die Entwickler beherrscht werden müssen. Da ist zum einen die Aufteilung in Module, die ein grundsätzliches Problem darstellt. Einerseits muss man zur Beherrschung der Masse den Quellcode in Module aufteilen. Damit werden die Dateien kleiner und übersichtlicher, an denen die einzelnen Entwickler arbeiten. Andererseits möchte man die Compilezeiten kurz halten und den Überblick über das Gesamtprojekt nicht durch zu viele Einzelmodule erschweren. Dabei kann eine Modularisierung genau diese beiden Konsequenzen haben. Die Compilezeit eines Projektes steigt enorm an und der Entwickler hat Schwierigkeiten, die richtige Quellcodedatei für seine aktuelle Aufgabe zu finden.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Unter Modulen versteht man in C++ einfach die Quellcodedateien, die Implementierung enthalten.Zu ihnen gehört meistens auch eine Headerdatei. Bei manchen anderen Programmiersprachen wie zum Beispiel Modula-2 ist der Begriff „Modul“ etwas anders belegt. Er bezeichnet ein Stück Software mit zur Entwicklungszeit auslesbarer Schnittstelle.
- 2.
Visual C++ wendet bei erzeugten Headerdateien diese Technik standardmäßig an.
- 3.
Unter einer zirkulären Beziehung wird eine Beziehung verstanden, in der eine Klasse A Zugriff auf die Typeninformation einer Klasse B hat und andersherum. Es gibt bestimmte Situationen, in denen solche Typbeziehungen unumgänglich sind, wie zum Beispiel bei der Implementierung funktional sehr eng miteinander verbundener Klassen.
- 4.
Vergleichbar mit den statischen Funktionen der Sprache C oder des globalen Namensraumes in C++.
- 5.
Ein solches Vorhaben kann auch durch die Verwendung von Namensräumen erreicht werden, die sich am Modulnamen orientieren.
- 6.
Es hat auch den Namen „Koenig-Lookup“ von seinem Erfinder Andrew Koenig.
- 7.
In ANSI-C ist es möglich.
- 8.
Virtuelle Funktionen werden in Abschn. beschrieben.
- 9.
Mehr zu denTemplates steht in Abschn. .
- 10.
In der 16-Bit-Programmierung unter DOS, Windows 3.1 und Mac-Systemen war es ein sehr großes Problem, da man sehr auf die Größe der Programmdatei achtgeben musste. Heute hat man die Problematik in der Entwicklung von Embedded-Systemen.
- 11.
Ein solcher Handler könnte im Fehlerfall eine bestimmte Exception werfen oder in irgendeiner Weise in die Speicherverwaltung eingreifen.
- 12.
Würde man ein solches Array mit dem delete-Operator für Einzelobjekte löschen, würde nur der Destruktor des ersten Elements aufgerufen werden. Der Speicher würde womöglich ganz freigegeben werden, was aber von der jeweiligen Implementierung des Operators abhängt.
- 13.
Eventuell den Speicher vom Heap holen oder eine Exception werfen.
- 14.
Dabei gibt es leider keine Funktion get_new_handler() in der Standardbibliothek.
- 15.
In Java gibt es genau diese Typeninformation. Da das Typensystem in Java auf allen Virtual Machines gleich ist, können Objekte samt der Typeninformation gespeichert werden und durch eine beliebige VM wieder eingelesen werden.
- 16.
Die Best-Fit-Strategie bezeichnet die Vorgehensweise, den am besten passenden freien Speicherbereich für einen neu zu allokierenden Block zu finden. Demgegenüber steht die „First-Fit-Strategie“, die sich mit dem ersten freien Bereich begnügt, in den der neu zu allokierende Block passt. Die Best-Fit-Strategie versucht den Speicher optimal zu nutzen, während die First-Fit-Strategie die Laufzeit – den Rechenaufwand für die Speicherallokation – reduziert.
- 17.
Named Pipes sind benannte Datenströme, die zum Datenaustausch zwischen Prozessen oder auch unterschiedlichen Systemen eingesetzt werden können.
- 18.
Shared Memory ist gemeinsam genutzter Speicher, der von mehreren Prozessen aus beschrieben und gelesen werden kann. Die Virtuelle Speicherverwaltung definiert dazu einen Adressraum, der den entsprechenden Prozessen zugänglich gemacht wird.
- 19.
In Java ist das anders. Java kennt direkte Synchronisationsmechanismen für Threads und hat dafür sogar ein Schlüsselwort. Die Programmierung von Threads wird durch die Standardbibliothek von Java ermöglicht.
- 20.
API = Application Programmer Interface.
- 21.
Insbesondere dann, wenn diese nicht atomar sind.
- 22.
Wie zum Beispiel die Methoden begin() und end() an den Containerklassen.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Schneeweiß, R. (2012). Das Softwareprojekt mit C++. In: Moderne C++ Programmierung. Xpert.press. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21429-5_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-21429-5_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-21428-8
Online ISBN: 978-3-642-21429-5
eBook Packages: Computer Science and Engineering (German Language)