Was verstecken Daten in C++? Abstraktion und Kapselung erklärt

Veröffentlicht: 2021-05-24

Inhaltsverzeichnis

Einführung in das Ausblenden von Daten

Daten sind die sensibelste und flüchtigste Komponente eines Programms, die bei Manipulation zu einer fehlerhaften Ausgabe führen und die Integrität von Daten beeinträchtigen kann. Hier erweist sich das Verbergen von Daten als unerlässlich. Im Fachjargon ist Data Hiding, auch als Information Hiding bezeichnet, ein inhärenter objektorientierter Programmiermechanismus (OOP), um interne Objektdetails vor dem Endbenutzer zu verbergen.

Das zugrunde liegende Ziel von Data Hiding besteht darin, Daten innerhalb einer Klasse vor unbefugtem Zugriff zu verbergen und unnötiges Eindringen von außerhalb der Klasse zu vermeiden. Data Hiding garantiert eingeschränkten Datenzugriff, um die Objektintegrität zu gewährleisten und unbeabsichtigte oder beabsichtigte Änderungen am betreffenden Programm zu verhindern.

Einfach ausgedrückt, nimmt das Verbergen von Daten bestimmte Teile eines Programmcodes und schirmt ihn von Objektmitgliedern ab. Wenn ein Objektmitglied versucht, auf verborgene Daten zuzugreifen, gibt das Programm einen Fehler zurück. Dies ist ein Warnmechanismus, der eingeführt wurde, um sicherzustellen, dass der Programmierer keine Verbindung zu fehlerhaften Daten herstellt, die verborgen wurden. Oft sind es die internen Komponenten ohne vorhersehbaren Bedarf auf Anwenderseite, die ausgeblendet werden.

Datenverbergung, Datenabstraktion und Datenkapselung

Das Verbergen von Daten in C++ ist eng mit zwei anderen OOP-Eigenschaften korreliert – Abstraktion und Kapselung.

Datenabstraktion

Datenabstraktion ist ein Mechanismus, um dem Endbenutzer nur die relevante Programmschnittstelle offenzulegen und die komplizierteren und komplexeren Implementierungsdetails zu verbergen. Betrachten wir zum besseren Verständnis ein Beispiel aus dem wirklichen Leben. Denken Sie an Ihren Fernseher. Sie können das Fernsehgerät ein- und ausschalten, den Kanal wechseln, die Lautstärke regeln und externe Komponenten wie Videorecorder, DVD-Player und Lautsprecher hinzufügen. Aber Sie kennen die internen Mechanismen des Fernsehers nicht.

Sie wissen nicht, wie es Signale empfängt, übersetzt und schließlich die Ausgabe anzeigt. Das Fernsehen ist somit ein gekonntes Beispiel für die Trennung zwischen interner Umsetzung und externer Beeinflussung. Durch die Datenabstraktion ist die Klassenimplementierung vor unbeabsichtigten Fehlern geschützt und entwickelt sich als Reaktion auf sich ändernde Anforderungen oder Fehlerberichte ohne Eingriffe auf Benutzerebene weiter.

Datenverkapselung

Datenkapselung bezieht sich auf die Bündelung von Daten und ihren zugehörigen Funktionen in einer einzigen Einheit namens Klasse. Wenn Sie ein unsichtbares Attribut außerhalb eines Objekts haben und es mit Methoden bündeln, die Lese- oder Schreibzugriff darauf bieten, können Sie heikle Informationen verbergen und den Zugriff auf den internen Zustand des Objekts regulieren.

Daher liegt es in Ihrer Verantwortung, abhängig von den von Ihnen implementierten Methoden zu entscheiden, ob ein Attribut gelesen und geändert werden kann oder ob es schreibgeschützt oder überhaupt nicht sichtbar ist.

Unterschied zwischen Datenverbergung und Datenkapselung

Bei der Erörterung von OOP werden Data Hiding und Data Encapsulation häufig synonym verwendet, da diese beiden Begriffe zusammenarbeiten, um einen gemeinsamen Ziel-Hilfs-Gatekeeper sensibler Informationen zu erreichen. Die Idee der Datenkapselung ist zweifellos funktional vergleichbar mit dem Verbergen von Daten, aber da sie auf verschiedenen Ebenen arbeiten, sind sie strukturell unterschiedlich.

