Forum: PC-Programmierung Was bedeutet oop?


von rObert (Gast)


Lesenswert?

Was genau bedeutet objektorientiertes Programmieren? Worin besteht der 
Unterschied zum Programmieren im nicht OOP-Stil?

Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst 
es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht 
fragen.

Also  bitte mal allgemeinverständlich erklärt:

Danke.

: Verschoben durch Moderator
von Oliver S. (oliverso)


Lesenswert?

rObert schrieb:
> Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst
> es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht
> fragen.

Dann frag halt gar nicht erst.

Den Rest erzählt die google.

Oliver

von rObert (Gast)


Lesenswert?

Was´n das für ne bescheuerte Antwort!?
Ist es üblich einen Sachverhalt anhand zweier Fachbegriffe daraus zu 
erklären?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Sag uns doch erst einmal, was du an Erklärungen wie dieser

  http://de.wikipedia.org/wiki/Objektorientierte_Programmierung

dieser

  http://en.wikipedia.org/wiki/Object-oriented_programming

oder dieser

  https://www.google.de/search?q=objektorientierte+programmierung

nicht verstehst oder als unvollständig oder falsch findest.

rObert schrieb:
> Ist es üblich einen Sachverhalt anhand zweier Fachbegriffe daraus zu
> erklären?

Ja. Denn wenn man jedesmal bei Adam und Eva anfangen würde, würden 
solche Definitionen dicke Bücher füllen.

: Bearbeitet durch Moderator
von Fred (Gast)


Lesenswert?

Yalu X. schrieb:
>   http://en.wikipedia.org/wiki/Object-oriented_programming

"Object-oriented programming (OOP) is a programming paradigm that 
represents concepts as "objects" that have data fields (attributes that 
describe the object) and associated procedures known as methods."

C++-zentrischer Bullshit. Es gibt genügend objektorientierte Sprachen 
und Objektsysteme, die Funktionen nicht in Objekten kapseln.

von Bitflüsterer (Gast)


Lesenswert?

Naja. Deine Art der Fragestellung ist problematisch.

Zunächst sind Klasse und Vererbung zwei Begriffe die in dem Paradigma 
definiert werden. Insofern kann man zu Erklärung von OOP eine Zeit lang 
auch ohne diese Begriffe auskommen.

Aber das Problem ist Deine Forderung nach "Allgemeinverständlichkeit". 
Wir wissen ja nicht zu welchem Teil der "Allgemeinheit" Du gehörst. 
Einem völligen Laien muss man das anders erklären als einem erfahrenen 
Programmierern, wobei es in letzerem Fall noch darauf ankäme in welcher 
Sprache er programmiert hat. Fast noch ein wenig schwieriger ist es bei 
einem Anfänger, weil der noch nicht sattelfest ist, was bedeutet das er 
viele Begriffe und Vorgehensweisen die er z.B. aus einer funktionalen 
Sprache kennt, eben nur ansatzweise beherrst und dazu neigt sie in 
ungeeigneter Weise mit dem neuen Wissen, falls wir denn hier was über 
OOP erkären zu verbinden.

Erzähle uns also mal wer Du bist, was Du machst und schon kannst und 
warum Dich OOP interessiert. Das hilft uns Dir zu helfen.

von (prx) A. K. (prx)


Lesenswert?

Fred schrieb:
> C++-zentrischer Bullshit. Es gibt genügend objektorientierte Sprachen
> und Objektsysteme, die Funktionen nicht in Objekten kapseln.

Um zu klären, was du damit meinst, wäre ein Beispiel sinnvoll.

von rObert (Gast)


Lesenswert?

Yalu X. schrieb:
> rObert schrieb:
>> Ist es üblich einen Sachverhalt anhand zweier Fachbegriffe daraus zu
>> erklären?
>
> Ja. Denn wenn man jedesmal bei Adam und Eva anfangen würde, würden
> solche Definitionen dicke Bücher füllen.


Falsch.
Beispiel: Malerei ist Malerei mit Farben.
Alles klar?
Und Bevor man "Klassen" und "Vererbung" verwendet, sollte man diese 
Begriffe erklären.

Die Kunst, sich mit wenigen Worten verständlich auszudrücken, beherrscht 
eben fast keiner mehr. Oder man ist zu faul;-)

von Fred (Gast)


Lesenswert?

CLOS zum Beispiel. Generische Funktionen statt Methoden.

von Bitflüsterer (Gast)


Lesenswert?

>Falsch.

Ich denke Du gehst hier, sozial gesehen, ungünstig vor.

Ich empfehle Dir dringend, Dich jeglicher Belehrungen zu enthalten.

Es wird günstiger sein Du fragst einfach und unterlässt vorläufig 
Diskussionen. Es wird auch angemessen sein, Beiträge die Dir völig 
falsch zu sein scheinen, entweder zu ignorieren oder Deine Kritik in die 
Form einer höflichen Frage zu kleiden.

von rObert (Gast)


Lesenswert?

Fred schrieb:
> Es gibt genügend objektorientierte Sprachen
> und Objektsysteme, die Funktionen nicht in Objekten kapseln.


Was sagt einem Dieser Satz?
Das es irgend etwas nicht gibt.
Und was sagt er mir?
Nicht.

Bitflüsterer schrieb:
> Erzähle uns also mal wer Du bist, was Du machst und schon kannst und
> warum Dich OOP interessiert. Das hilft uns Dir zu helfen.

Wozu?
Ich wollte wissen, was oop ist.  Und was der Unterschied zu nicht-oop 
ist.
Das impliziert doch, dass ich den Begriff "nicht-oop" kenne.
Also, ich habe Erfahrung mit nicht OOP Programmiersprachen/-techniken.

Anhand meines Schreibstiles und der korrekten Schreibweise von Sätzen 
und Wörtern erkennst du, dass ich nicht zur Generation 25- gehören kann 
;-)

Ich hatte gehofft, dass jemand OOP einfach erklären kann. Wenn dieser 
Begriff eine Komplexität nahe des Universums hat, dann wird das 
natürlich unmöglich zu bewerkstelligen sein.
Schade eigentlich.

von Udo S. (urschmitt)


Lesenswert?

rObert schrieb:
> Oder man ist zu faul;-)

Sich grundlegende Definitionen vorkauen zu lassen statt sich mal selbst 
einzulesen könnte man genauso bezeichnen :-)

von Dennis S. (eltio)


Lesenswert?

rObert schrieb:
> Was genau bedeutet objektorientiertes Programmieren? Worin besteht der
> Unterschied zum Programmieren im nicht OOP-Stil?
>
> Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst
> es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht
> fragen.
>
> Also  bitte mal allgemeinverständlich erklärt:
>
> Danke.

Es gibt sehr viel Literatur dazu und wenn nicht erkennbar ist, dass du 
wenigstens versucht hast diese zu erarbeiten, reagieren die Leute hier 
(zu Recht) "allergisch". Ein Einstieg bietet vielleicht [1], wenn du mit 
dem (imho!) recht uneingängigen Wiki-Stil nicht zurechtkommst.

Gruß Dennis

[1]: http://openbook.galileocomputing.de/oop/

von Fred (Gast)


Lesenswert?

rObert schrieb:
> Und was sagt er mir?
> Nicht.

Das ist mir egal, weil ich nicht mit dir, sondern mit A.K. rede.

von Bitflüsterer (Gast)


Lesenswert?

>Das impliziert doch, dass ich den Begriff "nicht-oop" kenne.
Logisch gesehen ist die Annahme das Du das kennst, zwar plausibel, aber 
die Praxis in diesem Forum zeigt, dass sich die Annahme nicht immer, 
sogar eher selten bestätigt. Dabei gibt es einen korrelativen 
Zusammenhang zwischen der Lakonie der Frage und des Umfanges des 
Vorwissens.
Mindestens aber ist die Forderung nach "Allemeinverständlichkeit" 
erklärungsbedürftig, wie ich schon schrieb.

Deinen Schreibstil würde ich eher als "roh", "unangemessen familiär", 
"unhöflich" und "belehrend" bezeichnen. Demnach gehörst Du eher zur 
Generation 16, nicht 25.

Da Du aber darauf bestehst, den Thread auf Deine Art zu gestalten, 
verweise ich auf die verlinkten Artikel von Yalu und ziehe mich zurück. 
Viel Erfolg noch.

von rObert (Gast)


Lesenswert?

Wenn ich das bisherige mal zusammenfassen darf:

OOP ist ein Phänomen, welches sich nicht mit sprachlichen Mitteln 
beschreiben lässt. Um es zu begreifen, muss man 300 Seiten lesen.
Danke, weiß nun Bescheid.

von Udo S. (urschmitt)


Lesenswert?

Bitflüsterer schrieb:
> Logisch gesehen ist die Annahme das Du das kennst, zwar plausibel, aber
> die Praxis in diesem Forum zeigt, dass sich die Annahme nicht immer,
> sogar eher selten bestätigt. Dabei gibt es einen korrelativen
> Zusammenhang zwischen der Lakonie der Frage und des Umfanges des
> Vorwissens.
> Mindestens aber ist die Forderung nach "Allemeinverständlichkeit"
> erklärungsbedürftig, wie ich schon schrieb.
>
> Deinen Schreibstil würde ich eher als "roh", "unangemessen familiär",
> "unhöflich" und "belehrend" bezeichnen. Demnach gehörst Du eher zur
> Generation 16, nicht 25.
>
> Da Du aber darauf bestehst, den Thread auf Deine Art zu gestalten,
> verweise ich auf die verlinkten Artikel von Yalu und ziehe mich zurück.
> Viel Erfolg noch.

So schön hätte ich es nie formulieren können.
1A, danke.
Gruß, Udo

von Dussel (Gast)


Lesenswert?

rObert schrieb:
> Die Kunst, sich mit wenigen Worten verständlich auszudrücken, beherrscht
> eben fast keiner mehr. Oder man ist zu faul;-)
Gerade hier im Forum gibt es halt einige dumme Leute, die sich für klug 
halten und auch eine gute Antwort schlecht machen wollen. und darauf 
hatte ich keine Lust. Siehe
>C++-zentrischer Bullshit. Es gibt genügend objektorientierte Sprachen
>und Objektsysteme, die Funktionen nicht in Objekten kapseln.

Ich probiere es jetzt mal. Dabei gehe ich von C++ und Java als 
meistgebrauchten (halb)objektorientierten Sprachen aus.
Ein Objekt ist eine Sammlung von Daten und Funktionen. Die Beschreibung, 
welche Daten und Funktionen das Objekt haben soll, ist die Klasse (oder 
Klassendefinition). Das heißt, die Klasse gibt an, welche Datentypen 
enthalten sind, während ein Objekt tatsächlich diese Daten enthält.
Als Beispiel nehmen wir eine Personendatenbank. Die Definition legt 
fest, dass jede Person einen Namen, ein Geburtsdatum und eine 
Personenkennziffer haben muss.
Wenn eine neue Person in die Datenbank aufgenommen wird, wird ein neues 
Objekt vom Typ Person erzeugt, dem jetzt ein Name, ein Geburtsdatum und 
eine PKZ zugewiesen wird. Die Person 'Hans', '15.03.1957', '15031957001' 
ist jetzt ein Objekt vom Typ Person.
So kann man eine Liste mit Personen erstellen und weiß sicher, dass jede 
Person einen Namen, ein Geburtsdatum und eine PKZ hat, die man lesen und 
ändern kann.
Die Klasse Person kann nun auch Methoden (Funktionen) haben, zum 
Beispiel eine, die aus dem Geburtsdatum die PKZ berechnet. Der Vorteil 
der Kapselung als Objekt ist, dass alle Objektvariablen global im Objekt 
verfügbar sind. Das heißt, man muss nicht jede Variable der Funktion 
übergeben, hat allerdings auch nicht die Nachteile einer 
programmglobalen Variable. Die PKZ-Funktion kann also auf das 
Geburtsdatum direkt zugreifen und muss es nicht als Argument übergeben 
bekommen.

von Dennis S. (eltio)


Lesenswert?

rObert schrieb:
> Wenn ich das bisherige mal zusammenfassen darf:
>
> OOP ist ein Phänomen, welches sich nicht mit sprachlichen Mitteln
> beschreiben lässt. Um es zu begreifen, muss man 300 Seiten lesen.
> Danke, weiß nun Bescheid.

Deswegen heißt es Wissen "erarbeiten".

von Dussel (Gast)


Lesenswert?

