Gegenteil der Obejtorientierten Software Entwicklung?
Servus leute, ich habe angefangen C# zu lernen
und dort ist immer die rede von Objektorientierter Software Entwicklung.
Gibts da noch andere?
Und kann mir jemand vor und Nachteile nennen?
und bitte keine Wiki einträge, habe mir da grad einen durchgelesen und verstehe erstmal nix :D
5 Antworten
Neben der Objektorientierten Programmierung gibt es noch die prozedurale Programmierung.
Während du bei OOP mit Objekten arbeitest, die quasi eine Abstraktion der wirklichen Objekte bilden z.B kannst du dadurch sehr einfach deinen Code warten (pflegen), in dem du verschiedene Attribute (Eigenschaften) deiner Objekte änderst ohne den Rest des Programmes groß ändern zu müssen. Bei der prozeduralen Programmierung arbeitest du nicht mir Objekten sondern reihst quasi nur Funktionen aneinander (ist jetzt nicht ganz richtig, ist aber wohl für das Verständnis am einfachsten :) ) dadurch musst du weniger tippen und es für viele einfacher (liegt aber wohl daran, dass OOP neuer ist).
Viel Spaß mit dem Programmieren ;)
Du kannst mit beiden das gleiche machen. Im Prinzip ist die OOP eher ein Gedankenkonstrukt. Und ich wollte nicht sagen, dass prozedurale einfacher ist, nur lernen viele zuerst prozedural und dadurch empfinden sie dieses oft als einfacher.
doofe ILS, hat mir sofort die OOP hingeschmissen und so in der Art, los LERNE ^^
Spielst Du Rollenspiele? Prozedurale Programmierung ist der Krieger, OOP der Zauberer.
Auf kurze Sicht ist PP leichter zu verstehen, schneller zu schreiben und wird schneller ausgeführt.
Auf lange Sicht ist OOP leichter zu pflegen und Du kannst immer wieder (und mit der Zeit immer mehr) auf das, was Du schon geschrieben hast, zurückgreifen und musst nicht jedesmal das Rad neu erfinden.
Prinzipiell kann man zwei große Gruppen von Programmiersprachen unterscheiden:
- Imperative Programmiersprachen und
- Deklarative Programmiersprachen.
Die zweite Gruppe wird allerdings nicht benutzt, um Programme zu schreiben, sondern um z.B. programmierbare Logikchips zu programmieren oder um Modelle für Physiksimulationen anzugeben. Ein Beispiel für so eine Programmiersprache ist VHDL.
Programme werden fast ausnahmslos mit imperativen Programmiersprachen erstellt. Hier kann man wieder in drei große Gruppen unterteilen:
- Lineare bzw. unstrukturierte Sprachen
- Prozedurale Sprachen
- Objektorientierte Sprachen
Unstrukturierte Sprachen sind sehr primitive Sprachen, die hauptsächlich für "Kleinigkeiten" verwendet werden. Ein Beispiel hierfür sind Windows-Batch-Dateien (.bat).
- Vorteil: Programme sind sehr einfach und schnell realisierbar
- Nachteil: Nur sehr simple Programme sind überhaupt machbar
Bei Prozeduralen Sprachen kann man Funktionen definieren. Zum Beispiel könnte man eine Funktion "Volumen eines Würfels berechnen" definieren, die aus der Kantenlänge eines Würfels das Volumen berechnet. Diese Funktion kann man dann mehrfach im Programm benutzen. Beispiele für solche Sprachen sind C und Pascal.
- Vorteil: Für Anfänger sicherlich leichter als objektorientiertes Programmieren
- Vorteil: Benötigt wenig Speicher und kann daher auch für Microcontroller verwendet werden
- Nachteil: Weniger übersichtlich als objektorientierte Programmierung
Bei objektorientierten Sprachen kann man nicht nur Werte (z.B. Kantenlänge), sondern die Kombination von Werten und dazugehörigen Funktionen (also "Volumen berechnen") abspeichern. So ein "Paket" aus Werten und Funktionen nennt man "Objekt". Der Vorteil daran ist, dass man, wenn man jetzt zum Beispiel das Volumen eines Körpers berechen will, dessen Daten (z.B. Kantenlänge) gespeichert sind, nicht wissen muss, was für ein Körper (Würfel, Kugel, ...) dies ist - schließlich hat man zusammen mit der Information auch eine Funktion zur Berechnung des Volumens abgespeichert. Außerdem gibt es noch einige Features wie "Vererbung" (es ist erst mal egal, was das genau ist), die es möglich machen, bestimmte Programmteile für ganz verschiedene Aufgaben zu verwenden. Beispiele für solche Sprachen sind C++, Java und C#.
- Vorteil: Selbst bei sehr großen Programmen bleibt alles (meistens) übersichtlich
- Vorteil: Viele Funktionen lassen sich einfacher realisieren als prozedural
- Nachteil: Für Anfänger sicherlich schwieriger
- Nachteil: Durch höhere Hardwareanforderungen lassen sich insbesonders kleine Microcontroller nicht objektorientiert programmieren.
Viele Programmierer hier auf GF.NET behaupten übrigens, das C# (das ist objektorientiert) sehr einfach für Anfänger wäre.
Windows-Programme, Apps (für Smartphones und Tablets) sowie Computerpiele werden heutzutage fast ausschließlich objektorientiert programmiert, während Microcontroller (also z.B. die Steuerung in der Waschmaschine) fast nur in C (daher prozedural) programmiert werden.
Vielen Dank für Deine tolle ausführliche Erklärung, 7 Jahre später habe ich Deine Antwort gefunden die genau meine Frage beantwortet! 😊 💖 👍
vielleicht hilft dir vorerst dieser link... :) Vorteile: "Die Anwendbarkeit ist nicht auf einen bestimmten Typ von Problemen beschränkt."
& alternativen werden genannt (zB imperative Programmiersprachen)
Quelle: http://ag-kastens.uni-paderborn.de/lehre/material/java_vorlesung/folien/java_node1.html
Wenn man Programmieren lernen will, muß man auch die „Fachsprache“ bzw. deren „Vokabeln“ lernen, die in der Wikipedia für Einsteigerzwecke ausreichend erklärt wird.
Es gibt viele solche Programmierparadigmen, die sich aber häufig nur im Detail unterscheiden. Siehe http://de.wikipedia.org/wiki/Programmierparadigma Ab hier kann man sich bei wirklichem Interesse auf sehr interessante Entdeckungsreisen begeben …
Auch wenn man nicht alles sofort versteht, sollte man sich mindestens einmal damit befasst haben …
es gibt noch die imperative Programmierung http://de.wikipedia.org/wiki/Imperative_Programmierung
Objektorientierte Softwareentwicklung ist ein Teil der imperativen Softwareentwicklung, da die Befehle (z.B. Methodenaufrufe) in den Methoden in einer bestimmten Reihenfolge abgearbeitet werden.
welches ist dann mächtiger?
bzw, mit welcher kann man mehr machen?
oder könnte ich wenn ich ein Programm erstellen soll, es mit beiden hinbekommen.
aber mit der prozedurale alles einfacher wäre?