Datenkapselung in C++: Code schützen & strukturieren
Jedes C++-Programm besteht aus zwei fundamentalen Elementen:
- Programm-Statements (Code) – Aktionen, genannt Funktionen.
- Programm-Daten – Information, die von Funktionen beeinflusst wird.
Kapselung (Encapsulation) bindet Daten und manipulierende Funktionen zusammen und schützt beides vor externer Beeinflussung/Missbrauch. Führt zum wichtigen OOP-Konzept Datenverbergung (Data Hiding).
Datenkapselung = Bündelung von Daten & Funktionen. Datenabstraktion = Exponieren nur der Interfaces, Verbergen der Implementierung.
C++ Unterstützung durch Klassen
Klassen enthalten private, protected, public Member. Standard: private.
class Box {
public:
double getVolume() { return length * breadth * height; }
private:
double length, breadth, height;
};
length, breadth, height sind private → nur über Memberfunktionen der Klasse zugreifbar. Das ist Kapselung.
Mit public nach dem Keyword werden Member für alle Funktionen zugänglich.
friend-Klassen brechen Kapselung auf (Implementierungsdetails offengelegt). Ideal: So viele Details wie möglich vor anderen Klassen verbergen.
Beispiel: Adder (wie bei Abstraktion)
class Adder {
public:
Adder(int i=0) { total = i; }
void addNum(int number) { total += number; }
int getTotal() { return total; }
private:
int total;
};
Öffentlich: addNum, getTotal. Privat: total.
Designstrategie
Mitglieder standardmäßig private, außer Exposing nötig. Gilt primär für Datenmember, aber gleich für alle Member (inkl. virtueller Funktionen). Das ist gute Kapselung.
C Sprache
- C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
- C++ Klassentemplates meistern: Ein praktischer Leitfaden
- Java-Kapselung meistern: Praktischer Leitfaden zum Datenverbergen
- C++ char‑Datentyp meistern: Deklaration, ASCII & Konvertierungstechniken
- Java Encapsulation erklärt: Sichere Datenkapselung & Kontrolle
- Java Datenstrukturen: Kernklassen & Collections Framework erkunden
- C++ Speicherklassen: Scope, Lifetime & Verwendung
- C++ Datenstrukturen: Arrays, Structs & mehr für effiziente Programme