du solltest noch dazu sagen das es egal ist ob man class oder struct verwendet. Nur der Zugriff auf privat und public sind unterschiedlich defaultmäßig gesetzt wenn man es nicht angibt. Wenn man privat und public immer angibt kann man das Wörtchen class und struct beliebig austauschen.
Ok...
Eigentlich ist das eins der Details wo ich nicht unbedingt ran wollte...
Geschichtlich gesehen, ist struct älter.
Das erste "C mit Klassen" verwendete struct um die Daten zu halten/benennen und FunktionPointer(in der Struktur) um auf die Methoden zu zeigen. this war nur ein Zeiger auf die Struktur.
Damit konnte man schon viel machen!
Dann wurden die OOP Token der Sprache hinzugefügt.
So wurde dann aus "C mit Klassen" das C++
class ist wenig mehr, als ein um die Schlüsselworte public und private auf geblasenes struct.
Mit dem Unterschied, dass in struct alles per Default public ist, und bei class private.
Ansonsten voll austauschbar.
EDIT
Beitragstext teilweise entfernt.
Dar offensichtlich nicht sachdienlich/erwünscht.
Dann fange ich mal ganz vorne an:
Verstehen, was die drei Buchstaben OOP bedeuten.
OOP
O - wie Objekt
O - wie orientierte
P - wie Programmierung
Es heißt also ausgeschrieben: " Objekt orientierte Programmierung "
Bemerke:
Da steht nicht "Programmierung mit Objekten"!
Zu dem Wort Objekt findet sich bei Wikipedia u.A.:
Sache
Gegenstand
In unserem Fall sind das oft Abbilder, von real existierenden Dingen, in unserer Programmiersprache. Aber auch künstliche/abstrakte Modelle sind möglich. Vergleiche mit Gemälden.
Wikipedia sagt zu orientiert/Orientierung u.A.:
Orientierung (mental), eine kognitive Fähigkeit, die die Orientierung eines Subjekts in Zeit, Raum und bezüglich der eigenen Person umfasst
Dieses bezieht sich wirklich und vollständig auf das "Ich" in der Welt.
Wie das Ich die Welt sieht.
Das Ich sieht/baut Modelle von real existierenden Sachen/Dingen, und auch von Fantasiegebilden. Dann gießt das Ich diese Modelle in Strukturen.
Wikipedia Programmierung:
Programmierung (von altgriechisch πρόγραμμα prógramma „öffentlich und schriftlich bekannt gemachte Nachricht, Befehl“)[1] bezeichnet die Tätigkeit, Computerprogramme zu erstellen. Das ist ein Teilbereich der Softwareentwicklung[2] und umfasst vor allem das Umsetzen (Implementierung) des Softwareentwurfs in den Quellcode einer Programmiersprache.
Schlussfolgerung daraus:
OOP hat nichts mit irgendeiner bestimmten Programmiersprache zu tun.
Andersrum wird ein Schuh draus.
Unser C++ unterstützt die OOP im Sprachumfang.
Das erleichtert es, die OOP Denke in Code umzusetzen.
Man kann in jeder Programmiersprache Objekt orientiert programmieren!
Denn die Orientierung findet in einem selber statt.
Es ist eine reine Kopfsache.
An Sprachmitteln, verwendet man einfach das, was man vorfindet.
Übrigens:
Früher nannte man das, was heute "Methode aufrufen" heißt, "Nachricht senden".
Die alte Form hat auch seinen Reiz.
Es scheint mir natürlicher zu sein. (natürlicher im Sinne der OOP)
Ein bisschen sind Objekt orientierte Programmierer wie kleine Kinder. Die Blagen nehmen sich einen Bauklotz, schieben den über den Teppichboden und rufen "Brummm, Brummm, Brummm".
In der Vorstellung des Kindes und des OOProgrammierers ist der Holzklotz dann ein Auto!
Nix Räder dran, aber Auto.
Der OOProgrammierer kümmert sich nicht um Räder, wenn er nicht muss.
Wenn ein Modell ohne Räder reicht, dann gut, dann eben ohne Räder.
Orientierung auf die Sache!
Modellbildung.
Die vollständige Realität kann man sowieso nicht im Computer abbilden. Denn dann müsste der Computer wohl größer sein, als die Realität. Da er aber meist Teil der Realität ist... kann man sagen, dass man die vollständige Realität nur in einem irrealen Computer abbilden kann.
Der Prozedurale Programmierer, der malt Programmlaufpläne!
Der interessiert sich für "Wann wird Was und womit getan?"
Der Fortgeschrittene hat gemerkt, dass das nicht reicht, und malt Datenflussdiagramme.
Und kommt so auf den Trichter, dass z.B. Schleifen oft völlig überbewertet werden.
Der Objekt orientierte Programmierer schaut auf die Dinge/Modelle und auf die Beziehungen zwischen den Dingen/Modellen. Flussdiagramme benutzt er nur, wenn er Methoden baut.
Schlussfolgerung daraus:
Ja, ist ist völlig ok, und sicherlich Ziel führend, die OOP Merkmale der verwendeten Sprache zu lernen.
Aber es ist noch viel wichtiger, die Denke auszurichten, im sinne von "Orientierung finden".
Und hier eben mit der Orientierung auf Sachen/Gegenstände/Modelle und deren Beziehungen untereinander.