static void Main(string[] args) { var circle = new Circle(4); var rectangle = new Rectangle(1, 3); var triangle = new Triangle(new Point(2, 2), new Point(4, 4), new Point(4, 2)); var rectangleClient = new RectangleClient(rectangle); var circleClient = new CircleClient(circle); var triangleClient = new TriangleClient(triangle); var perimeterVisitor = new PerimeterVisitor(); var areaVisitor = new GetAreaVisitor(); var drawVisitor = new DrawVisitor(); var visitors = new IVisitor[] { perimeterVisitor, areaVisitor, drawVisitor }; foreach (var visitor in visitors) { visitor.Visit(circleClient); visitor.Visit(rectangleClient); visitor.Visit(triangleClient); } Console.WriteLine("Perimeters"); Console.WriteLine(rectangleClient.Perimeter); Console.WriteLine(circleClient.Perimeter); Console.WriteLine(triangleClient.Perimeter); Console.WriteLine(); Console.WriteLine("Areas"); Console.WriteLine(rectangleClient.Area); Console.WriteLine(circleClient.Area); Console.WriteLine(triangleClient.Area); }
public void Visit(TriangleClient client) { var halfP = client.Figure.GetPerimeter / 2; client.Area = Math.Sqrt( halfP * (halfP - client.Figure.GetASide) * (halfP - client.Figure.GetBSide) * (halfP - client.Figure.GetCSide) ); }
public void Visit(TriangleClient client) { var maxW = Math.Max(Math.Max(client.Figure.X.X, client.Figure.Y.X), client.Figure.Z.X); var maxH = Math.Max(Math.Max(client.Figure.X.Y, client.Figure.Y.Y), client.Figure.Z.Y); var picture = new Bitmap(maxW, maxH); using (var graphics = Graphics.FromImage(picture)) { graphics.DrawPolygon(Pens.Aqua, new[] { client.Figure.X, client.Figure.Y, client.Figure.Z }); } client.Picture = picture; }
public void Visit(TriangleClient client) { client.Perimeter = client.Figure.GetPerimeter; }