Recap - Simple Calculator
Part of the Object Oriented Programming section of Coddy's C# journey — lesson 9 of 70.
Challenge
HardCreate a complete Calculator class in the CalculatorApp.Core namespace that demonstrates all concepts learned:
- Fields: Private fields for
memory(decimal) andoperationCount(int) - Properties: Auto-implemented property
Name, read-only propertiesMemoryandOperationCount - Constructors: Constructor with name parameter, and default constructor using constructor chaining
- Methods:
Add,Subtract,Multiply,Divide,Power, andSquareRoot
All methods should increment operationCount. The Add method should also store the result in memory.
Note: Use Math.Pow() for Power and Math.Sqrt() for SquareRoot. Cast parameters to double when needed.
Try it yourself
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());
// Create calculator using constructor with name
Calculator calc = new Calculator(name);
Console.WriteLine($"Calculator: {calc.Name}");
Console.WriteLine($"Memory: {calc.Memory}");
// Perform operations
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");
}
}All lessons in Object Oriented Programming
1Fundamentals of OOP
External FilesNamespaces & DirectivesIntro to Classes & ObjectsThe 'this' KeywordMethods and ParametersFields vs PropertiesConstructorsObject InitializersRecap - Simple Calculator4Inheritance
Basic Inheritance (:) SyntaxThe 'base' KeywordVirtual & Override KeywordsSealed ClassesThe 'object' Base ClassRecap - Employee Hierarchy7Advanced Features
Operator OverloadingIndexers (this[])ToString() OverrideExtension MethodsRecap - Custom List2Properties & Static Members
Auto-Implemented PropertiesRead/Write-Only PropertiesStatic Fields & MethodsStatic ClassesExpression-Bodied Members5Polymorphism & Interfaces
Compile vs Runtime PolyInterface vs Abstract ClassMultiple InterfacesExplicit InterfacesUpcasting & DowncastingRecap - Shape Calculator