PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OOP vs Prozedrale Programmierung



und3r74k3r
10.02.2010, 09:16
Hi,
ich habe einige Fragen zu OOP und Prozedurale Programmierung.

Was ist besser? Wo liegen die Vor- und Nachteile bzw. wo setzt man was ein? Wie funktioniert OOP? Was ist der große Unterschied?

Pr0h4ck3r
10.02.2010, 09:30
Naja es kommt erstmal auf die Programiersprache an ich Rede nun mal Von java (Bekannte OO Programiersprache)

Prozedurale Programmiersprachen orientieren sich an der Arbeitsweise von Rechnern.
Programme bestehen aus einer (endlichen) Folge von Anweisungen einer höheren Programmiersprache.
Die einzelnen prozeduralen Programmiersprachen unterscheiden sich (unter anderem) darin, welche Anweisungen sie haben.


Im Gegensatz zur prozeduralen Programmierung ist nicht die Funktionsweise von Rechnern der Ausgangspunkt der objektorientierten Programmierung.
Ausgangspunkt ist der Wunsch, "Objekte" geeigneter Modelle, die durch Abstraktion von Objekten der realen Welt erhalten wurden, möglichst 1:1 (sprich: eins zu eins) in Programmiersprachen zu beschreiben.


Hoffe ich konnte es dir etwas verständlich erklären.


LG

blackberry
10.02.2010, 12:02
ich habe einige Fragen zu OOP und Prozedurale Programmierung.

Was ist besser? Wo liegen die Vor- und Nachteile bzw. wo setzt man was ein? Wie funktioniert OOP? Was ist der große Unterschied?

Ich denke prozedurale Programmierung wurde hier bereits erklärt.
Nochmal ein Nachtrag zu OOP:
Bei OOP dreht sich alles um Abstraktion. Du versuchst ein Konzept so weit zu abstrahieren, dass du es nachher auf verschiedene Probleme anwenden kannst.
Das führt uA. zu einer hohen Wiederverwendbarkeit von Code.
Zudem ist man in der Lage eine bessere Arbeitsteilung zu betreiben, da jeder Programmierer an einer Klasse arbeiten kann.

Insofern ist OOP für große Projekte sehr praktisch.
Persönlich bevorzuge ich prozedurale Programmierung, da OOP für die meißten Projekte nur dann Sinn macht, wenn das Projekt größer wird und mehrere Programmierer daran arbeiten. Ansonsten ist OOP viel zu aufwändig und erfordert viel zu viel Planung.

und3r74k3r
10.02.2010, 16:18
Vielen Dank für die Antworten. Eine Frage habe ich da aber noch.
Wie ist denn der Geschwindigkeitsunterschied, oder ist das völlig egal?

aL1ien
10.02.2010, 17:02
prozedural ist schneller und ressourcenschonender, macht aber bei den heutigen systemen nicht sonderlich viel aus

und3r74k3r
10.02.2010, 17:12
Vielen Dank,
ihr habt mir sehr geholfen, dann bleibe ich bei prozedural.

aL1ien
10.02.2010, 17:23
würde ich dir nicht empfehlen(ausser natürlich zum lernen). Praktisch jede moderne sprache ist OO.

Sawyer
10.02.2010, 17:35
würde ich dir nicht empfehlen(ausser natürlich zum lernen). Praktisch jede moderne sprache ist OO.
Dem kann ich nur zustimmen, es mag zwar richtig sein das für kleine Anwendungen OOP eher unpraktisch ist, allerdings ist OOP heute das maß aller dinge und fast alle Modernen und vor allem erfolgreichen Programmiersprachen sind Objektorientiert. Um mal einige Beispiele zu nennen: VB.NET, C#, Java, C++ und viele mehr...

Die Vorteile von OOP wurden ja bereits genannt, deshalb sparre ich mir das. Ansonsten kann ich nur sagen arbeite lieber gleich Objektorientiert.

MfG, Sawyer

Pr0h4ck3r
10.02.2010, 17:38
Jop hast recht fang doch mit java an ist eigdlich ne einigermaßen vertsändlich sprache und kannsz Prozedural anfangen und später in den OO teil wächseln.

LG