Obwohl sie intrinsisch miteinander verwandt sind, gibt es einen entscheidenden Unterschied zwischen dem Verbergen von Daten und der Datenkapselung.

  1. Der Hauptunterschied zwischen dem Verbergen von Daten und der Kapselung besteht darin, dass sich ersteres auf die Verbesserung der Datensicherheit im Programm konzentriert, während letzteres sich mit dem Verbergen der Komplexität des Programms befasst.
  2. Das Verbergen von Daten konzentriert sich auf die Zugänglichkeit eines Objektmitglieds innerhalb einer Klasse, während sich die Datenkapselung darauf konzentriert, wie auf die Daten zugegriffen wird und wie sich verschiedene Objekte verhalten. Die Kapselung wird hauptsächlich durch das Verbergen von Informationen und nicht nur durch das Verbergen von Informationen erreicht. Das bedeutet, dass der Programmierer die Strukturen des Objektmitglieds verbirgt und die Implementierung aller seiner Methoden verbirgt.
  3. Während sich das Verbergen von Daten darauf konzentriert, die Datennutzung in einem Programm einzuschränken, um die Datensicherheit zu gewährleisten, konzentriert sich die Datenkapselung auf das Verpacken (oder Kapseln) der komplexen Daten, um dem Benutzer eine einfachere Ansicht zu präsentieren.
  4. Beim Data Hiding müssen die Daten nur als privat definiert werden. Bei der Datenkapselung können die Daten öffentlich oder privat sein.
  5. Das Verbergen von Daten ist sowohl ein Prozess als auch eine Technik für sich, während die Datenkapselung ein Teilprozess des Verbergens von Daten ist.

Greifen Sie auf Spezifizierer zu

C++ unterstützt das Verbergen von Daten und damit auch die Datenabstraktion und Datenkapselung durch die Erstellung benutzerdefinierter Typen, die als Klassen bezeichnet werden. Der Umfang der Mitglieder dieser erstellten Klasse wird durch Schlüsselwörter definiert, die als Zugriffsbezeichner bekannt sind. Typischerweise gibt es drei Arten von Schutz- oder Zugriffsspezifizierern, die innerhalb einer Kategorie verfügbar sind – private, protected und public, die verwendet werden, um die Kapselungsfähigkeiten der Klasse aufzubauen.

Zugriffsbezeichner helfen zu definieren, wie auf Variablen und Funktionen eines Typs von außerhalb der Klasse zugegriffen werden kann. Normalerweise sind die Daten innerhalb einer Klasse privat, um versehentliche Manipulationsinstanzen zu eliminieren, und ihre Operationen sind öffentlich. Die Zugänglichkeit innerhalb eines Rangs ist jedoch an keine Einschränkung gebunden.

Private Variablen/Funktionen: Kann nur von Membern aufgerufen werden, die als Teil der Klasse definiert sind.

Öffentliche Variablen/Funktionen: Auf sie kann von überall im Programm zugegriffen werden.

Geschützte Variablen/Funktionen Sind innerhalb einer Klasse privat und stehen nur für den Fernzugriff in der abgeleiteten Klasse zur Verfügung.

Anwendung des Verbergens von Daten

Um das Verbergen von Daten besser zu verstehen, betrachten wir das folgende Beispiel. Da Sie der Programmierer sind, nehmen wir an, Sie deklarieren eine Klasse mit dem Namen „CheckAccount“, in der Sie ein Datenelement mit dem Begriff „Balance“ definiert haben, das sich auf den Kontostand eines Benutzers bezieht.

In diesem speziellen Beispiel handelt es sich bei dem Datenelement „Saldo“ um vertrauliche Informationen. Obwohl Sie möglicherweise externen Anwendungen Zugriff zum Anzeigen dieser vertraulichen Informationen anbieten, werden Sie aller Wahrscheinlichkeit nach nicht zulassen, dass diese externe Anwendung die Attribute der im Konto des Mitglieds gespeicherten Daten ändert. Dieses Ergebnis kann durch das Verbergen von Daten erreicht werden und wird insbesondere durch die Verwendung des privaten Zugriffsspezifizierers gesteuert.

  1. Das Verbergen von Daten wird üblicherweise bei Daten ausgeführt, die unvorhersehbar und heikel sind. Diese Art von Daten ist grundlegend für die effektive und schnelle Ausführung eines Programms. Aufgrund unzulässiger Zugriffe entstehende Datenänderungen sind Daten dauerhaft und erfordern eine vollständige Überarbeitung seitens des Programmierers vor der weiteren Verwendung.
  2. Das Verbergen von Daten trägt dazu bei, die Kursteilnehmer vor unbeabsichtigtem Übersehen zu schützen. Eine Klasse besteht normalerweise aus verschiedenen zusammengehörigen Feldern, die in einem zuverlässigen Zustand sein müssen. Angenommen, ein Programmierer darf jedes dieser Felder direkt steuern. In diesem Fall besteht die Möglichkeit, dass Sie einen Bereich transformieren, ohne kritische verwandte Felder zu ändern, wodurch Ihre Klasse in einem Konfliktzustand verbleibt.

Vorteile des Ausblendens von Daten

