Alle bisherigen Antworten haben sich auf das Thema Ihrer Frage konzentriert, nämlich "Was ist der Unterschied zwischen c und c ++?". In Wirklichkeit klingt es so, als ob Sie wissen, was ein Unterschied ist. Sie verstehen einfach nicht, warum Sie diesen Unterschied brauchen würden. Also versuchten andere Antworten, OO und Einkapselung zu erklären.
Ich wollte noch eine weitere Antwort geben, da ich aufgrund der Details Ihrer Frage glaube, dass Sie einige Schritte zurücktreten müssen.
Sie verstehen den Zweck von C ++ oder OO nicht, da Ihre Anwendung scheinbar nur Daten speichern muss. Diese Daten werden in Variablen gespeichert. "Warum sollte ich eine Variable unzugänglich machen wollen? Jetzt kann ich nicht mehr darauf zugreifen! Indem ich alles öffentlich oder besser global mache, kann ich Daten von überall aus lesen und es gibt keine Probleme." - Und Sie haben Recht, basierend auf dem Umfang der Projekte, an denen Sie gerade arbeiten, gibt es wahrscheinlich nicht allzu viele Probleme (oder es gibt sie, aber Sie sind sich ihrer noch nicht bewusst).
Ich denke, die grundlegende Frage, die Sie wirklich beantworten müssen, ist: "Warum sollte ich jemals Daten verbergen wollen? Wenn ich das tue, kann ich nicht damit arbeiten!" Und deshalb:
Angenommen, Sie starten ein neues Projekt, öffnen Ihren Texteditor und schreiben Funktionen. Jedes Mal, wenn Sie etwas speichern müssen (um es später zu speichern), erstellen Sie eine Variable. Um die Dinge einfacher zu machen, machen Sie Ihre Variablen global. Ihre erste Version Ihrer App läuft hervorragend. Jetzt können Sie weitere Funktionen hinzufügen. Sie haben mehr Funktionen, bestimmte Daten, die Sie zuvor gespeichert haben, müssen aus Ihrem neuen Code gelesen werden. Andere Variablen müssen geändert werden. Sie schreiben immer mehr Funktionen. Was Sie vielleicht bemerkt haben (oder, wenn nicht, Sie werden es in Zukunft absolut bemerken), ist, dass es mit zunehmendem Code immer länger dauert, bis Sie die nächste Funktion hinzufügen. Und je größer Ihr Code wird, desto schwieriger wird es, Features hinzuzufügen, ohne dass etwas kaputt geht, was früher funktioniert hat. Warum? Da musst du dir was alles merkenIhre globalen Variablen werden gespeichert und Sie müssen sich daran erinnern, wo sie alle geändert werden. Und Sie müssen sich merken, welche Funktion in welcher Reihenfolge aufgerufen werden kann. Wenn Sie sie in einer anderen Reihenfolge aufrufen, können Fehler auftreten, da Ihre globalen Variablen noch nicht ganz gültig sind. Bist du jemals darauf gestoßen?
Wie groß sind Ihre typischen Projekte (Codezeilen)? Jetzt können Sie ein Projekt mit einer 5000- bis 50000-fachen Größe erstellen. Außerdem arbeiten dort mehrere Personen. Wie kann sich jeder im Team daran erinnern (oder gar merken), was all diese Variablen tun?
Was ich oben beschrieben habe, ist ein Beispiel für perfekt gekoppelten Code. Und seit Anbeginn der Zeit (vorausgesetzt, die Zeit begann am 1. Januar 1970) hat die Menschheit nach Wegen gesucht, um diese Probleme zu vermeiden. Sie vermeiden sie, indem Sie Ihren Code in Systeme, Subsysteme und Komponenten aufteilen und die Anzahl der Funktionen einschränken, die auf Daten zugreifen können. Wenn ich 5 Ganzzahlen und eine Zeichenkette habe, die einen Zustand darstellen, wäre es für mich einfacher, mit diesem Zustand zu arbeiten, wenn nur 5 Funktionen die Werte setzen / erhalten? oder wenn 100 funktionen die gleichen werte setzen / bekommen? Auch ohne OO-Sprachen (dh C) haben die Menschen hart daran gearbeitet, Daten von anderen Daten zu isolieren und saubere Trennungsgrenzen zwischen verschiedenen Teilen des Codes zu schaffen. Wenn das Projekt eine bestimmte Größe erreicht, wird die Programmierung nicht einfacher. "Kann ich über die Funktion Y auf die Variable X zugreifen?"
Aus diesem Grund wurden OO-Konzepte eingeführt, und aus diesem Grund sind sie so leistungsfähig. Sie ermöglichen es Ihnen, Ihre Daten vor sich selbst zu verbergen, und Sie möchten dies absichtlich tun. Denn je weniger Code diese Daten sieht, desto geringer ist die Wahrscheinlichkeit, dass Sie beim Hinzufügen des nächsten Features etwas kaputt machen. Dies ist der Hauptzweck für die Konzepte der Kapselung und der OO-Programmierung. Mit ihnen können Sie unsere Systeme / Subsysteme in noch detailliertere Bereiche unterteilen, bis zu einem Punkt, an dem auf einen bestimmten Satz von Variablen unabhängig von der Größe des Gesamtprojekts nur noch 50-200 Codezeilen zugreifen können - und das war's! Die OO-Programmierung bietet natürlich noch viel mehr. Im Wesentlichen bietet C ++ jedoch die Möglichkeit, Daten / Funktionen als privat, geschützt oder öffentlich zu deklarieren.
Die zweitgrößte Idee in OO ist das Konzept der Abstraktionsschichten. Obwohl prozedurale Sprachen auch Abstraktionen haben können, muss sich ein Programmierer in C bewusst darum bemühen, solche Ebenen zu erstellen. Wenn Sie in C ++ eine Klasse deklarieren, erstellen Sie automatisch eine Abstraktionsebene (es bleibt Ihnen überlassen, ob diese Abstraktion vorliegt oder nicht) Wert hinzufügen oder entfernen). Sie sollten mehr über Abstraktionsebenen lesen / recherchieren, und wenn Sie weitere Fragen haben, wird dieses Forum diese sicherlich auch gerne beantworten.