Zur Fragestellung: Im Gegensatz zu viele hier, schreibt er auf Deutsch 
und stellt eine angemessene Frage. Oft ist es für den Einstig gut, wenn 
man einen einfachen Ansatz zu dem Thema hat auf dem man dann aufbauen 
kann. Gerade Wikipedia als Lexikon versucht (technische) Themen 
möglichst kompakt und präzise, aber deswegen auch einsteigerunfreundlich 
zu beschreiben. Deshalb ist es oft gut, wenn jemand das Thema mit 
einfachen Worten beschreibt.
Ich würde das so sehen, als ob jemand, der fragt, was eine Ampel ist, 
auf den Gesetzestext zur Definition von Ampeln verwiesen wird. In dem 
Text ist genau definiert, was eine 'Lichtzeichenanlage' ist, aber 
selbst, wer weiß, was eine Ampel ist, würde sie aus dem Text 
wahrscheinlich nur schwer wiedererkennen. Die Ampel war nur ein 
Beispiel, aber wer Gesetzestexte kennt, weiß was ich ich meine.

von Borislav B. (boris_b)


Lesenswert?

Dussel schrieb:
> Ich probiere es jetzt mal.

Irgendein Dussel mit einer Tüte voll Trollfutter findet sich immer ;-)

von rObert (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Demnach gehörst Du eher zur
> Generation 16

;-)
Diese Generation könnte doch diese Sätze weder deuten noch fehlerfrei 
abschreiben.

Mein Ausgangsposting ist eine kurz und knapp gefasste Bitte an das Forum 
und seine Leser.
Ich habe natürlich versucht, mich anderweitig schlau zu machen. In fast 
jeder  Ausführung fallen schon im zweiten Satz die eingangs zitierten 
Begriffe.
Weil ich das vermeiden wollte, hab ich gebeten, diese Begriffe anfangs 
zu meiden.
Sonst hätte ich mir die Antwort doch gleich in der Form 
"Objektorientiere Sprachen benutzen Klassen und Objekte und die 
Vererbung. Dabei kapseln sie..." selber geben können.
Die Begriffe wurden dem allgemeinen Sprachgebrauch entwendet und 
zweckentfremdet. Und genau damit hab ich ein Problem. Es ist 
unverschämt, die Kenntnis ihrer neuen, geheimen Bedeutung bei einem 
interessierten Neuling vorauszusetzen. DAS ist unsozial!

von Dussel (Gast)


Lesenswert?

Boris P. schrieb:
> Irgendein Dussel mit einer Tüte voll Trollfutter findet sich immer ;-)
Es gibt Trolle, vielleicht ist er auch einer, aber ich kann mit bestem 
Gewissen und langjähriger Erfahrung hier im Forum keinen Trollversuch in 
der Frage erkennen.

von HolgerT (Gast)


Lesenswert?

Vielleicht hilft dir das weiter:
http://www.b.shuttle.de/b/humboldt-os/python/kapitel1/oop.html

Immerhin ein erster Überblick, was oop ist, ohne sofort mit 
Begriffsdefinitionen um sich zu werfen.

von mullwark (Gast)


Lesenswert?

rObert schrieb:
> OOP ist ein Phänomen, welches sich nicht mit sprachlichen Mitteln
> beschreiben lässt. Um es zu begreifen, muss man 300 Seiten lesen.

Sehe nur ich da einen Widerspruch?

von rObert (Gast)


Lesenswert?

Dussel schrieb:
> rObert schrieb:

> Ich probiere es jetzt mal.

Danke Dussel:-)
Also schon sehr abstrakt, aber nachvollziehbar was du schreibst. OOp ist 
sicher nicht 'quer reinerfunden', sondern als Ergebnis weiter 
entwickelter Anforderungen an eine Programmiertechnik entstanden.
Welche Vorteile bietet OOP, und wo werden diese Vorteile genutzt?
Für wen ist OOP eine Vereinfachung? Wird damit Programmieren 
übersichtlicher?

von Moritz M. (avrprogger)


Lesenswert?

Moin,

Es geht bei OOP eigentlich nur darum, dass man zusammenhängende 
Methoden, Eignschaften, Daten usw. zu Klassen zusammenfässt (Kapselung). 
Von diesen Klassen kann man dann untereinander unabhänige Objekte 
erzeugen und diese dann verwalten. Z.B kannst du eine Klasse Auto 
programmieren und eine Klasse Haus. Beide Klassen und deren Objekte sind 
vollkommen unabhäning und haben nichts miteinander zu tuen. Durch die 
OOP trennst du ihre Daten und Funktionen. Z.B kann die Klasse Auto die 
Funktion "Fahren" besitzen. Die Klasse Haus braucht diese Funktion aber 
nicht, dafür kann aber z.B. die Klasse Haus die Eigenschaft besitzen, 
wie viele Wohnungen es in dem Haus gibt, eine Eigenschaft die das Auto 
natürlich nicht braucht. Außerdem kann man dann auch von einer Klasse 
beliebig viele Objekte erzeugen.

Das ist natürlich nur die Spitze des Eisberges. Hinterher kommen dann 
noch Vererbung und Polymorphie dazu (OOP besteht im wesentlich aus 
Kapselung, Vererbung und Polymorphie).

Ich empfehle dir, z.B in die Bibliothek zu gehen und mal in Grundlagen 
Bücher zu C++, C#, Java zu suchen. Gibt auch gute Bücher für Kinder / 
Jugendliche, wo das ganze Thema sehr einfach erklärt ist.

Moritz

von rObert (Gast)


Lesenswert?

mullwark schrieb:
> Sehe nur ich da einen Widerspruch?

Nein. Das Buch nutzt nicht ausschließlich sprachliche Mittel, sondern 
auch graphische.

Dussel schrieb:
> Ich würde das so sehen, als ob jemand, der fragt, was eine Ampel ist,
> auf den Gesetzestext zur Definition von Ampeln verwiesen wird. In dem
> Text ist genau definiert, was eine 'Lichtzeichenanlage' ist, aber
> selbst, wer weiß, was eine Ampel ist, würde sie aus dem Text
> wahrscheinlich nur schwer wiedererkennen. Die Ampel war nur ein
> Beispiel, aber wer Gesetzestexte kennt, weiß was ich ich meine.

Hey Dussel, ich glaube wir verstehen uns;-).
Habe selber jahrelang lernwilligen Menschen Gesetze erklärt. Weiß daher 
ziemlich genau, wie man es nicht machen sollte.

von (prx) A. K. (prx)


Lesenswert?

Fred schrieb:
> CLOS zum Beispiel. Generische Funktionen statt Methoden.

Als einziger Mechanismus ist das eine interessante Methode. Schätze dass 
etwas Sorgfalt nötig ist, um später noch durchzublicken. Deklaratorische 
Kapselung wär freilich nicht direkt typisch für LISP, generell gehen 
dynamische Sprachen lockerer mit solchen Themen um als statische.

von rObert (Gast)


Lesenswert?

Moritz M. schrieb:
> Beide Klassen und deren Objekte sind
> vollkommen unabhäning und haben nichts miteinander zu tuen.

