Zusammenfassung - Einfacher Taschenrechner
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 9 von 70.
Aufgabe
SchwerErstellen Sie eine vollständige Calculator-Klasse im Namespace CalculatorApp.Core, die alle gelernten Konzepte demonstriert:
- Felder: Private Felder für
memory(decimal) undoperationCount(int) - Eigenschaften: Automatisch implementierte Eigenschaft
Name, schreibgeschützte EigenschaftenMemoryundOperationCount - Konstruktoren: Konstruktor mit name-Parameter und Standardkonstruktor unter Verwendung von Konstruktor-Verkettung (Constructor Chaining)
- Methoden:
Add,Subtract,Multiply,Divide,PowerundSquareRoot
Alle Methoden sollten operationCount inkrementieren. Die Methode Add sollte das Ergebnis zusätzlich in memory speichern.
Hinweis: Verwenden Sie Math.Pow() für Power und Math.Sqrt() für SquareRoot. Casten Sie die Parameter bei Bedarf in double.
Probier es selbst
using System;
using CalculatorApp.Core;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal num1 = decimal.Parse(Console.ReadLine());
decimal num2 = decimal.Parse(Console.ReadLine());
// Taschenrechner mit Konstruktor unter Verwendung des Namens erstellen
Calculator calc = new Calculator(name);
Console.WriteLine($"Calculator: {calc.Name}");
Console.WriteLine($"Memory: {calc.Memory}");
// Operationen ausführen
decimal addResult = calc.Add(num1, num2);
Console.WriteLine($"Add: {addResult}");
decimal subtractResult = calc.Subtract(num1, num2);
Console.WriteLine($"Subtract: {subtractResult}");
decimal multiplyResult = calc.Multiply(num1, num2);
Console.WriteLine($"Multiply: {multiplyResult}");
decimal divideResult = calc.Divide(num1, num2);
Console.WriteLine($"Divide: {divideResult}");
Console.WriteLine($"Memory after operations: {calc.Memory}");
decimal powerResult = calc.Power(num1, num2);
Console.WriteLine($"Power: {powerResult}");
decimal sqrtResult = calc.SquareRoot(num2);
Console.WriteLine($"Square Root: {sqrtResult}");
Console.WriteLine($"History: {calc.OperationCount} operations");
}
}Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten