Objektorientiert Denken

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

Objektorientiert Denken

Beitrag von soufian88 » So Aug 30, 2009 4:28 pm

Hallo Ich bins mal wieder. :)

Ich bin zurzeit in C++ beschäftigt und komme zurzeit gut voran und bin im Kapitel Konstruktoren.
Das Problem was ich aber zurzeit habe ist ob ich eigentlich in C++ Objektorientiert denke denn das Denken von C in C++ Objektorientiert ist ein wenig schwierig.
Bei C war es noch möglich, kleinere Programme einfach zu beginnen und sie wachsen zu lassen aber Bei der Objektorientierten Sprache führt es zum Neuschreiben des Gesamten Codes.

Deshalb frage ich was ist eigentlich genau Objektorientierte Programmierung.
Zusätzlich entschuldige ich mich das ich den Artikel zu Netzwerkprogrammierung nicht fertig gebrachte habe.
Ich hatte einfach keinen Internetzugang.( Ich kann wirklich nichts Dafür da ich in ein verlassenen Dorf Wohne :oops: )
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
Dubbel
Beiträge: 197
Registriert: So Jul 06, 2008 6:25 pm
Wohnort: Kopenhagen
Kontaktdaten:

Re: Objektorientiert Denken

Beitrag von Dubbel » So Aug 30, 2009 4:40 pm

Wichtig ist beim objektorientiertem Programmieren die Planung. Dabei reicht es nicht zu sagen, ich will, dass das Programm schnell wird und gleichzeitig nutzerfreundlich oder so, sondern alle Klassen auf einem Blatt Papier am besten aufmalt, und den gesamten Programmablauf soweit wie möglich durchzugehen, um zu gucken, wo man durch geschickte flexible Programmierung Klassen bzw. funktionen doppelt nutzen kann, wenn man sie nur geringfügig ändert.

Die Programmierkurve (Leistung,Erfolg/Zeit) steigt zwar bei prozeduraler Programmierung früher schnell an, aber wird nach einiger Zeit dann immer flacher, bis man fast gar nicht mehr weiterkommt. Bei objektoriententierter Programmierung ist sie zunächst sehr flach (die Zeit der Planung eben), steigt dann aber um so steiler an, und bleibt auch (hoffentlich) bei dieser Steigung ;)
Deshalb ist es manchmal schwer OOP-Skeptikern OOP schmackhaft zu machen, weil diese eben nur kurzfristig denken, an die ersten sichtbaren Erfolge. Wobei man sich natürlich bei jeden individuellem Projekt überlegen muss, ob OOP das ganze nicht unnötig verlängert...

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Objektorientiert Denken

Beitrag von Xin » So Aug 30, 2009 5:28 pm

soufian88 hat geschrieben:Das Problem was ich aber zurzeit habe ist ob ich eigentlich in C++ Objektorientiert denke denn das Denken von C in C++ Objektorientiert ist ein wenig schwierig.
Das Denken von C funktioniert in C++ nicht.
soufian88 hat geschrieben:Deshalb frage ich was ist eigentlich genau Objektorientierte Programmierung.
In C schreibst Du Deine Prozeduren und Algorithmen und gibst dem Programm Daten, dies verarbeitet.

In C++ gibt es eine andere Perspektive: Du hast Daten und die kannst Du verändern. Dafür klassifizierst Du Deine Daten und ziehst Gemeinsamkeiten zusammen. Die Instanz einer Klasse ist ein Objekt. Ein Hund hat eine Fellfarbe, ein Hirsch auch. Beides sind Tiere. Also hat ein Tier eine Fellfarbe. Aber ein Reh hat einige Besonderheiten, die für ein Tier nicht gelten. Die Geweihgröße ist für einen Hund nicht interessant. Gleichzeitig haben Hund und Hirsche aber auch Gemeinsamkeiten, die sie dennoch unterschiedlich regeln: eine Funktion gibLaut() muss bei einem Hirsch() "Röööhhhöör" (oder sowas in der Art) zurückgeben und bei einem Hund "Wuff". Das ist bis jetzt alles klassenorientiert.
In dem Moment, wo man die Behauptung aufstellt, dass Tiere gibLaut() unterstützen und die zwar für jede Spezialisierung eines Tiers auf unterschiedliche Weise, wird die Sache Objektorientiert.

Du beginnst mit OOP, sobald Du das Schlüsselwort "virtual" verwendest. Dafür musst Du Daten klassifizieren, also klassenorientiert programmieren. Du musst also erst überlegen, welche Daten Du hast und wie Du sie in Klassen unterteilen kannst. Anschließend überlegst Du Dir, was Du mit den machen möchtest und schreibst entsprechende Methoden (so nennt man Funktionen innerhalb von Klassen).

Dabei muss man Klassen gar nicht so eng sehen: eine Klasse kann durchaus auch die Konfigurationsdatei verwalten oder den Programmstatus. Hierbei wäre der Konstruktor alles, was notwendig ist, um das Programm zu starten und der Destruktor alles, was das Programm wieder beendet.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

Re: Objektorientiert Denken

Beitrag von soufian88 » So Aug 30, 2009 6:46 pm

In C schreibst Du Deine Prozeduren und Algorithmen und gibst dem Programm Daten, dies verarbeitet.

In C++ gibt es eine andere Perspektive: Du hast Daten und die kannst Du verändern. Dafür klassifizierst Du Deine Daten und ziehst Gemeinsamkeiten zusammen. Die Instanz einer Klasse ist ein Objekt. Ein Hund hat eine Fellfarbe, ein Hirsch auch. Beides sind Tiere. Also hat ein Tier eine Fellfarbe. Aber ein Reh hat einige Besonderheiten, die für ein Tier nicht gelten. Die Geweihgröße ist für einen Hund nicht interessant. Gleichzeitig haben Hund und Hirsche aber auch Gemeinsamkeiten, die sie dennoch unterschiedlich regeln: eine Funktion gibLaut() muss bei einem Hirsch() "Röööhhhöör" (oder sowas in der Art) zurückgeben und bei einem Hund "Wuff". Das ist bis jetzt alles klassenorientiert.
In dem Moment, wo man die Behauptung aufstellt, dass Tiere gibLaut() unterstützen und die zwar für jede Spezialisierung eines Tiers auf unterschiedliche Weise, wird die Sache Objektorientiert.

Du beginnst mit OOP, sobald Du das Schlüsselwort "virtual" verwendest. Dafür musst Du Daten klassifizieren, also klassenorientiert programmieren. Du musst also erst überlegen, welche Daten Du hast und wie Du sie in Klassen unterteilen kannst. Anschließend überlegst Du Dir, was Du mit den machen möchtest und schreibst entsprechende Methoden (so nennt man Funktionen innerhalb von Klassen).

Dabei muss man Klassen gar nicht so eng sehen: eine Klasse kann durchaus auch die Konfigurationsdatei verwalten oder den Programmstatus. Hierbei wäre der Konstruktor alles, was notwendig ist, um das Programm zu starten und der Destruktor alles, was das Programm wieder beendet.
Mal wieder die Xins Klassische Erklärung schlechthin.
Einfach nur Top und mal wieder ein :idea: und langsam bekomme ein Gefühl für die Objektorientierte Programmierung.
Danke. :D
C ( Durchschnittlich ) C++ (am Lernen)

Antworten