Class Colored Circle C# Exercise - C# Programming Course

 Exercise

Class Colored Circle

 Objetive

Expand the exercise (shapes + square), so that it can also store data about "Colored Circles":

 Example Code

// Import the System namespace for basic functionality
using System;

// Define the main class containing all classes for Shapes and Colored Circle
public class ShapesDemo
{
    // Define the Square class with attributes for position and side length
    public class Square
    {
        // Integer fields to store X and Y coordinates for the top-left corner
        private int x;
        private int y;
        // Integer field to store the length of the side of the square
        private int side;

        // Constructor to initialize the square's position and side length
        public Square(int startX, int startY, int initialSide)
        {
            // Set the X coordinate of the square
            x = startX;
            // Set the Y coordinate of the square
            y = startY;
            // Set the side length of the square
            side = initialSide;
        }

        // Method to move the square by adjusting X and Y coordinates
        public void Move(int deltaX, int deltaY)
        {
            // Increment X by deltaX
            x += deltaX;
            // Increment Y by deltaY
            y += deltaY;
        }

        // Method to scale the square by changing its side length
        public void Scale(int scaleFactor)
        {
            // Multiply the side length by the scale factor
            side *= scaleFactor;
        }

        // Method to return a string with the square's data
        public override string ToString()
        {
            // Return formatted string with square's corner and side
            return $"Corner ({x},{y}), side {side}";
        }

        // Method to calculate and return the perimeter of the square
        public int GetPerimeter()
        {
            // Return 4 times the side length for the perimeter
            return 4 * side;
        }

        // Method to calculate and return the area of the square
        public int GetArea()
        {
            // Return the side length squared for the area
            return side * side;
        }
    }

    // Define the ColoredCircle class with attributes for position, radius, and color
    public class ColoredCircle
    {
        // Integer fields to store X and Y coordinates for the center of the circle
        private int x;
        private int y;
        // Integer field to store the radius of the circle
        private int radius;
        // String field to store the color of the circle
        private string color;

        // Constructor to initialize the circle's position, radius, and color
        public ColoredCircle(int startX, int startY, int initialRadius, string circleColor)
        {
            // Set the X coordinate of the circle's center
            x = startX;
            // Set the Y coordinate of the circle's center
            y = startY;
            // Set the radius of the circle
            radius = initialRadius;
            // Set the color of the circle
            color = circleColor;
        }

        // Method to move the circle by adjusting X and Y coordinates
        public void Move(int deltaX, int deltaY)
        {
            // Increment X by deltaX
            x += deltaX;
            // Increment Y by deltaY
            y += deltaY;
        }

        // Method to scale the circle by changing its radius
        public void Scale(int scaleFactor)
        {
            // Multiply the radius by the scale factor
            radius *= scaleFactor;
        }

        // Method to return a string with the circle's data
        public override string ToString()
        {
            // Return formatted string with circle's center, radius, and color
            return $"Center ({x},{y}), radius {radius}, color {color}";
        }

        // Method to calculate and return the perimeter (circumference) of the circle
        public double GetPerimeter()
        {
            // Return the circumference using the formula 2 * π * radius
            return 2 * Math.PI * radius;
        }

        // Method to calculate and return the area of the circle
        public double GetArea()
        {
            // Return the area using the formula π * radius squared
            return Math.PI * radius * radius;
        }
    }

    // Define the Main entry point of the program for testing
    public static void Main()
    {
        // Create a Square object with specified coordinates and side length
        Square square = new Square(10, 5, 7);
        // Display the square's details by calling ToString on the Square object
        Console.WriteLine("Square details: " + square.ToString());
        // Display the square's perimeter
        Console.WriteLine("Square perimeter: " + square.GetPerimeter());
        // Display the square's area
        Console.WriteLine("Square area: " + square.GetArea());

        // Create a ColoredCircle object with specified coordinates, radius, and color
        ColoredCircle circle = new ColoredCircle(15, 10, 5, "Red");
        // Display the circle's details by calling ToString on the ColoredCircle object
        Console.WriteLine("Circle details: " + circle.ToString());
        // Display the circle's perimeter
        Console.WriteLine("Circle perimeter: " + circle.GetPerimeter());
        // Display the circle's area
        Console.WriteLine("Circle area: " + circle.GetArea());

        // Move the square by specified delta values
        square.Move(3, 3);
        // Scale the square by a factor of 2
        square.Scale(2);
        // Display the updated square details
        Console.WriteLine("Updated square details: " + square.ToString());

        // Move the circle by specified delta values
        circle.Move(5, 5);
        // Scale the circle by a factor of 3
        circle.Scale(3);
        // Display the updated circle details
        Console.WriteLine("Updated circle details: " + circle.ToString());
    }
}

Juan A. Ripoll - Programming Tutorials and Courses © 2025 All rights reserved.  Legal Conditions.