C# Exercise: 146 Table + coffetable + leg

In this exercise of C#, the example of tables and coffee tables is extended by adding a class called "Leg". This class should include a method named ShowData, which will first display "I am a leg" and then show the data of the table to which it belongs. This exercise helps practice creating related classes, where one class (in this case, "Leg") can access the data of another class (like "Table").

To test this extension, you should choose one of the tables from the example, add a leg to it, and then ask the leg to display its data. This involves the leg interacting with the table to show the associated information, helping to understand how classes can interact and access attributes of other classes in C#. This exercise also reinforces the concept of creating relationships between objects through methods and how to organize data within an object-oriented program.

 Exercise

Table + coffetable + leg

 Objetive

Extend the example of the tables and the coffee tables, to add a class "Leg" with a method "ShowData", which will write "I am a leg" and then it will display the data of the table to which it belongs.

Choose one table in the example, add a leg to it and ask that leg to display its data.

 Example Code

// Importing the System namespace for basic system functionalities like Console for input/output
using System;

public class Table
{
    // Private fields for the width and height of the table
    private double width;
    private double height;

    // Constructor to set the width and height of the table
    public Table(double width, double height)
    {
        this.width = width; // Setting the width of the table
        this.height = height; // Setting the height of the table
    }

    // Method to show the data of the table
    public void ShowData()
    {
        Console.WriteLine($"Table width: {width} cm, height: {height} cm"); // Displaying the table's dimensions
    }

    // Getter for the width of the table
    public double GetWidth()
    {
        return width; // Returning the width
    }

    // Getter for the height of the table
    public double GetHeight()
    {
        return height; // Returning the height
    }
}

public class CoffeeTable : Table
{
    // Constructor for CoffeeTable, calling the base class constructor (Table)
    public CoffeeTable(double width, double height) : base(width, height) { }

    // Overriding the ShowData method to add "(Coffee table)" after displaying the dimensions
    public new void ShowData()
    {
        base.ShowData(); // Displaying the table's dimensions
        Console.WriteLine("(Coffee table)"); // Indicating that this is a coffee table
    }
}

public class Leg
{
    // Private field for the leg's position
    private string position;

    // Constructor to set the position of the leg
    public Leg(string position)
    {
        this.position = position; // Setting the position of the leg (e.g., front-left, back-right)
    }

    // Method to show the data of the leg
    public void ShowData(Table table)
    {
        Console.WriteLine($"I am a leg."); // Displaying that it is a leg
        table.ShowData(); // Displaying the data of the table to which the leg belongs
    }
}

public class Program
{
    public static void Main()
    {
        // Creating a new CoffeeTable object with random sizes
        CoffeeTable coffeeTable = new CoffeeTable(100, 60); // Width = 100 cm, Height = 60 cm

        // Creating a new Leg object positioned at "front-left"
        Leg leg = new Leg("front-left");

        // Showing the data of the coffee table
        coffeeTable.ShowData(); // Displaying the dimensions and the fact that it's a coffee table

        // Asking the leg to display its data, which will also display the data of the table
        leg.ShowData(coffeeTable); // Displaying that it's a leg and showing the coffee table's data
    }
}

More C# Exercises of OOP More On Classes

 Array of objects: table
Create a class named "Table". It must have a constructor, indicating the width and height of the board. It will have a method "ShowData" which will wr...
 House
Create a class "House", with an attribute "area", a constructor that sets its value and a method "ShowData" to display "I am a house, my area is 200 m...
 Table + coffetable + array
Create a project named "Tables2", based on the "Tables" project. In it, create a class "CoffeeTable" that inherits from "Table". Its method "ShowDa...
 Encrypter & Decrypter
Create a class "Encrypter" to encrypt and decrypt text. It will have a "Encrypt" method, which will receive a string and return another string. It ...
 Complex numbers
A complex number has two parts: the real part and the imaginary part. In a number such as a+bi (2-3i, for example) the real part would be "a" (2) and ...
 Catalog
Create the classes diagram and then, using Visual Studio, a project and the corresponding classes for a catalog utility: It will be able to store i...
 Random number
Create a class RandomNumber, with three static methods: - GetFloat will return a number between 0 and 1 using the following algorithm: seed = (s...
 Text to HTML
Create a class "TextToHTML", which must be able to convert several texts entered by the user into a HTML sequence, like this one: Hola Soy yo Ya ...
 Class ScreenText
Create a class ScreenText, to display a certain text in specified screen coordinates. It must have a constructor which will receive X, Y and the strin...
 Enhanced ComplexNumber class
Improve the "ComplexNumber" class, so that it overloads the operators + and - to add and subtract numbers....
 3D point
Create a class "Point3D", to represent a point in 3-D space, with coordinates X, Y and Z. It must contain the following methods: MoveTo, which will...
 Catalog + Menu
Improve the Catalog program, so that "Main" displays a menu to allow entering new data of any kind, as well as displaying all the data stored....