Ok.
Bleiben wir mal dabei: Könnte jetzt aber eine "Verbindung" von Auto und 
Haus über "Garage" hergestellt werden? Würde das was nützen?

von Oliver S. (oliverso)


Lesenswert?

rObert schrieb:
> Danke Dussel:-)
> Also schon sehr abstrakt, aber nachvollziehbar was du schreibst.

Dir ist aber schon aufgefallen, daß da schon im zweiten Satz der 
Erklärung das Wort "Klasse" auftaucht, oder? Insofern ist diese 
Erklärung für dich  nicht nutzbar.

Oliver

von Dussel (Gast)


Lesenswert?

rObert schrieb:
> wo werden diese Vorteile genutzt?
In der Softwareentwicklung ;-)

rObert schrieb:
> Welche Vorteile bietet OOP
Variablen können im Objekt selber uneingeschränkt genutzt werden, aber 
der Zugriff von außen kann beschränkt werden. Siehe dazu auch die Vor- 
und Nachteile globaler Variablen.

Der Aufbau des Objekts ist egal, nur die Schnittstellen müssen definiert 
sein. Eine Matrixklasse könnte und sollte eine Funktion zum Invertieren 
haben. Das heißt, es gibt sowas wie
Matrix B=Invertiere(Matrix A)
Wie die Invertierung in der Funktion geschieht, ist vollkommen 
irrelevant für die Funktion. Jemand der die Matrixklasse nutzt, muss nur 
wissen, wie sie angesprochen wird. Und die Klasse funktioniert 
unabhängig vom Restprogramm immer gleich. Dadurch kann die Entwicklung 
aufgeteilt werden, indem die Schnittstellen definiert werden. Dann setzt 
sich einer dran und schreibt eine Klasse unter Berücksichtigung der 
Schnittstellen und wenn die Schnittstellen genau genug definiert wurden, 
kann die Klasse sofort in Programme eingesetzt werden.

Bei Fehlern kann rausgefunden werden, wo der Fehler herkommt und es muss 
nur die eine Klasse, die den Fehler verursacht überprüft werden.

Objektvariablen können gegen Zugriff von außen geschützt werden. So kann 
man die Variable Alter gegen Zugriff von außerhalb der Klasse schützen. 
Dann kann diese Variable nur über eine Setterfunktion geändert werden. 
In dieser Funktion kann aber schon geprüft werden, ob das Geburtsdatum 
nicht in der Zukunft oder zu weit in der Vergangenheit liegt. Dadurch 
ist sichergestellt, dass jede Objektvariable einen gültigen Wert hat und 
das muss nicht vor jeder Benutzung neu geprüft werden.

von rObert (Gast)


Lesenswert?

Oliver S. schrieb:
> rObert schrieb:
>> Danke Dussel:-)
>> Also schon sehr abstrakt, aber nachvollziehbar was du schreibst.
>
> Dir ist aber schon aufgefallen, daß da schon im zweiten Satz der
> Erklärung das Wort "Klasse" auftaucht, oder? Insofern ist diese
> Erklärung für dich  nicht nutzbar.
>
> Oliver

Genau genommen ist es der vierte Satz. Der Unterschied ist, dass er 
sagt, was Klasse im Zsh mit OOP bedeuten kann.
Aber danke dass Du das für mich entscheidest.

von Dussel (Gast)


Lesenswert?

Oliver S. schrieb:
> Dir ist aber schon aufgefallen, daß da schon im zweiten Satz der
> Erklärung das Wort "Klasse" auftaucht, oder?
Ich habe 'Klasse' vor der Benutzung 'definiert'.
Dussel schrieb:
> Die Beschreibung,
> welche Daten und Funktionen das Objekt haben soll, ist die Klasse (oder
> Klassendefinition).
Danach war der Begriff nicht mehr abstrakt und ich konnte ihn benutzen.

von Oliver S. (oliverso)


Lesenswert?

rObert schrieb:
> Der Unterschied ist, dass er
> sagt, was Klasse im Zsh mit OOP bedeuten kann.

Und was genau unterschiedet das von den unzähligen anderen Erklärungen, 
die google ohne große Mühe findet?
Der Begriff "faul" fiel ja schon. Ergänzende Begriffe magst du dir 
selber ausdenken.

> Aber danke dass Du das für mich entscheidest.

Gern geschehen.

Oliver

von Dussel (Gast)


Lesenswert?

rObert schrieb:
> Könnte jetzt aber eine "Verbindung" von Auto und
> Haus über "Garage" hergestellt werden? Würde das was nützen?
Je nachdem, wie 'Haus' definiert ist, könnte Garage die Eigenschaften 
von Haus erben. Jedes Haus hat ein Dach und vier Wände und damit die 
Eigenschaften Länge, Breite und Höhe.
Garage wäre dann ein Kind von Haus, das alle Eigenschaften eines Hauses 
hätte und zusätzlich noch die Eigenschaft Torbreite und Stellplatzgröße 
definiert.
Die Verbindung zu Auto wäre dann, dass die Garage ein spezielles Haus 
ist, das Obkjekte vom Typ Auto aufnehmen kann. Programmiertechnisch 
hätte die Garage eine Liste 'Fahrzeuge', in der alle Fahrzeuge, die in 
der Garage stehen, gespeichert werden. Ein Wohnhaus, das auch ein Kind 
von Haus wäre, bräuchte diese Liste nicht. Zusätzlich kann die Garage 
eine Funktion haben, die feststellt, ob in der Garage noch genug Platz 
für das Auto ist.

von Oliver S. (oliverso)


Lesenswert?

Nachtrag:

http://www-is.informatik.uni-oldenburg.de/~dibo/hamster/JavaHamsterModell.pdf

Haben meine Kids damals sehr gemocht...

Oliver

von ich (Gast)


Lesenswert?

Oliver S. schrieb:
> Der Begriff "faul" fiel ja schon. Ergänzende Begriffe magst du dir
> selber ausdenken.

Kann es sein, daß du gern stänkerst, nur um stänkern zu können?
Das war übrigens Rekursion :-)

von Big Endian (Dickes Ende) (Gast)


Lesenswert?

@Robert

Lerne, Unsinn nicht zu kommentieren. "Dussel" hat die Frage von Dir
in verständlichen Worten beantworten können und das ist gut so.

Das Schlimme an Foren allgemein ist die unmäßige Zahl von Beiträgen,
die nicht hilfreich sind. Das bläht die Themen unnötig auf und macht
die Suche nach der brauchbaren Antwort schwer.

