Programmer.Calculator.Video.mp4
MSProgrammerCalculator: Calculator application.
Calculator: Calculator class library.
CalculatorTests: Unit test project.
Visual Studio 2022. .NET Framework 4.8.
Implement the Windows Calculator (Programmer) functionalities through clone coding.
graph TD
calculator[Calculator] --> calculatorApp[MSProgrammerCalculator]
classDiagram
IExpression <|-- IOperator
IExpression <|-- UnaryOperatorExpression
IOperator <|-- UnaryOperatorExpression
UnaryOperatorExpression <|-- BitwiseNOTExpression
UnaryOperatorExpression <|-- NegateExpression
<<interface>> IExpression
IExpression : long EvaluateResult()
IExpression : string EvaluateExpression(BaseNumber)
<<interface>> IOperator
IOperator : OperatorDescriptor OperatorDescriptor
<<abstract>> UnaryOperatorExpression
UnaryOperatorExpression : IExpression Operand
classDiagram
IExpression <|-- IOperator
IExpression <|-- BinaryOperatorExpression
IOperator <|-- BinaryOperatorExpression
BinaryOperatorExpression <|-- BitwiseANDExpression
BinaryOperatorExpression <|-- BitwiseNANDExpression
BinaryOperatorExpression <|-- BitwiseNORExpression
BinaryOperatorExpression <|-- BitwiseORExpression
BinaryOperatorExpression <|-- BitwiseXORExpression
BinaryOperatorExpression <|-- DivideExpression
BinaryOperatorExpression <|-- LeftShiftExpression
BinaryOperatorExpression <|-- MinusExpression
BinaryOperatorExpression <|-- ModuloExpression
BinaryOperatorExpression <|-- MultiplyExpression
BinaryOperatorExpression <|-- PlusExpression
BinaryOperatorExpression <|-- RightShiftExpression
<<interface>> IExpression
IExpression : long EvaluateResult()
IExpression : string EvaluateExpression(BaseNumber)
<<interface>> IOperator
IOperator : OperatorDescriptor OperatorDescriptor
<<abstract>> BinaryOperatorExpression
BinaryOperatorExpression : IExpression LeftOperand
BinaryOperatorExpression : IExpression RightOperand
classDiagram
IExpression <|-- IOperator
IExpression <|-- OperandExpression
IExpression <|-- SubmitExpression
IExpression <|-- ParenthesisExpression
IOperator <|-- ParenthesisExpression
<<interface>> IExpression
IExpression : long EvaluateResult()
IExpression : string EvaluateExpression(BaseNumber)
<<interface>> IOperator
IOperator : OperatorDescriptor OperatorDescriptor