Oop?

Superbiker3000

Grünschnabel
Hallo,

ich hab eine Frage zu c++ und zwar geht es um die OOP. Ich verstehe garnicht genau, was das überhaupt ist. Also, die ist doch eigentlich soetwas wie Funktionen, oder? Ich hab schon ne Menge im Internet gelesen, aber richtig schlau bin ich noch nicht geworden. Könnte mir das jemand vll. erklären.

Wäre echt sehr dankbae,

Gruß

Philipp
 
Also, die ist doch eigentlich soetwas wie Funktionen, oder?
Funktionen spielen dabei eine Rolle ... Aber das ist ja noch lang nicht alles.
Es ist eben eine völlig andere Programmierweise als prozedual (normaler Code).
Es gibt einige sehr gute Tutorials zu diesem Thema im Internet.
Ich hab jetzt leider keinen Link... Aber irgendwer sicher ;)
 
Danke für eure Antworten, ich werd mir mal das alles durchlesen.


Könntet ihr mir denn vll. einen c++ Code als Beispiel zeigen, und mir diesen erkären, also damit mir das mal anhand eines Beispiels mit der OOP deutlicher wird?

Gruß

Philipp
 
Zuletzt bearbeitet:
Das wichtige am Objektorientierten Programmieren ist die Einführung der Objekte. Ein Objekt kann zum Beispiel ein Flugobjekt wie z.B. einen Airbus380 oder eine Chesna. Diese Flugobjekte haben natürlich verschiedene Eigenschaften/Attribute zB Höchstgeschwindigkeit, Länge, Passagierzahl, etc., dann hasst du noch Zustände des Objekts wie z.B. landet, fliegt, stürtzt ab, etc... diese Zustände werden durch die Methoden inneinander über. Objekte mit gleichen Verhaltensweisen und Attributen fasst du in Klassen zusammen wie zB in die Klasse Flugobjekte, dass kann dann grob so aussehen:
C++:
class FlugObjekt {
   private:
      // Ein paar Attribute ...
      string bezeichnung;
      float laenge;
      float hoechstgeschw;
      Bewegung zustand;
      float geschw;
       // ....

   public:
       //  Konstruktor, Destruktor und Methoden ...
       FlugObjekt();
       ~FlugObjekt();
      void starten();
      void landen();
      void abstuerzen();
      bool setGeschwindigkeit(float _geschw);
      float getGeschwindigkeit();
      // ...
}

// .... Hier müssten jetzt noch die Methoden implementiert werden

// Hauptprogramm
int main (void) {
    // ...
    // Hier werden jetzt Objekte der Klasse FlugObjekt erzeugt
    Flugobjekt airbus;
    Flugobjekt chesna;

    // jetzt kannst du Methoden der Objekte verwenden ....
    airbus.starten();
    airbus.setGeschw(1000.5);
    airbus.abstuerzen();

    //....
Das war jetzt erstmal zu Objekten, dann kommt dann bzgl c++ natuerlich noch einiges mehr ....
 
Ok, danke schonmal, ähm, aber wie kann ich jetzt sowas in der Praxis anwenden?

Sry, wenn die Frage so komisch ist, aber ich hab schon viel im Internet gelesen, kam aber noch nich so wirklich weit...
 
Um OOP zu verstehen ist es imho hilfreich wenn man erst vom reinen Programmieren Abstand nimmt und die Sache etwas abstrakter betrachtet. Also vergiß so technische Details wie Klassen, Methoden und Objekte für einen Moment und denk darüber nach worum es geht.

Da ist auf der einen Seite ein Computer, den wir dazu benutzen wollen Aufgaben für uns zu erledigen. das Problem dabei ist, daß dieser Computer trotz all seiner Rechenleistung dumm ist. Er tut genau das was wir sagen, nciht mehr und nicht weniger. Mit einem Programm beschreiben wir was der Compute für uns machen soll, aber dabei haben wir ein Problem, wir sind Menschen ;)

Wir machen Fehler, vergessen Kleinigkeiten oder drücken uns ungenau aus. Solange wir mit Menschen reden, ist das egal weil Menschen solche Fehler automatisch korrigieren und Kleinigkeiten, die wir vergessen hinzufügen. (Eine beliebte Quelle für Mißverständnisse btw).

Reden wir aber mit Computern wird das zum Problem, denn dieser hat null Toleranz zu Ausdrucksfehlern. Wenn wir uns falsch ausdrücken, fürht er es auch ebenso falsch aus.

Die ersten Computersprachen waren sehr technische Sprachen, geschrieben von Freaks die sich damit gut auskannten und die wußten was sie taten. Sprachen wie C lassen dem Programmierer nahezu vollkommene Freiheit in dem, was man damit machen kann. Das geht auch gut, solange der Programmierer sehr genau weis, was technisch in einem Computer abläuft.

Doch sind diese Zeiten längst vorbei. Wer weis denn schon noch was eine ALU ist, oder ein Register, wie der Speicherzugriff geht usw. Die Fähigkeiten daruf direkt zugreifen zu können, die einem C noch geboten hat (und die man in Zeiten sehr geringern Rechnerperformance auch noch brauchte) sind lange vorbei, ebenso wie die Zeiten von Programmierern, die sich mit sowas noch auskennen mußten (und wollten).

Ich nenne C auch deswegen eine technische Sprache, weil sie sich stark an der "Computersprache" orientiert. Ein Mensch aber tut sich damit sehr schwer, wie ein Computer zu denken.

Objektorientierte Sprachen dagegen sind eher menschliche Sprachen. Sie beschreiben ein Programm auf eine eher natürliche, menschlichere Weise. Betrachte z.B. eine Firma. Da gibt es Abteilungen, jede für sich auf eine Aufgabe spezialisiert. Untereinander kommunizieren diese Gruppen über Schnittstellen (aka Meetings;) ). Viele Abteilungen halten dabei auch ihre Aufgaben mehr oder weniger geheim. So kommt z.B. keiner ausser den IT Jungs in den Serverraum und die Buchhaltung hält ihre Akten verschlossen. Solche Strukturen benutzen wir Menschen seit eh und jeh und allen Bereichen unseres Lebens.

Ersetze jetzt Abteilungen mit "Klassen", Mitarbeiten mit "Objekten", Arbeitsabläufe mit Methoden und schon bist Du mitten im OOP-Programmieren. Beim OOP-design eines Programmes geht es darum, die Abläufe des Programms auf eine dem Menschen eher verständliche Weise darzustellen.

Darüber hinaus gibt es weit mehr Aspekte wie Kapselung von Funktionalität, leichtere Wartung/Fehlersuche, Erweiterbarkeit etc die dem OOP Vorteile gegenüber prozeduralen Vorgehensweisen bieten. In erster Linie aber ist es lediglich eine andere Sichtweise wie man seinen Code aufbaut und erst wenn man das verstanden hat, beginnt man auch tatsächlich objektorientiert zu programmieren.
 
Ah, danke, der Schleier lichtet sich langsam. =)

Also, ich denke ich hab das jetzt verstanden, jetzt häng ich mich nur noch mehr rein und dann hoffe, ich dass ich so bald drauf hab....
 
Zurück