Mejorar Las Clases De Tablas Con Patas En C#

En este ejercicio, ampliaremos el ejemplo anterior de mesas y mesas de centro introduciendo una nueva clase llamada Leg. Cada mesa puede tener una pata, y esta contendrá un método llamado ShowData, que mostrará el mensaje "Soy una pata" y luego mostrará los datos de la tabla a la que pertenece.

El objetivo es simular un escenario real donde las tablas se pueden asociar con patas, demostrando el concepto de composición en la programación orientada a objetos. El programa creará un array de mesas y mesas de centro, les asignará tamaños aleatoriamente y luego añadirá una pata a una de ellas. Finalmente, el programa le pedirá a la pata que muestre sus datos, incluyendo los detalles de su tabla principal.



Grupo

Clases avanzadas en C#

Objectivo

- Extienda las clases Table y CoffeeTable del ejemplo anterior.
- Cree una nueva clase Leg que se asociará a una tabla.
- Implemente un método ShowData en Leg que escriba "Soy una pierna" y muestre los datos de la tabla a la que pertenece.
- Seleccione una tabla del ejemplo, añádale una pierna y muestre sus datos.

Extienda el ejemplo de las tablas y las mesas de centro para agregar una clase Leg con un método ShowData que escriba "Soy una pierna" y muestre los datos de la tabla a la que pertenece.

Seleccione una tabla del ejemplo, añádale una pierna y pídale que muestre sus datos.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;

// Base class representing a generic table
class Table
{
    // Attributes for table width and height
    protected int width;
    protected int height;

    // Constructor to initialize table dimensions
    public Table(int width, int height)
    {
        this.width = width;
        this.height = height;
    }

    // Method to display table details
    public virtual void ShowData()
    {
        Console.WriteLine($"Table - Width: {width} cm, Height: {height} cm");
    }
}

// Derived class representing a coffee table
class CoffeeTable : Table
{
    // Constructor using base class constructor
    public CoffeeTable(int width, int height) : base(width, height) { }

    // Override ShowData to specify that it is a coffee table
    public override void ShowData()
    {
        Console.WriteLine($"Coffee Table - Width: {width} cm, Height: {height} cm");
    }
}

// Class representing a leg, which belongs to a table
class Leg
{
    // Reference to the table the leg belongs to
    private Table table;

    // Constructor to associate the leg with a specific table
    public Leg(Table table)
    {
        this.table = table;
    }

    // Method to display leg information along with its table details
    public void ShowData()
    {
        Console.WriteLine("I am a leg");
        table.ShowData();
    }
}

// Main program
class Program
{
    static void Main()
    {
        // Array to store 5 tables and 5 coffee tables
        Table[] tables = new Table[10];
        Random random = new Random();

        // Populate the array with random-sized tables
        for (int i = 0; i < 5; i++)
        {
            tables[i] = new Table(random.Next(50, 201), random.Next(50, 201));
        }

        // Populate the array with random-sized coffee tables
        for (int i = 5; i < 10; i++)
        {
            tables[i] = new CoffeeTable(random.Next(40, 121), random.Next(40, 121));
        }

        // Display all tables
        foreach (var table in tables)
        {
            table.ShowData();
        }

        // Select one table and assign a leg to it
        Table chosenTable = tables[2];
        Leg leg = new Leg(chosenTable);

        // Display the leg's details
        Console.WriteLine("\nDisplaying leg data:");
        leg.ShowData();
    }
}

 Output

Table - Width: 120 cm, Height: 180 cm
Table - Width: 75 cm, Height: 160 cm
Table - Width: 95 cm, Height: 140 cm
Table - Width: 180 cm, Height: 130 cm
Table - Width: 140 cm, Height: 200 cm
Coffee Table - Width: 80 cm, Height: 100 cm
Coffee Table - Width: 60 cm, Height: 90 cm
Coffee Table - Width: 50 cm, Height: 70 cm
Coffee Table - Width: 110 cm, Height: 105 cm
Coffee Table - Width: 100 cm, Height: 115 cm

Displaying leg data:
I am a leg
Table - Width: 95 cm, Height: 140 cm

Comparte este ejercicio de C#

Practica más ejercicios C# de Clases avanzadas en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..