# unterschied: Prozedurales und Objektorientiertes Programmieren



## babuschka (21. Feb 2009)

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


----------



## SlaterB (21. Feb 2009)

http://www.google.de/search?hl=de&q...tiertes+Programmieren&btnG=Google-Suche&meta=
-> 
http://www.it-infothek.de/fhtw/progr_02.html


----------



## 0x7F800000 (21. Feb 2009)

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 (23. Feb 2009)

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:

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

OO:

```
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?"


----------



## SlaterB (23. Feb 2009)

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 (23. Feb 2009)

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)


----------



## SlaterB (23. Feb 2009)

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


----------

