Skip to main content

Das Softwareprojekt mit C++

  • Chapter
  • First Online:
Moderne C++ Programmierung

Part of the book series: Xpert.press ((XPERT.PRESS))

  • 14k Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 59.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 74.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 2.

    Visual C++ wendet bei erzeugten Headerdateien diese Technik standardmäßig an.

  3. 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. 4.

    Vergleichbar mit den statischen Funktionen der Sprache C oder des globalen Namensraumes in C++.

  5. 5.

    Ein solches Vorhaben kann auch durch die Verwendung von Namensräumen erreicht werden, die sich am Modulnamen orientieren.

  6. 6.

    Es hat auch den Namen „Koenig-Lookup“ von seinem Erfinder Andrew Koenig.

  7. 7.

    In ANSI-C ist es möglich.

  8. 8.

    Virtuelle Funktionen werden in Abschn.  beschrieben.

  9. 9.

    Mehr zu denTemplates steht in Abschn.  .

  10. 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. 11.

    Ein solcher Handler könnte im Fehlerfall eine bestimmte Exception werfen oder in irgendeiner Weise in die Speicherverwaltung eingreifen.

  12. 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. 13.

    Eventuell den Speicher vom Heap holen oder eine Exception werfen.

  14. 14.

    Dabei gibt es leider keine Funktion get_new_handler() in der Standardbibliothek.

  15. 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. 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. 17.

    Named Pipes sind benannte Datenströme, die zum Datenaustausch zwischen Prozessen oder auch unterschiedlichen Systemen eingesetzt werden können.

  18. 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. 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. 20.

    API = Application Programmer Interface.

  21. 21.

    Insbesondere dann, wenn diese nicht atomar sind.

  22. 22.

    Wie zum Beispiel die Methoden begin() und end() an den Containerklassen.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ralf Schneeweiß .

Rights and permissions

Reprints 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

Publish with us

Policies and ethics