C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
C++ Klassen & Objekte
Entdecken Sie, wie Sie Daten und Verhalten in C++ mit Klassen und Objekten kapseln, mit klaren Beispielen und Best Practices.
Warum Klassen verwenden?
In früheren Lektionen haben wir Funktionen und Variablen erkundet. Wenn Projekte wachsen, wird das Gruppieren verwandter Daten und Operationen für Wartbarkeit und Klarheit essenziell. Eine Klasse lässt Sie Datenelemente und Mitgliedsfunktionen in eine einzelne logische Einheit bündeln und ermöglicht objektorientierte Programmierung (OOP) – das Fundament modernen C++-Designs.
Illustration: Ein Raum
Betrachten Sie einen rechteckigen Raum. Sie müssen seine length, breadth und height speichern, während Sie gleichzeitig Fläche und Volumen berechnen. Mit einer Klasse können Sie diese eng gekoppelt halten:
class Room
{
public:
double length;
double breadth;
double height;
double calculateArea()
{
return length * breadth;
}
double calculateVolume()
{
return length * breadth * height;
}
};
Eine Klasse definieren
Eine Klasse wird mit dem class-Schlüsselwort definiert, gefolgt von ihrem Namen und einem Körper in geschweiften Klammern, endend mit einem Semikolon:
class ClassName
{
// data members
// member functions
};
Im obigen Beispiel ist Room ein Bauplan. Die Variablen darin heißen Datenelemente; die Funktionen heißen Mitgliedsfunktionen.
Objekte erstellen
Eine Klasse zu definieren spezifiziert nur das Layout; es allokiert keinen Speicher. Objekte sind konkrete Instanzen, die aus diesem Bauplan erstellt werden:
Room room1; // einzelnes Objekt
Room room2, room3; // mehrere Objekte in einer Deklaration
Objekte können überall instanziiert werden – innerhalb von Funktionen, anderen Klassen oder global – solange ihr Gültigkeitsbereich respektiert wird.
Auf Mitglieder zugreifen
Verwenden Sie den Punktoperator (.), um Mitgliedsfunktionen aufzurufen oder auf Datenelemente zuzugreifen:
room1.length = 5.5;
double area = room1.calculateArea();
Beispiel 1: Raum-Metriken berechnen
#include <iostream>
using namespace std;
class Room
{
public:
double length;
double breadth;
double height;
double calculateArea()
{
return length * breadth;
}
double calculateVolume()
{
return length * breadth * height;
}
};
int main()
{
Room room1;
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
Ausgabe
Area of Room = 1309 Volume of Room = 25132.8
Kapselung: Public vs. Private
Kapselung schützt Daten, indem sie den Zugriff kontrolliert. Als private deklarierte Mitglieder sind von der Außenwelt verborgen und können nur über öffentliche Mitgliedsfunktionen zugegriffen werden.
class Test
{
private:
int a;
void function1() {}
public:
int b;
void function2() {}
};
Im folgenden Beispiel sind Datenelemente privat und werden über eine öffentliche Methode initialisiert:
#include <iostream>
using namespace std;
class Room
{
private:
double length;
double breadth;
double height;
public:
void initData(double len, double brth, double hgt)
{
length = len;
breadth = brth;
height = hgt;
}
double calculateArea()
{
return length * breadth;
}
double calculateVolume()
{
return length * breadth * height;
}
};
int main()
{
Room room1;
room1.initData(42.5, 30.8, 19.2);
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
Ausgabe
Area of Room = 1309 Volume of Room = 25132.8
Weiterführende Literatur
Für autoritative Richtlinien konsultieren Sie den ISO/IEC 14882:2023 C++ Standard oder vertrauenswürdige Ressourcen wie cplusplus.com und cppreference.com.
C Sprache
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
- C++ Klassentemplates meistern: Ein praktischer Leitfaden
- Java Klassen und Objekte: Praktischer Leitfaden
- C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
- C++ Struct vs. Class: Wichtige Unterschiede, Syntax und beste Anwendungsfälle
- C++ Speicherklassen: Scope, Lifetime & Verwendung