Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Unterschied zw. Funktional/Objektorientiert/Serviceorientiert

erna9000 / 9 Antworten / Baumansicht Nickles

Hallo,
ich hoffe einer von euch kann einem Softwarelaien möglichst einfach den Unterschied von Funktional, Objektorientiert und Serviceorientiert an einem praxisnahen Beispielt erklären? Viell. kennt ja jemand ein möglichst einfaches Beispiel (nicht auf Softwareebene) sondern auf Ebene für "Entwicklungs-Deppen". 'n Prof hatte glaub ich mal n Beispiel für "Essen zubereiten" genannt...
Viell. kann mir ja jemand helfen....wäre euch sehr dankbar, da Morgen schon die Klausur ist, und die Frage in einer älteren Klausur schon mal so in der Art drankam....

Danke Danke Danke :-)

bei Antwort benachrichtigen
ChrE erna9000 „Unterschied zw. Funktional/Objektorientiert/Serviceorientiert“
Optionen

Hallo,

> da Morgen schon die Klausur ist

Was studierst Du denn?

Gruss

ChrE

bei Antwort benachrichtigen
Ten_Eniunlsl erna9000 „Unterschied zw. Funktional/Objektorientiert/Serviceorientiert“
Optionen

Hi
Also Objektorientiert ist etwa so
Du hast ein Objekt Pizza,
dieses kann Variablen enthalten also z.B. Salamie, Tomaten Soße, Knoblauch etc.
es gibt aber auch Methoden/Funktionen z.B in den offen schieben, aus den offen holen etc..
dann gits noch get/set bzw. getter und setter z.B. der darf die das stück essen der darf dort nen anderen belag hinlegen sind halt zugriffs methoden.

Dann Funktional
du hast eigentlich bloß variablen und Funktionen.
die nicht direkt einem objekt zugehören sondern mit informationen gefütert werden.
das heist du hast z.B ein Array namens pizza und das erste element ist Tomatensoße das zweite salamie
und dann hast du funktionen wie salamie drauf legen etc.
Das heist du hast halt kein objekt mehr sondern eine lose ansammlung von variablen und funktionen.
Dadurch ist es sehr leicht möglich eine funktionen hier z.B. salamie belegen auch auf ein brötchen anwenden kannst.

Serviceorientiert kenn ich leider auch nicht.

Sers

Ten

bei Antwort benachrichtigen
ChrE Ten_Eniunlsl „Hi Also Objektorientiert ist etwa so Du hast ein Objekt Pizza, dieses kann...“
Optionen

Hallo,

Objektorientiert und funktional sind Programmierparadigmen.
SOA ist ein Architekturmodell. Das kann man nicht so einfach vergleichen, weil es
keinen Sinn macht.

Deine Vergleiche sind nicht so toll. Die hinken alle immer.
Ob nun die Pizza mit Methoden oder Funktionen belegt wird, ist ziemlich Banane...

Ich finde diese Erklärung gut:
http://www.andreas-schlapsi.at/2009/04/14/was-ist-funktionale-programmierung/

Habe gleich bei Amazon eine schöne Urlaubslektüre gefunden:
http://www.amazon.de/Vision%C3%A4re-Programmierung-Sprache-ihre-Sch%C3%B6pfer/dp/3897219344/ref=sr_1_4?ie=UTF8&s=books&qid=1277912814&sr=8-4

Da geht es um Konzepte und nicht um die Ausführung.

Gruss

ChrE

bei Antwort benachrichtigen
Borlander Ten_Eniunlsl „Hi Also Objektorientiert ist etwa so Du hast ein Objekt Pizza, dieses kann...“
Optionen
Du hast ein Objekt Pizza, dieses kann Variablen enthalten also z.B. Salamie, Tomaten Soße, Knoblauch etc.
Also wenn schon, dann hat man ein Pizza-Klasse mit bestimmten Eigenschaften wie den Durchmesser und einer Menge von Zutaten in Form von Objekten der Klasse bzw. Unterklassen von Pizzazutat. Bei den Zutaten drängt sich dann eine Vererbungshierarchie geradezu auf: Rindsknoblauchwurst extends Wurst extends Fleischbelag extends Pizzazutat. Die Zutaten haben wiederum Eigenschaften wie Nährwert und ggf. Preis, die dann wiederum von Methoden in der Pizzaklasse aufgerufen werden könnten um Nährwert und Preis der gesamten Pizza zu berechnen, oder zur prüfen ob die Pizza als vegetarisch durchgeht.

Eine entsprechende Implementierung wäre z.B. für ein Pizza-Bestell-System interessant ;-)


Gruß
Borlander

PS: Sinnvoll wäre auch noch eine Erweiterung auf die Klasse PizzaFuerBorlander, die wirksam das belegen mit nicht geeigneten Zutaten verhindert und prüft ob mich die Pizza-Instanz satt machen würde.

PPS: Jetzt habe ich irgendwie hunger auf Pizza.
bei Antwort benachrichtigen
Andreas42 erna9000 „Unterschied zw. Funktional/Objektorientiert/Serviceorientiert“
Optionen

Hi!

Meine Meinung, allerdings nicht unbedingt aus dem Lehrbuch:

