unterschied: Prozedurales und Objektorientiertes Programmieren

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Was ist eigentlich der Unterschied zwischen Prozedurales Programmieren und Objektorientiertes Programmieren? Könnte mir das einer kurz definieren? Danke im voraus.
 

0x7F800000

Top Contributor
goddamnit, schmeiß den bescheuerten Fragenkatalog endlich mal in den Ofen, bis man das selbst alles ausprobiert rafft man's doch eh nicht, da hilft klugscheißer-definitions-herumgerede aus der Wikipedia nix^^
 

Landei

Top Contributor
Der grundlegende Unterschied ist, dass beim prozeduralen Programmieren Daten und "Ausführbares" (Prozeduren, Funktionen oder wie immer es heißt) voneinander getrennt sind, während sie beim OO-Programmieren eine Einheit (das Objekt) bilden. Beispiel Abstand zweier Punkte (Pseudocode):

prozedural:
Code:
float function abstand(x1, y1, x2, y2:float) {
  return sqrt((x1-x2)^2 + (y1-y2)^2)
}

OO:
Code:
class Punkt {
   x,y:float
   float abstand(p:andererPunkt) {
      return sqrt((x-p.x)^2 + (y-p.y)^2)
   }
}

Mit anderen Worten, "Punkt" bildet eine sinnvolle Einheit aus Daten und "Methoden". Ein Punkt weiß selbst, wie er seinen Abstand zu einem andern Punkt berechnen muss, wodurch ein Programm besser strukturiert ist, als wenn es einfach aus einem Haufen Produzeduren besteht. Auch die Fehlerhäufigkeit wird reduziert: Bei der prozeduralen Variante fragt man sich z.B. "Abstand von was? Von vier float-Parametern? Was soll das jetzt genau bedeuten?"
 
Zuletzt bearbeitet:
S

SlaterB

Gast
naja, einen Tick übers Ziel hinausgeschossen,

> "Abstand von was? Von vier float-Parametern? Was soll das jetzt genau bedeuten?"

da kann man doch auch zwei Punkte übergeben ;)

da man die Punkt-Funktionen in der Nähe des Punkt-Datentyps deklarieren wird,
ist die Einheit quasi auch gegeben, aber zusätzlicher Parameter, das stimmt schon
 

Landei

Top Contributor
Das setzt vorraus, dass es in der jeweiligen Sprache strukturierte Datentypen (struct in C, record in Pascal) gibt, aber nicht alle prozeduralen Sprachen haben das (z.B. BASIC)
 
S

SlaterB

Gast
nun gut, wenn du davon ausgehst, dass es überhaupt keine höheren Datenstrukturen gibt,
dann kann man das als noch viel größeren Unterschied sehen
oder zumindest beim Punkt 'Trennung von Daten und Funktionen' mal eben erwähnen ;)

ohne eine derartige Zusammenfassung finde ich es deutlich schwerer, ein JTextField mit seinen tausend Einzeldaten erfolgreich durchs Programm zu führen,
ob die Methode setText(String st) nun im JTextField drin ist oder es eine globale Funktion setText(JTextField f, String st) gibt, ist dagegen fast egal

aber JTextField sollte man besser nicht erwähnen, bei Vererbung siehts dann prozedural ganz dunkel aus
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben