From 95ad56f18a1f71152e1d8f1307ee015daf71d29c Mon Sep 17 00:00:00 2001 From: Lukasz Baldyga Date: Fri, 27 Nov 2020 19:46:36 +0000 Subject: [PATCH] Converted some files to IValue instead of primitives --- .../Verbs/DrawingVerbs/Circle.cs | 11 +++--- .../Verbs/DrawingVerbs/DrawTo.cs | 15 ++++---- .../Verbs/DrawingVerbs/FillColor.cs | 11 +++--- .../Verbs/DrawingVerbs/PenColor.cs | 11 +++--- .../Verbs/Value/ValueTypes/ExpressionValue.cs | 34 +++++++++---------- 5 files changed, 44 insertions(+), 38 deletions(-) diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs index e6449e9..86906e7 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs @@ -1,18 +1,20 @@ -namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { +using Advanced_Software_Engineering.Verbs.Value; + +namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// /// Circle IVerb class. /// public class Circle : IVerb { private readonly Drawer drawer; - private readonly double scale; + private readonly IValue scale; /// /// Circle constructor creates the Circle IVerb. /// /// drawer /// scale of the circle - public Circle(Drawer drawer, double scale) { + public Circle(Drawer drawer, IValue scale) { this.drawer = drawer; this.scale = scale; } @@ -21,6 +23,7 @@ /// Execute the Circle IVerb, which is to draw a circle with the drawer. /// public void ExecuteVerb() { + double scale = this.scale.ToDouble(); drawer.DrawCircle(scale); } @@ -29,7 +32,7 @@ /// /// public string GetDescription() { - return "Draws a circle radius " + scale.ToString() + ", with origin of the pen"; + return "Draws a circle with a certain radius, with origin of the pen"; } } } \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs index 678ea6d..7936b42 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using Advanced_Software_Engineering.Verbs.Value; +using System.Drawing; namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { @@ -7,7 +8,8 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// public class DrawTo : IVerb { private readonly Drawer drawer; - private readonly Point moveToPoint; + private readonly IValue moveToPointX; + private readonly IValue moveToPointY; /// /// Creates the DrawTo intstance @@ -15,16 +17,17 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// drawer /// X position to move to /// Y position to move to - public DrawTo(Drawer drawer, int x, int y) { + public DrawTo(Drawer drawer, IValue x, IValue y) { this.drawer = drawer; - moveToPoint = new Point(x, y); + moveToPointX = x; + moveToPointY = y; } /// /// Draws the line /// public void ExecuteVerb() { - drawer.DrawLine(moveToPoint); + drawer.DrawLine(new Point(moveToPointX.ToInt(), moveToPointY.ToInt())); } /// @@ -32,7 +35,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// /// public string GetDescription() { - return "Draw line " + moveToPoint.X + ", " + moveToPoint.Y; + return "Draws a line"; } } } \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs index 6b0d61b..09047d5 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using Advanced_Software_Engineering.Verbs.Value; +using System.Drawing; namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { @@ -7,14 +8,14 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// public class FillColor : IVerb { private readonly Drawer drawer; - private readonly Color color; + private readonly IValue color; /// /// Create the FillColor instance /// /// drawer /// The color of the fill - public FillColor(Drawer drawer, Color color) { + public FillColor(Drawer drawer, IValue color) { this.drawer = drawer; this.color = color; } @@ -23,7 +24,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// Set the fill color /// public void ExecuteVerb() { - drawer.SetFillColor(color); + drawer.SetFillColor(color.ToColor()); } /// @@ -31,7 +32,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// /// Description of the fill color public string GetDescription() { - return "Set fill color to: " + color.ToString(); + return "Set fill color to the specified color"; } } } \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs index 777a488..bbe5eb4 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using Advanced_Software_Engineering.Verbs.Value; +using System.Drawing; namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { @@ -7,14 +8,14 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// public class PenColor : IVerb { private readonly Drawer drawer; - private readonly Color color; + private readonly IValue color; /// /// Creates a PenColor instance /// /// drawer /// Pen color - public PenColor(Drawer drawer, Color color) { + public PenColor(Drawer drawer, IValue color) { this.drawer = drawer; this.color = color; } @@ -23,7 +24,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// Sets the pen color /// public void ExecuteVerb() { - drawer.SetPenColor(color); + drawer.SetPenColor(color.ToColor()); } /// @@ -31,7 +32,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { /// /// The description pen color public string GetDescription() { - return "Set pen color to: " + color.ToString(); + return "Set pen color"; } } } \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs index 9ecd242..7cd6084 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs @@ -10,14 +10,14 @@ namespace Advanced_Software_Engineering.Verbs.Value { private const int DIVIDE = 3; private Drawer drawer; - private string variable1; - private string variable2; + private IValue variable1; + private IValue variable2; private int operation; private bool evaluated = false; private IValue evaluatedValue; - public ExpressionValue(Drawer drawer, string variable1, string variable2, int operation) { + public ExpressionValue(Drawer drawer, IValue variable1, IValue variable2, int operation) { this.drawer = drawer; this.variable1 = variable1; this.variable2 = variable2; @@ -30,35 +30,33 @@ namespace Advanced_Software_Engineering.Verbs.Value { private IValue Evaluate() { if (evaluated) return evaluatedValue; - IValue value1 = drawer.GetVariable(variable1); - IValue value2 = drawer.GetVariable(variable2); - string value1type = value1.GetOriginalType(); + string outputType = variable1.GetOriginalType(); - switch (value1type) { + switch (outputType) { case "bool": //operations as standard for bool expressions eg // (a + b) => a or b, (a * b) => a and b, (a ^ b) => a xor b - if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() || value2.ToBool()); - else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() ^ value2.ToBool()); - else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() && value2.ToBool()); + if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() || variable1.ToBool()); + else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() ^ variable1.ToBool()); + else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() && variable1.ToBool()); else if (operation == DIVIDE) throw new Exception("Bool cannot be divided"); else throw new Exception("Bad operation"); break; case "int": - if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() + value2.ToInt()); - else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() - value2.ToInt()); - else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() * value2.ToInt()); - else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() / value2.ToInt()); + if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable1.ToInt()); + else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() - variable1.ToInt()); + else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() * variable1.ToInt()); + else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable1.ToInt()); else throw new Exception("Bad operation"); break; case "double": - if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() + value2.ToDouble()); - else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() - value2.ToDouble()); - else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() * value2.ToDouble()); - else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() / value2.ToDouble()); + if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable1.ToDouble()); + else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() - variable1.ToDouble()); + else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() * variable1.ToDouble()); + else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable1.ToDouble()); else throw new Exception("Bad operation"); break;