Der Charakterzug, mit vielen Worten nichts zu sagen, greift immer mehr
um sich.
:-(

Big Endian (Dickes Ende)

von rObert (Gast)


Lesenswert?

Dank an alle, die sich hier lösungsorientiert beteiligt haben. So 
langsam nimmt der Begriff bei mir Gestalt an.
Hintergründig beschäftige ich mich damit, eine sowohl auf PC als auch 
auf µC (AVR, ARM) einsetzbare, damit für meine Zwecke universelle 
Programmiertechnik zu erlernen, bzw. erst einmal zu finden.

Auch das hier macht einen kompetenten Eindruck:
https://www.ldv.ei.tum.de/fileadmin/w00bfa/www/Vorlesungen/cpp/CPP-Skript.pdf

von Udo S. (urschmitt)


Lesenswert?

Wenn etwas universell ist, dann kannn es meistens alles schlecht und 
nichts richtig.
Du solltest weniger philosophieren und dich hintergründig beschäftigen, 
als einfach mal eine Sache richtig durchzuarbeiten und konkret was tun.

von Dussel (Gast)


Lesenswert?

rObert schrieb:
> Hintergründig beschäftige ich mich damit, eine sowohl auf PC als auch
> auf µC (AVR, ARM) einsetzbare, damit für meine Zwecke universelle
> Programmiertechnik zu erlernen, bzw. erst einmal zu finden.
Ich würde keine Technik suchen, sondern eine Sprache. Was nützt die 
beste Technik, wenn es keine Sprache gibt, mit der man die Technik 
komplett anwenden kann. Und die Sprache dürfte heute im Programmbereich 
in den meisten Fällen C, C++, Java oder eine Sprache aus dieser Familie 
sein.

von Walter Röls, (Gast)


Lesenswert?

Sorry, aber ich hätte diesem TO schon nach seinem zweiten Posting nicht 
mehr geantwortet.

Er kommt hier her, erwartet von uns Antworten und sonnt sich 
währenddessen in seiner eigenen Dummheit?

Sein Beispiel ist treffend: "Ein Maler malt mit Farben". Genau.
Bleibe am besten bei diesem Handwerk. Anscheinend hat dich der Herrgott 
nicht dafür geschaffen, Sachen zu kapieren, die nicht mit einem Satz 
abzuhandeln sind.


Sozialer Abschaum!

von ich (Gast)


Lesenswert?

Walter Röls, schrieb:
> Sorry, aber ich hätte diesem TO schon nach seinem zweiten Posting
> nicht
> mehr geantwortet.
Ein Glück, daß es auch Leute gibt, die ein wenig Geduld aufbringen.
>
> Er kommt hier her, erwartet von uns Antworten und sonnt sich
> währenddessen in seiner eigenen Dummheit?
Und du sonnst dich in deiner grenzenlosen Klugheit? Alles Wissen dieser 
Welt ist dir scheinbar angeboren. Bei dir war die Nabelschnur noch nicht 
mal ab, da hast du schon perfekte Programme in C++ geschrieben, oder?
>
> Sein Beispiel ist treffend: "Ein Maler malt mit Farben". Genau.
> Bleibe am besten bei diesem Handwerk. Anscheinend hat dich der Herrgott
> nicht dafür geschaffen, Sachen zu kapieren, die nicht mit einem Satz
> abzuhandeln sind.
Und dir ist es wahrscheinlich noch nie passiert, daß du manchmal eine 
Weile gebraucht hast, um Zugang zu einem Problem zu finden. Und dann ist 
dank einleuchtender Erklärungen plötzlich "der Knoten geplatzt". So wie 
es Robert hier auch ging. Ich denke, durch die Erläuterungen und 
Beispiele von Dussel hat er jetzt einen Einstieg gefunden, obwohl er 
sich anfangs schwer damit tat.
>
> Sozialer Abschaum!
So etwas zu behaupten ist schon ein ordentliches Stück Frechheit.

von Oh man (Gast)


Lesenswert?

Leute bleibt freundlich und lasst solche Vokabeln weg. Es reicht doch 
wenn die Wirrköppe auf der Krim aufeinander losgehen.

We are all a great Community.

:)

von asdf (Gast)


Lesenswert?

In der oop ist jeder Furz ein Objekt, so wie fuer jeden Manager jeder 
Furz ein Projekt ist. :-) tgif

von rObert (Gast)


Lesenswert?

Bei der Suche nach weiteren Quellen und Beispielen bin ich auf sisy.de 
(myAVR,myARM) gestoßen. Die bieten ja eine zurechtgestylte IDE für OOP 
an.

Folgender Code erweckt den Anschein, dass OOP sehr einfach sei. Das LED 
Beispiel besticht geradezu mit seiner schlichten Gestalt. Verführung? 
Representativ?
1
// offizieller AVR C Standard ///////////////////////////////////////
2
if (!(PIND&(1<<PD2)))
3
    PORTB&=~(1<<PB7); 
4
 
5
// das Gleiche mit myAVR C++ ////////////////////////////////////////
6
if ( pinD.bit2 == 0 )
7
     portB.bit7 = 0;
8
 
9
// und mit Klassen aus dem myAVR C++ Framework //////////////////////
10
if ( button.isPressed() )
11
     led.off();

von Walter T. (nicolas)


Lesenswert?

rObert schrieb:
> Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst
> es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht
> fragen.

Kann mir bitte jemand erklären, was ein "Zoo" ist? Aber bitte ohne die 
Begriffe "Tiere" und "anschauen" verwenden, die kenne ich nämlich noch 
nicht. Eigentlich ist es eine Unverschämtheit, daß alle Erklärungen zu 
Zoos, die ich bisher gefunden habe, das voraussetzen.

von Dr. Sommer (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Kann mir bitte jemand erklären, was ein "Zoo" ist?
mikrocontroller.net ist einer, ein Zoo wo man alle Arten von 
Geisteskrankheit bestaunen kann!

von rObert (Gast)


Lesenswert?

Walter Tarpan schrieb:
> rObert schrieb:
>> Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst
>> es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht
>> fragen.
>
> Kann mir bitte jemand erklären, was ein "Zoo" ist? Aber bitte ohne die
> Begriffe "Tiere" und "anschauen" verwenden, die kenne ich nämlich noch
> nicht. Eigentlich ist es eine Unverschämtheit, daß alle Erklärungen zu
> Zoos, die ich bisher gefunden habe, das voraussetzen.

Was es doch für dämliche Menschen gibt....
Die Begriffe "Tiere" und "anschauen" kennt ein zweijähriges in der 
richtigen Bedeutung, wie sie auch in "Zoo" verwendet werden.
Aber das wissen sozial unterbelichtete schwarz-weiß-Typen nicht.

von rObert (Gast)


Lesenswert?

Walter Tarpan schrieb:
> rObert schrieb:
>> Bevor hier gleich die Begriffe "Klassen" und "Vererbung" fliegen - lasst
>> es. Wenn ich die kennen würde, dann würde ich wahrscheinlich nicht
>> fragen.
>
> Kann mir bitte jemand erklären, was ein "Zoo" ist? Aber bitte ohne die
> Begriffe "Tiere" und "anschauen" verwenden, die kenne ich nämlich noch
> nicht. Eigentlich ist es eine Unverschämtheit, daß alle Erklärungen zu
> Zoos, die ich bisher gefunden habe, das voraussetzen.

Was es doch für dämliche Menschen gibt....
Die Begriffe "Tiere" und "anschauen" kennt ein Zweijähriges in der 
richtigen Bedeutung, wie sie auch in "Zoo" verwendet werden.
Aber das wissen sozial unterbelichtete schwarz-weiß-Typen nicht.

von Guido .. (2mils)


Lesenswert?

rObert schrieb:
> Was es doch für dämliche Menschen gibt....

es gibt sogar welche, die ihren Beitrag zwei mal abschicken

von Walter T. (nicolas)


Lesenswert?

rObert schrieb:
> Was es doch für dämliche Menschen gibt....
> Die Begriffe "Tiere" und "anschauen" kennt ein Zweijähriges in der
> richtigen Bedeutung, wie sie auch in "Zoo" verwendet werden.
> Aber das wissen sozial unterbelichtete schwarz-weiß-Typen nicht.

Und was "Vererbung" ist weiß jeder Sextaner.

Also ist daraus zu schließen: Du weißt, was Tiere sind, aber nicht, was 
Vererbung ist. Damit läßt sich Dein Kenntnisstand zumindest schon recht 
gut eingrenzen.

von rObert (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Also ist daraus zu schließen: Du weißt, was Tiere sind, aber nicht, was
> Vererbung ist. Damit läßt sich Dein Kenntnisstand zumindest schon recht
> gut eingrenzen.

Halt eindach deine dämliche Klappe, wenn du nichts zum Thema beitragen 
kannst.

von Walter T. (nicolas)


Lesenswert?

rObert schrieb:
> Halt eindach deine dämliche Klappe, wenn du nichts zum Thema beitragen
> kannst.

In 20 Minuten, wenn meine Suppe fertig ist.

Die mir übrigens auch dann hervorragend schmecken wird, wenn Du nicht 
einsiehst, daß OOP ohne die obengenannten Konzepte sinnlos zu erklären 
ist - sinnlos wie ein Zoo ohne Tiere.

von Johannes T. (johannes_t)


Lesenswert?

... ach, Robertle ...

von rObert (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Die mir übrigens auch dann hervorragend schmecken wird, wenn Du nicht
> einsiehst, daß OOP ohne die obengenannten Konzepte sinnlos zu erklären
> ist - sinnlos wie ein Zoo ohne Tiere.

1.)
Was hat das mit Einsicht zu tun?
Ja, ich sehe ein, dass OOP was mit Klassen, Vererbung etc. zu tun hat. 
Das wusste ich übrigens schon vorher. Und ich wusste auch, das dafür 
niemand sterben muss oder Zellteilung stattfinden muss, es auch mit 
Schulanfang und Zeugnissen nichts zu tun hat.

Nur nützt es dem OOP-Unkundigen nichts, wenn er mit Begriffen 
konfrontiert wird, die nicht vorher bzw. deren Kontext nicht erklärt 
wird.

2.)
Darüber sind wir aber schon lange weg.

3.)
Walter Tarpan schrieb:
> In 20 Minuten, wenn meine Suppe fertig ist.
Guten Hunger;-)

von Prog R. (daniel_v)


Lesenswert?

rObert schrieb:

> Halt eindach deine dämliche Klappe, wenn du nichts zum Thema beitragen
> kannst.

in der Zeit, in der du dich hier auf verbale Schlägereien einlässt (oder 
diese führst, wie auch immer), hättest du schon längst ein Tutorial in 
Java oder C#, oder was auch immer durchprogrammiert, und würdest bis hin 
zur Vererbung schon einige Grundlagen verstanden haben......
z.B.
http://www.peterkropff.de/site/php/oop_einfuehrung.htm

und es gibt viele mehr....

von rObert (Gast)


Lesenswert?

Daniel V. schrieb:
> in der Zeit, in der du dich hier auf verbale Schlägereien einlässt (oder
> diese führst, wie auch immer), hättest du schon längst ein Tutorial in
> Java oder C#, oder was auch immer durchprogrammiert, und würdest bis hin
> zur Vererbung schon einige Grundlagen verstanden haben......

In 3 Minuten so viel lernen? Wow, das wäre ja zu geil;-)

von Kai S. (hugstuart)


Lesenswert?

Habe diesen Thread gerade gelesen, und fand ihn sehr unterhaltsam. 
Robert stänkert rum, beleidigt ("Halt eindach deine dämliche Klappe, 
wenn du nichts zum Thema beitragen kannst."), und erwartet von uns 
KOSTENLOSE Hilfe. Auf der anderen Seite scheint er sich nicht mit der 
Materie außeinandersetzen zu wollen. Die Begriffe "Klasse" und 
"Vererbung" sind jetzt nicht sooo kompliziert...

von rObert (Gast)


Lesenswert?

Kai S. schrieb:
> Habe diesen Thread gerade gelesen,

Das wage ich zu bezweifeln. Denn auch du trägst nichts zur Sache bei. 
Wenn du gelesen udn verstanden hättest, wüsstest du, dass ich mich 
sachlich mit OOP auseinandersetze.

Kai S. schrieb:
> beleidigt ("Halt eindach deine dämliche Klappe,
> wenn du nichts zum Thema beitragen kannst.")

Leider gehörst auch du zu der Klasse Mensch, die lediglich diese Sätze 
beleidigend empfindet.
Ich finde es beleidigend, wenn der Fragende, Wissbegierige den gebückten 
Bittsteller mimen muss, für jede Antwort, auch wenn sie zur Klärung 
nicht beiträgt, danke sagen muss, keine Kritik üben darf, und überhaut 
nicht seine Frage präzisieren darf.
DAS ist beleidigend und traurig.
Dankenswerter Weise gibt es ausnahmsweise zwei oder drei User hier, die 
das kapieren, meine Frage verstehen und darauf antworten können.

Soll ich mich dafür entschuldigen, dass euch meine Fragestellung nicht 
passt?

von Doc Brown (Gast)


Lesenswert?

-> http://en.wikipedia.org/wiki/Object-...ed_programming

Wenn da Begriffe drin stehen, die Du nicht verstehst, dann kannst Du 
nach denen suchen, oder hier gezielt Fragen "Was bedeutet XYZ". Oft sind 
auch Begriffe selber ein Link zu einem weiteren Wiki-Artikel.

Ich kann Dir den Artikel auch vorlesen, oder wir machen ein 
Telefoninterview, bei dem ich Dir alles zu OOP erkläre. Für Geld mache 
ich fast alles.

von Kai S. (hugstuart)


Lesenswert?

> Leider gehörst auch du zu der Klasse Mensch, die lediglich diese Sätze
> beleidigend empfindet.
> Ich finde es beleidigend, wenn der Fragende, Wissbegierige den gebückten
> Bittsteller mimen muss, für jede Antwort, auch wenn sie zur Klärung
> nicht beiträgt, danke sagen muss, keine Kritik üben darf, und überhaut
> nicht seine Frage präzisieren darf.

Ich finde es beleidigend, wenn der Fragesteller keine Eigeninitiative 
zeigt. Wenn man etwas erklärt haben will, sollte man sich imhO zumindest 
rudimentär mit dem Thema vertraut gemacht haben. Und ich finde es 
beleidigend, wenn man sofort in eine "Klasse Mensch" gesteckt wird.

> Soll ich mich dafür entschuldigen, dass euch meine Fragestellung nicht
> passt?

Wenn du magst...

von rObert (Gast)


Lesenswert?

Viele wollen hier mit Wissen glänzen. So wie in einer Prüfung.
Ich bin aber nicht die fachkundige Prüfungskommission.
Daher nutzen mir eure sachlich und fachlich sicher richtigen 
Prüfungsantworten nichts.

Zurück zum Thema.
Die verlinkten Beispiele sind sehr anschaulich, danke.
Für welche Aufgaben, die üblicherweise mit µC erledigt werden, bringt 
diese Programmiertechnik Vorteile?

Beispiel "normaler" Programmablauf:
alles notwendige Initialisieren
ACD Wert einlesen
an Funktion übergeben
neuen Wert zurückgeben
Switch/Case/Reaktion
an Display ausgeben
von vorn beginnen

Und warum schiebt der Modi das zu PC-Programmierung????

von Dussel (Gast)


Lesenswert?

An alle: Wie ich schonmal schrieb, ist es für einen Anfänger oft 
schwierig, in ein neues, völlig unbekanntes Thema einzusteigen. Da ist 
es oft hilfreich, wenn man einen ersten Ansatz zum Verstehen hat, ohne 
dass gleich alle Aspekte beleuchtet werden. Soweit ich das gesehen habe, 
sind alle verlinkten Dokumente umfangreich und daher für den ersten 
Einstieg nicht ideal.

An Robert: Lerne einfach, die nicht hilfreichen und nicht gut gemeinten 
Antworten zu ignorieren. Sonst kommt nur sowas raus wie
Kai S. schrieb:
> Habe diesen Thread gerade gelesen, und fand ihn sehr unterhaltsam.
> Robert stänkert rum, beleidigt ("Halt eindach deine dämliche Klappe,
> wenn du nichts zum Thema beitragen kannst."),
Das Forum ist nicht schlecht und hier gibt es viele kompetente Nutzer, 
aber eben auch einige, die nur Ärger machen wollen. Außerdem sind 
Beiträge wegen der fehlenden 'nonverbalen Kommunikation' manchmal 
missverständlich.

C++ auf Mikrocontrollern der AVR-Klasse ist umstritten, wobei die 
Tendenz eher in die Richtung geht, dass C++ auf schwachen Controllern zu 
viel Overhead hat und deshalb vermieden werden sollte.

von Walter T. (nicolas)


Lesenswert?

rObert schrieb:
> Für welche Aufgaben, die üblicherweise mit µC erledigt werden, bringt
> diese Programmiertechnik Vorteile?

Kommt darauf an, was für Dich "üblicherweise" ist. Und wie groß das 
µC-Programm ist.

Ich habe noch keine Anwendung auf einem µC gefunden, wo mir 
Objektorientierte Programmierung Vorteile gegenüber 
funktionsorientierter gegeben hätte. Einfach deswegen, weil man da mehr 
mit Aktionen und Zuständen als mit Daten hantiert. Zustandsmaschinen 
gehen ganz gut in OOP - aber nur für eine Zustandsmaschine ist der 
Aufwand etwas übertrieben. Zumindest schien es mir den Mehraufwand, den 
Rest der Firmware auch auf C++ zu portieren nicht wert.

Bei PC-Anwendungen dagegen hat mir OOP schon viele Sachen erleichtert. 
Das waren allerdings auch eher Anwendungen, wo die Daten zentral waren. 
Um genau zu sein: Große Datenmengen mit ähnlicher Struktur, die 
unterschiedlich behandelt werden wollten.

von TriHexagon (Gast)


Lesenswert?

Es macht eigentlich keinen Sinn dir OOP in einem Forum zu erläutern, 
denn es gibt einen guten Grund, weshalb dieses Thema ganze 
Kapitel/Bücher fühlt. Ich würde dir empfehlen ein solches Buch zu 
beschaffen und die OOP Sache praktisch anzugehen, also schön die 
Beispiele anschauen und einfach mal damit herumzuspielen in der 
Programmiersprache deiner Wahl. Dieses Theorie-Geplänkel führt zu nichts 
(wobei die Theorie natürlich verstanden werden muss).

von Makefile (Gast)


Lesenswert?

A. K. schrieb:
> Fred schrieb:
>> CLOS zum Beispiel. Generische Funktionen statt Methoden.
>
> Als einziger Mechanismus ist das eine interessante Methode. Schätze dass
> etwas Sorgfalt nötig ist, um später noch durchzublicken.


Das ist sehr praktisch und überhaupt nicht unübersichtlich. Im 
Gegenteil, war sogar mal für einen zukünftigen C++ Standard im Gespräch 
[1].

Zunächst ist es ja auch einfach nur eine andere syntaktische 
Formulierung des aus anderen Sprachen bekannten Methodenaufrufs.

Statt obj.f(...) schreibt man eben f(obj ...).

Oder in Lisp Terminologie entsprechend (f obj ...)


Diese Formulierung erlaubt aber eine sehr nützliche Verallgemeinerung.
Statt nur das erste Argument für die Assoziierung Methode-Objekt 
auszuwerten, kann die gewählte Funktion jetzt ganz natürlich von allen 
Argumenten abhängen. Aus dem einfachen Dispatch nach der Klasse des 
ersten Arguments wird ein Multi-Dispatch nach beliebig vielen 
Argumenten.

Beispiel: Generische Print-Funktion für einen Datentyp, die zusätzlich
für unterschiedliche Ausgabemedien spezialisiert ist.

print(data_struct file)
print(data_struct widget)
print(data_struct string)
print(data_struct csv-file)

Mit define-method würde man hier vier separate Methoden schreiben 
jeweils passend zu den beiden Datentypen.

In Sprachen nur mit single dispatch müsste man diese Unterscheidung von 
Hand und zur Laufzeit in der data_struct.print(...) Methode vornehmen.

Multi-methods machen hier den Code übersichtlicher und wartbarer.

[1] http://www.yorel.be/mm/multi_methods/introduction.html
When asked about which features he likes in other languages, Bjarne 
Stroustrup regularly cites multi-methods. Several years ago, he 
co-authored a paper describing an extension of C++ in that direction: 
"Open Multi-Methods for C++".

von Walter T. (nicolas)


Lesenswert?

Makefile schrieb:
> Statt obj.f(...) schreibt man eben f(obj ...).

Sieh an. Unter Matlab ist dieser Mechanismus auch vorhanden und 
verbreitet. Und jetzt weiß ich sogar, wie er allgemein heißt :-)

von Vn N. (wefwef_s)


Lesenswert?

rObert schrieb:
> Die verlinkten Beispiele sind sehr anschaulich, danke.
> Für welche Aufgaben, die üblicherweise mit µC erledigt werden, bringt
> diese Programmiertechnik Vorteile?
>
> Beispiel "normaler" Programmablauf:
> alles notwendige Initialisieren
> ACD Wert einlesen
> an Funktion übergeben
> neuen Wert zurückgeben
> Switch/Case/Reaktion
> an Display ausgeben
> von vorn beginnen

Beitrag "Wieso Objektorientiert?"
Dieser Thread beinhaltet die praxisorientiertesten (gerade im 
µC-Bereich) Beispiele und Erklärungen, die mit zu dieser Frage je 
untergekommen sind.

von Walter Röls (Gast)


Lesenswert?

>Und du sonnst dich in deiner grenzenlosen Klugheit?

Nein, ganz und garnicht. Viel mehr sonne ich mich in meiner freundlichen 
Art. Und erst recht dieser Art, wenn ich von anderen noch Hilfe erwarte.

Mir ist jeder "Dumme" und dafür Freundliche lieber als einer wie der TO, 
der weder freundlich ist noch Ahnung hat.

>Und dir ist es wahrscheinlich noch nie passiert, daß du manchmal eine
>Weile gebraucht hast, um Zugang zu einem Problem zu finden.
Doch, aber wiegesagt: ER will was wissen, dann sollte man (wie bereits 
oben erwähnt) sozial taktisch etwas sinnvoller vorgehen.
Das hat nichts damit zutun, dass ich keine Menschen toleriere, die es 
nicht aufs erste Mal kapieren.

von Possetitjel (Gast)


Lesenswert?

Kai S. schrieb:

> Robert stänkert rum, beleidigt ("Halt eindach deine
> dämliche Klappe, wenn du nichts zum Thema beitragen
> kannst."), und erwartet von uns KOSTENLOSE Hilfe.

Naja, Gott sei Dank bin ich nicht verpflichtet, an jeden
ungezogenen Rüpel mein Wissen zu verschenken.

> Auf der anderen Seite scheint er sich nicht mit der
> Materie außeinandersetzen zu wollen. Die Begriffe
> "Klasse" und "Vererbung" sind jetzt nicht sooo kompliziert...

Vor etwa 20 Jahren ist die OOP nach meiner Wahrnehmung so
richtig hochgekocht. Mich hat extrem genervt, dass zwar
überall haarklein die technische Maschinerie beschrieben
wurde, die Erklärungen zum abstrakten Konzept aber auf
blumige "Haus-Auto-Garage"-Vergleiche beschränkt blieben.
Das sollte besser machbar sein.

von JochenZ (Gast)


Lesenswert?

hier häng ich mich auch mal rein... über die weiter oben verlinken 
Seiten bin ich zur Firma Willert und dort zu dem hier gestoßen:

http://www.willert.de/assets/Newsletter/ESER30-OOP-V1.1.pdf

ich fand das mal ne erfrischende Abhandlung zu dem Thema OOP oder besser 
gesagt OO allgemein oder so ;-)

Gruß J.

von GarbageCollector (Gast)


Lesenswert?

Zwei Dinge:
1. evtl ging es den to nur darum das Thema grundsätzlich zu diskutieren 
(Forum!), schließlich gibt es nicht immer deine eine Wahrheit die in 
Büchern steht.

2. mal ein Ansatz, wie mein Prof uns den Umstieg von c auf c++
Gezeigt hat.

In c gibt es schon immer die Möglichkeit ein struct zu definieren. 
Warum?
Damit zusammengehörige werte "gruppiert" werden können. Nun kommt es 
unabhängig davon vor, dass in einem Programmablauf dynamisch Werte 
gespeichert werden müssen. Also zB ein array in dem für eine Matrix 
Multiplikation werte gehalten werden. Dafür muss man explizite Speicher 
allokieren. Eine dynamische instanz eines struct, ist im Grunde schon 
nichts anderes als ein Objekt. Um in c Variablen in Funktionen zu 
manipulieren gibt es mehrere Möglichkeiten.  Globale Variablen können 
direkt, lokale können über eine Referenz geändert werden. Dies gilt für 
struct typen ebenso. Was eine Kladde so wie sie definiert ist ausmacht 
ist, dass sie alle Methoden zur Manipulation der (struct)Variablen 
kapselt. Den Funktionen muss nicht mehr die zu verwendende Variable 
übergeben werden.

Der nächste Schritt ist nun zu sagen. Wenn ich nun zwei structs/Klassen 
habe, Die die gleichen Parameter haben weil sie logisch zusammen 
gehören, eine davon aber zusätzliche Eigenschaften oder andere 
Funktionen hat, eine klasse zu abstrahieren die eine untermenge beider 
darstellt. Eine Erweiterung oder Änderung der Definition auf deren Basis 
nennt man Ableitung.

So gute Nacht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.