Bei der Programmierung geht es eigentlich immer darum vorgegebene Daten zu manipulieren. Selbst einfache Aufgaben wie "Gib eine Zahl auf dem Bildschirm aus" oder "drück eine Taste" lassen sich darauf zurückführen (die Zahl ist hier ein einzelnes Datenfeld und die Manipulation ist das Anzeigen auf dem Bildschirm; im zweiten Beispiel ist das Datenfeld eine Byte und die Manipulation das Warten das eine Taste gedrückt wird).

Das geht so auch mit komplexen Datenstrukturen. Die Sortierung von Adressdaten ist auch so ein Beispiel (Daten sind alle Adressen und die Manipulation ist die Sortierung).

Die Manipulation erfolgt in Programmen. Programmroutinen werden als Funktionen bezeichnet. Im Folgenden stehen Funktionen daher immer für eine Folge bzw. Gruppe von Programmcode.
Die Funktionen nutzen Datenstrukturen um die Daten intern abzulegen und verarbeiten zu können.

In der Softwareentwicklung gibt es zwei verschiedene Ansätze an diese Sache ranzugehen: einmal stelle ich die Funktionen in den Mittelpunkt (und bestimme die Datenstrukturen dann danach, was in den Funktionen benötigt wird). Dies ist die Funktionale-Programmsicht.
Die andere Sichtweise ist die Datenstrukturen in den Mittelpunkt zu stellen. Hier lege ich zuerst fest, was ich an Daten verwalten will. Dann lege ich die Funktionen fest, die diese Daten bearbeiten werden. Dies ist die Objektorientierte-Programmsicht.

Akademiker haben da immer eine Unterschwellige Befürchtung: wenn ich etwas anders mache, nimmt das keiner erst, wenn es nicht ganz neu aussieht.

Ich behaupte hier, dass das bei der Namensgebung "Objektorientierung" der Fall war. Hätte ich das festgelegt, wäre das eine "Funktionsbasiert" gewesen und das andere "Datenstrukturbasiert".
Auf den Idee jemanden zu erklären dass alles neu ist, weil man nun Objekte manipuliert, muss man erstmal kommen. (Konsequenterweise nennen die da Funktionen nun nicht mehr Funktionen, sondern sprechen von "Methoden".)

Die Entwicklung von der Funktionalen Programmierung zur Objektorientierung ist aus meiner Sicht evolutionär fast zwingen. Ich bin da selbst durch: erst hatte ich grosse Mengen an Funktionen, die keinen formalen (syntaktische) Bezug zu ihren Datenstrukturen hatten. Die Idee Datenstrukturen syntaktisch um Funktionen zu erweitern ist fast zwingend. Die Sichtweise die Daten in den Mittelpunkt zu stellen ist auch so nicht neu. Wenn ich eine Adressverwaltung programmieren will, weiss ich, dass ich Adressdaten im Mittelpunkt haben werde. Die Objektorientierung unterstützt das dann auch formal (syntaktisch im Programm).


Die Serviceoriontierung (SOA) ist keine Alternative oder anderer Betrachtungswinkel. Sie setzt übergeordnet auf. Hier betrachtet man Prozesse (i.d.R. solche in Unternehmen). Z.B. bei einem Verkauf in einem Unternehmen:

- ich erfasse den Kunden
- ich erfasse den Auftrag
- ich produziere die Ware
- ich liefere die Ware
- ich stelle eine Rechnung
- ich verbuche die Zahlung

Diese einzelnen Prozesse kann man in der EDV-Abbilden. Man kann leicht erkennen, dass man es hier wieder mit Datenstrukturen und Funktionen zu tun hat. (Kundendatensatz, Auftragsdatensatz, Artikel=Ware; Rechnungsdaten; Zahlungseingänge; das ganze muss in die dicke Datenbank rein und dort passend verrührt werden, ergo: grosser Bedarf an Programmcode; an die Umsetzung kann man dann wieder funktional oder objektorientiert herangehen).

Bis dann
Andreas

PS: Vorsicht: ich musste das nie in einer Prüfung vertreten. ;-)

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
ChrE erna9000 „Unterschied zw. Funktional/Objektorientiert/Serviceorientiert“
Optionen

Hallo,

Werden wir je wieder was von Erna hören?

Gruss

ChrE

bei Antwort benachrichtigen
erna9000 Nachtrag zu: „Unterschied zw. Funktional/Objektorientiert/Serviceorientiert“
Optionen

@ChrE

man wird, sobald erna9000 wieder vor dem PC sitzt ;-)

es handelt sich dabei um die Klausur "Software Engineering" im Studium iVWL

Danke schon mal für eure Antworten

bei Antwort benachrichtigen
ChrE erna9000 „@ChrE man wird, sobald erna9000 wieder vor dem PC sitzt - es handelt sich dabei...“
Optionen

und, wie war die Klausur?

Gruss

ChrE

bei Antwort benachrichtigen
ChrE Nachtrag zu: „und, wie war die Klausur? Gruss ChrE “
Optionen

Wahrscheinlich doch nicht so toll... Gruss ChrE

bei Antwort benachrichtigen