Numerische Methoden: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
== Allgemeines ==
 
== 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?'''<br>
  +
Zweifelsohne sind die (was den Codeumfang betrifft) kleinen Beispiele, die in der Numerische Methoden UE zu schreiben sind problemlos mit "herkömmlicher" strukturierter Programmierung zu lösen. 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.<br>
  +
Bei solch kleinen Projekten lassen sich die Vorteile der OOP schon nutzen, bei größeren und/oder wachsenden Projekten ist 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.
  +
 
=== Gegenüberstellung verschiedener Programmiersprachen ===
 
=== Gegenüberstellung verschiedener Programmiersprachen ===
   

Version vom 13. Mai 2005, 11:14 Uhr

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 zu lösen. 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.
Bei solch kleinen Projekten lassen sich die Vorteile der OOP schon nutzen, bei größeren und/oder wachsenden Projekten ist 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.

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

Matlab - Spezifisches