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);
        }
Ejemplo n.º 2
0
        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)
                );
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
 public void Visit(TriangleClient client)
 {
     client.Perimeter = client.Figure.GetPerimeter;
 }