Prozedurale Programmierung

Bei der prozeduralen Programmierung wird ein Problem in Teilprobleme zerlegt. Diese werden in Funktionen (auch: Prozeduren) mit einem Eingang und einem Ausgang gelöst.


Funktionen sollen Daten verarbeiten, die ihnen über Parameterlisten als Schnittstellen übergeben worden sind.

Ursprünglich dienten Computer fast ausschließlich dazu,  Rechenaufgaben zu lösen, deren Umfang und Komplexität relativ begrenzt war. Die Programme waren noch relativ klein (gemessen an heutigen Maßstäben). Für diese Zwecke war das Programmierkonzept der prozeduralen Programmierung völlig ausreichend.
Mit steigender Leistung der Computer wuchs aber auch die Größe und Komplexität der Programme sehr stark. Der Computer vollzog einen Wandel zu einem universellen Arbeitsgerät. Heute erstrecken sich die Anwendungen über Gebiete wie z.B. Multimedia, künstlicher Intelligenz und Kommunikation.
Das erfordert eine größere Übersicht bei der Programmierung, bzw. mehr Programmstruktur.


Diese Entwicklung erforderte ein Umdenken auch bei dem Programmierkonzept:

Objektorientiertes Programmieren

Die reale Welt besteht nicht aus Abläufen, die man gut mittels Funktionen in der abstrakten prozeduralen Art und Weise darstellen kann. (Programme bilden immer auf die eine oder andere Art die Realität ab.)

Die Welt besteht zunächst einmal aus Dingen, Gegenständen, Personen etc., die es zu betrachten und damit in den Vordergrund zu stellen gilt. Diese Objekte haben bestimmte Eigenschaften und interagieren in bestimmter Weise miteinander.

Objekte verarbeiten mit ihren eigenen Methoden die eigenen Daten (Eigenschaften).

Wenn Objektdaten (Eigenschaften) nur über eine Methode des Objekts selbst verändert werden können und niemals direkt, spricht man von Datenkapselung.


ObjektObjekt


Die Eigenschaft "Geldmenge"eines Geldautomaten kann nur durch eine Methoden "ein- und auszahlen" genau dieses Geldautomaten verändert werden. Direkt lässt sie sich nicht verändern, was die Programmsicherheit stark erhöht. Die Geldmenge des Nachbarautomaten ist nur durch die Methoden "ein- und auszahlen" eben dieses Nachbarautomaten möglich.

  1. namespace Geldautomat
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)  // Programmstart
  6.         {
  7.             Geldautomat ga1 = new Geldautomat();  // Erzeugung eines Objekts ga1
  8.                                                   // der Klasse Geldautomat
  9.  
  10.             ga1.einzahlen(1000);         // Aufruf der Methode einzahlen()
  11.                                          // des Objekts ga1
  12.  
  13.             Console.WriteLine(ga1.auszahlen(100));
  14.         }
  15.     }
  16.  
  17.     class Geldautomat                      // Klassendefinition
  18.     {
  19.         private double geldMenge;          // gekapselte Eigenschaft: in allen Methoden der Klasse verfügbar
  20.  
  21.         public double auszahlen(double betrag)   // Methodendefinition
  22.         {
  23.             if (geldMenge >= betrag)
  24.             {
  25.                 geldMenge -= betrag;
  26.                 return betrag;
  27.             }
  28.             else
  29.                 return -1;                 // Fehlercode
  30.         }
  31.  
  32.         public void einzahlen(double betrag)
  33.         {
  34.             geldMenge += betrag;
  35.         }
  36.     }
  37. }


Objektorientierte Programmierung Prozedurale Programmierung
+ Reale Welt besteht aus Objekten, daraus folgt, bessere Abbildbarkeit.
+ Durch Datenkapselung sind die Eigenschaften eines Objektes geschützt.
+ Mehr Übersicht => bessere Wartbarkeit usw.
+ Wiederverwendung durch Vererbung wird erleichtert.
+ Etwas weniger Quellcode bei kleinen Programmen,
+ etwas mehr Performance (Geschwindigkeit) bei Interpreter- Sprachen

Last modified: Wednesday, 1 November 2017, 5:13 PM