Einführung in OOP in C++
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy — Lektion 5 von 104.
Objektorientierte Programmierung organisiert Code in Klassen, die Daten und Verhalten bündeln.
Eine einfache Klasse mit öffentlichen Membern
class Dog {
public:
std::string name;
int age;
std::string bark() {
return name + " says Woof!";
}
};Erstellen und Verwenden eines Objekts
Dog dog;
dog.name = "Buddy";
dog.age = 3;
std::cout << dog.bark() << std::endl;Ausgabe:
Buddy says Woof!Eine Klasse definiert die Struktur – welche Daten sie enthält und welche Aktionen sie ausführen kann. Ein Objekt ist eine spezifische Instanz, die Sie erstellen und verwenden. Member unter public: können von überall aus aufgerufen werden.
Aufgabe
EinfachErstelle eine Dog-Klasse mit öffentlichen Attributen und Methoden:
- Öffentliche Attribute:
name(string) undage(int) bark()— gibt"<name> says Woof!"zurückinfo()— gibt"<name> is <age> years old"zurück
Spickzettel
Objektorientierte Programmierung organisiert Code in Klassen, die Daten und Verhalten zusammenfassen.
Eine Klasse definiert die Struktur — welche Daten sie enthält und welche Aktionen sie ausführen kann. Ein Objekt ist eine spezifische Instanz, die Sie erstellen und verwenden.
Definieren einer Klasse mit öffentlichen Elementen:
class Dog {
public:
std::string name;
int age;
std::string bark() {
return name + " says Woof!";
}
};Erstellen und Verwenden eines Objekts:
Dog dog;
dog.name = "Buddy";
dog.age = 3;
std::cout << dog.bark() << std::endl;
// Ausgabe: Buddy says Woof!Elemente unter public: können von überall aus aufgerufen werden.
Probier es selbst
#include <iostream>
#include "Dog.h"
int main() {
std::string name;
int age;
std::getline(std::cin, name);
std::cin >> age;
Dog dog;
dog.name = name;
dog.age = age;
std::cout << dog.bark() << std::endl;
std::cout << dog.info() << std::endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienC++ Build & KompilierungHeader-Dateien & QuelldateienNamensräume & GültigkeitsbereicheEinführung in OOP in C++Klassen vs. ObjekteDer 'this'-PointerMethoden (Elementfunktionen)Attribute (Datenelemente)Grundlagen zu Ctors & DtorsRückblick - Einfacher Taschenrechner4Klasseneigenschaften
Instanz- vs. statische MemberGetter und SetterConst-MemberfunktionenMutable-SchlüsselwortStatische Methoden und VariablenFriend-Funktionen & KlassenZusammenfassung - Bankkonto-Manager7Vererbung
Grundlagen der VererbungZugriffsstufen bei VererbungAufrufreihenfolge von Ctor & DtorÜberschreiben von MethodenVirtuelle Funktionen & VTableMehrfachvererbungVirtuelle VererbungRückblick - Mitarbeiter-Hierarchie2Speicherverwaltung
Stack vs. Heap SpeicherZeiger und ReferenzenDynamischer Speicher (new/delete)Smart Pointers in C++RAII in C++Rückblick – Dynamischer Array-Manager5Kapselung
Zugriffsspezifizierer in C++Zugriffsspezifizierer im DetailInformation HidingStruct vs. ClassVerschachtelte & innere KlassenRückblick - Studentenverwaltungssystem8Polymorphie
Kompilierzeit- vs. Laufzeit-PolymorphieFunktionsüberladungVirtuelle Funktionen – WiederholungRein virtuelle FunktionenAbstrakte KlassenInterface-Design in C++Dynamic Casting & RTTIZusammenfassung – Formen-Rechner3Konstruktoren & Destruktoren
StandardkonstruktorParametrisierter KonstruktorKopierkonstruktorVerschiebekonstruktorKonstruktor-InitialisierungslistenDelegierende KonstruktorenDestruktoren im DetailRule of Three / Five / ZeroZusammenfassung - String-Klasse6Operatorüberladung
Einführung in die OperatorüberladungArithmetische OperatorüberladungVergleichsoperatorüberladungStream-OperatorenZuweisungsoperatorüberladungÜberladen der [] und () OperatorenTypumwandlungsoperatorenRückblick - Matrix-Klasse9Templates
FunktionstemplatesKlassentemplatesTemplate-SpezialisierungVariadische TemplatesSFINAE & Type Traits GrundlagenRückblick - Generische Container