Kzed
10.02.2010, 17:53
Ich bin selber Programmierer und kann dir nur empfehlen dich aufen arsch zu setzen und OOP zu lernen. Prozeduale programmierung ist für kleine Projekte geignet, dennoch kann man heutzutage schon fast bei jeder Anwendung OOP benutzen. Auserdem kommst du mit OOP viel schneller weg da es einfacher und effizienteres Programmieren ist. Bei OOP ist es nicht nötig hunderte von Zeilen wieder zu ändern(Wenn ich da an meine Tage denke wo ich 700.000 Zeilen programme geschrieben habe und ich müsste in jeder 5000 Zeile was ändern >.<). Ich kann dir nur empfehlen beides zu lernen und bei beidem sehr gut zu sein. OOP allerdings wird dir vieles geben was du bei der prozedualen nicht hast und ich bin mir ziemlich sicher, falls du öfters mal programmierst wirst du OOP lieben. Je nach Sprache ist es teilweise einfacher aber auch umständlicher. Also solltest du auch mehrere Sprachen beherschen und du solltest mehr wissen als nur was genau das bedeutet. Beschäftige dich mit verschiedenen Compilern/Platformen und sei dir sicher welche du wählst den selbst die haben einen bestimmten nachweis auf deinem Code/Program. Im groben und ganzen kenn ich keine "kleinen" Projekte mehr wo prozeduale programmierung noch sinn macht, auser du entwickelst vielleicht nen hello world, oder ein sehr kleines program mit ein bis zwei buttons. Wenn es darüber hinaus geht ist OOP bereits so effizient das ich es dir nur empfehlen kann.

Zu der Frage die du dir bestimmt auch schon gestellt hast, am einfachsten hand zu haben ist Java, auch wenn es bei einigen gehasst wird, ist es mitlerweile eine sehr verbreitete Sprache die auch in vielen Universitäten sowie Schulen benutzt wird. Wenige Schulen und Unis nutzen noch C# oder C++. Falls du bis jetzt nur mit vb oder solche kleinigkeiten gearbeitet hast, kann ich dir nur sagen lass es! Diesen Mist wirst du meistens nicht mehr brauchen denn wenn du einmal das Programmieren richtig beherrscht kommt der Rest von ganz alleine.

Ich würde dir auserdem Empfehlen nicht nur zu lesen sondern wirklich auch tun! Lad dir quellcodes runter und verändere sie und schau dir das Resultat an, sei dir immer sicher was du machst und häng nicht irgendwo einfallslos rum. Das Programmieren selbst ist nicht das was am meisten verdient! Die Idee und die Planung in UML oder sonstigem ist was die meisten wirklich sehen wollen und wofür sie auch gut zahlen.

Naja, bei weiteren Fragen einfach anschreiben :D

l0dsb
10.02.2010, 18:00
Dass Prozedural generell schneller ist, stimmt einfach nicht. Unterschiede im Assembler-Source tauchen erst bei virtuellen Funktionen auf und ein kurzer Lookup in einer Tabelle mit wenigen Einträgen macht nicht wirklich was aus.

Das Topic wäre generell besser eine Umfrage, da es wie so oft einfach darauf ankommt, was einem selbst besser gefällt; damit arbeitet man dann üblicherweise auch besser. Deshalb sollte man sich beides ansehen und selbst entscheiden, wann man was einsetzt.

Ich für meinen Teil programmiere kleinere Dinge meist prozedural, selten auch OOP, wenn es Sinn macht. Bei größeren Projekten finde ich OOP wesentlich angenehmer.

Blackberry hat die Abstraktion und Code Re-Use schon angesprochen. Des Weiteren hast du nach außen hin mehrere Black Boxes, sprich, wie es funktioniert, ist dir egal, wichtig ist, was es macht. Ressourcen lassen sich dann schön über Konstruktor und Destruktor managen; Vererbung, Polymorphismus und Templates helfen bei der Abstraktion (wobei letzteres kein OOP-Konzept an sich ist).

aL1ien
11.02.2010, 06:55
;X da kann ich dir beipflichten. Die abstraktion ist der "Grundgedanke" hinter OOP. Du betrachtest alles als eine art "blackbox". Dir kann egal sein, wie es genau funktioniert.

Beispiel: Du hast eine Methode, welche in eine Datenbank schreibt. Stell dir nun vor, dass du das Datenbanksystem nun wechseln möchtest. In der Prozeduralenprogrammierung ist es, bei einem grossen Projekt, mit sehr viel aufwand verbunden dies zu ändern, anders bei OOP.

Ach ja, sieh' dir genauer das "Offen-Geschlossen-Prinzip (http://msdn.microsoft.com/de-de/magazine/cc546578.aspx)" an. Dann solltest du verstehen, auf was ich hinaus möchte.