Rückblick - Einfacher Taschenrechner
Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy — Lektion 11 von 104.
Aufgabe
SchwerErstellen Sie eine vollständige Calculator-Klasse, die alle gelernten Konzepte kombiniert:
- Header-/Quelldateien — Trennung von Deklaration und Implementierung
- Namespace — Platzieren Sie die Klasse innerhalb von
CalcApp - Private Attribute —
name(string),memory(int),operationCount(int) - Konstruktoren — Parametrisiert (name) und Standard ("Standard")
- this-Pointer — Verwenden Sie
this->für alle Member-Zugriffe - Methoden —
add,subtract,multiply,divide(jede speichert das Ergebnis im Speicher und erhöht den Operationszähler) - Getter —
getName(),getMemory(),getOperationCount()
divide sollte 0 zurückgeben, wenn durch Null geteilt wird.
Probier es selbst
#include <iostream>
#include "Calculator.h"
int main() {
std::string name;
int a, b;
std::getline(std::cin, name);
std::cin >> a >> b;
CalcApp::Calculator calc(name);
std::cout << "Calculator: " << calc.getName() << std::endl;
std::cout << "Memory: " << calc.getMemory() << std::endl;
std::cout << "Add: " << calc.add(a, b) << std::endl;
std::cout << "Subtract: " << calc.subtract(a, b) << std::endl;
std::cout << "Multiply: " << calc.multiply(a, b) << std::endl;
std::cout << "Divide: " << calc.divide(a, b) << std::endl;
std::cout << "Divide by zero: " << calc.divide(a, 0) << std::endl;
std::cout << "Memory: " << calc.getMemory() << std::endl;
std::cout << "Operations: " << calc.getOperationCount() << std::endl;
return 0;
}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