Numerische Methoden

Aus Physik
Zur Navigation springen Zur Suche springen

Allgemeines

Ein paar Anmerkungen zum Thema "Objektorientierte Programmierung (OOP)"

Objektorientierte Programmierung ist bedeutend mehr als die Verwendung von Klassen!

Erst wenn man die grundlegenden Ideen wie Kapselung, Vererbung, Polymorphismus, ... verstanden hat und einsetzen kann, ist man in der Lage die Vorteile der OOP effizient zu nutzen.

Was sind aber nun die Vorteile (kein Anspruch auf Vollständigkeit):

  • Mit Hilfe der Kapselung können klare Zuständigkeiten geschaffen, und damit Seiteneffekte vermieden werden.
  • Einzelne Module können leichter wiederverwendet werden
  • Der Code wird leichter wartbar und erweiterbar
  • Durch die gegebene Strukturierung fällt es leichter den Code zu verstehen (auch für den Programmierer, wenn er seinen Code nach einer gewissen Zeit wieder anschaut) und sich in den Code einzuarbeiten
  • Bessere Kommunizierbarkeit. Einerseits ist auch hierbei die Strukur hilfreich, andererseits gibt es viele Tools zur Planung und Visualisierung des Designs.

Ist OOP nötig?
Zweifelsohne sind die (was den Codeumfang betrifft) kleinen Beispiele, die in der Numerische Methoden UE zu schreiben sind, problemlos mit "herkömmlicher" strukturierter Programmierung programmierbar. Natürlich kann man leicht grobe (Design-)Fehler einbauen, wie z.B. globale Variablen "unpassend" zu verändern, jedoch schützt auch OOP nicht vor falschem Vorgehen, Verdenkern und Fehldesign.
Zwar lassen sich die Vorteile der OOP schon bei solch kleinen Projekten nutzen, bei größeren und/oder wachsenden Systemen ist jedoch die Verwendung objektorienterter Konzepte beihahe unumgänglich. Mit "Strukturierter Programmierung" erstellter Code wird mit zunehmender Größe rapide unlesbarer und unwartbarer. Insbesondere globale Variablen und globale Sichtbarkeit der Funktionen stellen große Probleme dar. Am schlimmsten zeigen sich Designmängel wenn der Code refactored/geändert oder ein Teil daraus wiederverwendet werden soll.
Sollte also jemand vorhaben sich in Zukunft etwas mehr mit Anwendungsprogrammierung zu beschäftigen, so kommt man um das Thema OOP nicht herum. Z.B. ist jede bekanntere Library für die Erstellung von GUIs (QT, WxWidgets, MFC) objektorientiert.

Gegenüberstellung verschiedener Programmiersprachen

Matlab

C

C++

Java

Ada

C - Spezifisches

Allozierung von Speicher

Die "C - Methode"

Die "C++ - Methode"

Benutzung von nrutil

Visualisierung der Daten

Es gibt mehrere Möglichkeiten die erstellten Daten hübsch auszugeben. Einige der für diese LV relevanten werden hier beschrieben

Ressourcen


Matlab - Spezifisches

Einiges findet sich auf den WIKI-Seiten der LV "Applikationssoftware und Programmierung"