Die Vorteile des Verbergens von Daten sind vielfältig:

  1. Es wird verwendet, um die Unvorhersehbarkeit und Datenkomplexität von Daten zu reduzieren.
  2. Es verbessert die Wiederverwendbarkeit des Programms.
  3. Durch die Begrenzung der gegenseitigen Abhängigkeiten zwischen Softwarekomponenten wird auch die Systemkomplexität für eine erhöhte Robustheit reduziert.
  4. Blendet das physische Vorratsdesign für die Daten aus. Dies hilft, die Oberfläche klar zu definieren, verbessert die Lesbarkeit und Verständlichkeit.
  5. Es bietet Datensicherheit vor Beschädigung und unberechtigtem Zugriff. Mit anderen Worten, es hilft, wichtige Daten zu verbergen, wodurch erhöhte Sicherheitsprotokolle gegen Hacker gewährleistet werden. Wenn alle internen Daten veröffentlicht würden, könnten Hacker leicht in die internen Daten eindringen und böswillige Änderungen vornehmen, um die Funktionsweise des Programms zu verändern. Das Verstecken der Daten macht es viel schwieriger, den Code zu knacken, da die versteckten Daten für externe Mitglieder der Klasse und damit für den Hacker unsichtbar erscheinen.
  6. Die gekapselten Klassen sind unkompliziert, einfach zu verwalten und erleichtern die zukünftige Entwicklung der Anwendung.

Der Nachteil des Verbergens von Daten

Der einzige Nachteil des Versteckens von Daten ist die zusätzliche Codierung. Das Verbergen von Daten erfordert Programmierer, längere Codes zu schreiben, um den gewünschten Effekt in versteckten Daten zu erzeugen.

Lernen Sie Software-Engineering-Kurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

Das Verbergen von Daten ähnelt einem Spiel Russisches Roulette. Beim Russischen Roulette hat nur eines von sechs Löchern eine Kugel. Stellen wir uns vor, der Schuss ist eine wahrnehmbare Datenbedrohung. Wären Sie bereit, ein Risiko einzugehen? Es mag fünf Szenarien geben, die zu Ihren Gunsten funktionieren, aber können Sie die Bedrohung konkret identifizieren? Die Antwort ist nein. Alle Szenarien tragen eine gleiche Wahrscheinlichkeitslast von Verdacht und Angst. Anstatt dieser Ungewissheit nachzugeben, stellen Sie sich gegen Datenbedrohungen. Gehen Sie undercover und verstecken Sie Daten.

Wenn Sie mehr über Java, OOPs und Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen bietet. Über 9 Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Was ist Kapselung in der objektorientierten Programmierung?

Kapselung ist eine Möglichkeit, die Daten und den Code, der mit den Daten arbeitet, miteinander zu verbinden. Es ist ein Mechanismus, der verwendet wird, um die Details der Datenimplementierung zu verbergen, während die Datenabstraktion der Außenwelt ausgesetzt wird. Der Prozess des Versteckens von Informationen hinter einer wohldefinierten Schnittstelle wird als Kapselung bezeichnet. Kapselung ist ein mächtiges Konzept der objektorientierten Programmierung. Es ist der Prozess, interne Daten und Operationen eines Objekts vor der Außenwelt zu verbergen, indem Zugriffsfunktionen erstellt werden.

Was ist Abstraktion in der objektorientierten Programmierung?

Abstraktion ist eine Technik, die in der objektorientierten Programmierung verwendet wird, um die Schnittstellen von Klassen von den Implementierungsdetails jedes einzelnen Objekts zu trennen. Dies bedeutet, dass der Code geändert werden kann, ohne den Code zu ändern, der die Klasse verwendet. In der objektorientierten Programmierung (OOP) stellt eine Abstraktion ein Objekt dar, das manipuliert, aber nicht explizit definiert werden kann. Abstraktion ist ein wichtiger Teil von OOP; Es ist der Prozess, die Schnittstelle einer Klasse von der Implementierung ihrer Methoden zu trennen.

Wie interagieren Klassen und Objekte in der objektorientierten Programmierung?

Klassen und Objekte sind die Grundlage der objektorientierten (OO) Programmierung. Objektorientierte Programmierung ist ein Programmierparadigma, das Objekte und Klassen verwendet, um die reale Welt zu modellieren. Eine Klasse ist ein Entwurf oder eine Vorlage. Es ist eine Beschreibung oder eine Spezifikation dessen, was ein Objekt sein sollte. Es definiert die Eigenschaften, Verhaltensweisen und Daten eines bestimmten Objekttyps. Objekte sind Instanzen oder Beispiele einer Klasse. Jedes einzelne Objekt in einem Programm kann in eine oder mehrere Klassen eingeteilt werden. Eine Klasse kann die Eigenschaften, Methoden und andere Merkmale einer anderen Klasse erben. Dies wird als Vererbung bezeichnet.