C++ Getter und Setter

Muhammad Husnain 12 Oktober 2023
  1. Was ist Verkapselung
  2. Getter und Setter in C++
  3. Fazit
C++ Getter und Setter

Dieser triviale Leitfaden führt zunächst kurz in das Konzept der Kapselung und des Verbergens von Daten in der objektorientierten Programmierung ein. Fahren Sie dann mit der Verwendung von Gettern und Settern in C++ fort.

Was ist Verkapselung

Kapselung ist das Konzept, alle relevanten Dinge miteinander zu verbinden. Eine Klasse in C++ kann alle zugehörigen Daten in einer einzigen Kapsel kombinieren.

Angenommen, wir haben ein Objekt oder eine Entität Rectangle mit einigen Attributen und Eigenschaften. Wir können alle seine Attribute und Eigenschaften in einer einzigen Klasse kombinieren.

Daher ist bekannt, dass die Kapselung verwandte Daten und Methoden in einer einzigen Klasse kombiniert. Es wird oft mit dem Konzept des Verbergens von Daten verwechselt.

Data Hiding ist das Konzept, dass die zu einer Klasse gehörenden Attribute nicht für jeden außerhalb der Klasse zugänglich sein sollten. Dies liegt daran, dass die Datensicherheit verletzt wird.

Wenn Datenmitglieder einer Klasse privat gemacht werden, kann kein Benutzer außerhalb der Klasse darauf zugreifen, und daher können wir Datensicherheit erreichen.

Auf diese Weise können wir zwar den Wert nicht festlegen oder den Wert von Datenelementen von außerhalb der Klasse abrufen, aber wir können Methoden erstellen, die für den Zugriff auf die Elemente verwendet werden können, und diese Methoden stellen sicher, dass einige unerwünschte Daten nicht in die Datenelemente eingefügt werden .

Solche Methoden zum Setzen oder Erhalten des Werts von Datenelementen werden “Getter” und “Setter” genannt.

Getter und Setter in C++

Dies ist eine gute Programmierpraxis, um Datenmember einer Klasse privat zu machen, sodass den Datenmembern der Klasse keine ungültigen Daten zugewiesen werden können. Damit können Sie die in den Datenelementen eingehenden Daten überprüfen, bevor Sie diese in den Datenelementen speichern.

Zum Beispiel haben wir eine Klasse Shape. Das Längenattribut einer beliebigen Form kann niemals negativ sein.

Daher prüfen wir beim Festlegen des Längenwerts, ob der angegebene Wert größer als Null ist oder nicht.

Wenn wir eine Klasse Employee haben, hat diese das Attribut salary. Dieses Attribut hat weder einen negativen noch einen sehr großen positiven Wert.

Daher muss ein Validator platziert werden, bevor der Wert von salary festgelegt wird. Schauen wir uns das Beispiel unten an.

class Emp {
 private:
  int empSalary;

 public:
  void setEmpSalary(int sal) {
    if (sal > 0 and sal < 10000000) empSalary = sal;
  }
  int getEmpSalary() { return empSalary; }
};

In diesem Code-Snippet haben wir das Datenelement salary, das privat ist, um das Verbergen von Daten zu erreichen. Darüber hinaus haben wir einen Getter und Setter für dieses Datenelement bereitgestellt, sodass der Wert bei Bedarf festgelegt und abgerufen werden kann.

In der Setter-Funktion haben wir auch eine Prüfung erstellt, um den ungültigen Wert zu kontrollieren, der in das Datenelement salary eingegeben wurde. So erstellen Sie Setter und Getter für jedes gewünschte Datenelement.

Sehen wir uns den vollständigen Code für das obige Beispiel an.

#include <iostream>
#include <string>
using namespace std;
class Emp {
 private:
  int empSalary;
  string empName;

 public:
  Emp(string n, int s) {
    setEmpName(n);
    setEmpSalary(s);
  }
  void setEmpName(string s) { empName = s; }
  string getEmpName() { return empName; }
  void setEmpSalary(int sal) {
    if (sal > 0 and sal < 10000000) empSalary = sal;
  }
  int getEmpSalary() { return empSalary; }
};
int main() {
  Emp e("John", 50000);
  cout << "Name: " << e.getEmpName() << endl;
  cout << "Salary: " << e.getEmpSalary() << endl;
}

Ausgabe:

Name: John
Salary: 50000

Fazit

Das Hinzufügen von Getter- und Setter-Methoden zur Klassenschnittstelle ist entscheidend. Da die Mitgliedsvariablen einer Klasse als privat deklariert werden, benötigen die Benutzer Ihrer Klasse eine Möglichkeit, ihre Werte abzurufen und festzulegen.

Da Setter-Methoden Datenvalidierungscode enthalten können, um sicherzustellen, dass Member-Variablen auf legitime Werte gesetzt werden, ermöglichen Getter- und Setter-Funktionen diesen sicheren Zugriff.

Natürlich gibt es Zeiten, in denen Sie Getter-, Setter- oder beide Methoden nicht für alle Member-Variablen einer Klasse anbieten möchten. Schreibgeschützte Elementvariablen sind Variablen, die abgerufen, aber nicht geändert werden können.

Ein solches Beispiel können einige statische Datenmember sein, oder es können einige schreibgeschützte Datenmember vorhanden sein; für solche Mitglieder brauchen wir eine Getter-Funktion, aber keine Setter-Funktion.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn