Clase ScreenText Ejercicio C# - Curso de Programación C# (C Sharp)

 Ejercicio

Clase ScreenText

 Objetivo

Cree una clase ScreenText, para mostrar un texto determinado en coordenadas de pantalla especificadas. Debe tener un constructor que recibirá X, Y y la cadena a escribir. También debe tener 3 setters y un método "Display".

Cree una clase CenteredText, basada en ScreenText, para mostrar texto centrado (horizontalmente) en una fila determinada de la pantalla. Su constructor recibirá solo Y y el texto. SetX no debe cambiar la posición horizontal.

Cree una clase FramedText, para mostrar texto centrado y dentro de un rectángulo. Recibirá la fila inicial y el texto.

Finalmente, cree un programa de prueba para todos ellos, que creará un objeto de cada tipo y los mostrará.

 Código de Ejemplo

// Importing the System namespace to handle basic functionalities and console output
using System;

public class ScreenText
{
    // Coordinates and text to be displayed
    protected int x, y;  // Changed from private to protected to allow access from derived classes
    protected string text;  // Changed from private to protected to allow access from derived classes

    // Constructor that sets the X, Y coordinates and text
    public ScreenText(int x, int y, string text)
    {
        this.x = x;
        this.y = y;
        this.text = text;
    }

    // Setter for X coordinate
    public void SetX(int x)
    {
        this.x = x;
    }

    // Setter for Y coordinate
    public void SetY(int y)
    {
        this.y = y;
    }

    // Setter for the text
    public void SetText(string text)
    {
        this.text = text;
    }

    // Method to display the text at the X, Y coordinates
    public virtual void Display()
    {
        Console.SetCursorPosition(x, y);
        Console.WriteLine(text);
    }
}

public class CenteredText : ScreenText
{
    // Constructor that only needs Y and text. X will be calculated to center the text
    public CenteredText(int y, string text) : base(0, y, text)
    {
        // Calculate the X position to center the text (in a console window with 80 columns)
        int centeredX = (Console.WindowWidth - text.Length) / 2;

        // Ensure that X is not less than 0 (if the text is too long for the window)
        SetX(Math.Max(centeredX, 0));  // Set X to the calculated centered position, but not less than 0
    }

    // Override the Display method to center the text
    public override void Display()
    {
        base.Display();  // Call the base class method to display the text
    }
}

public class FramedText : CenteredText
{
    // Constructor that receives the row and text and calls the base class constructor
    public FramedText(int row, string text) : base(row, text) { }

    // Override Display method to display the text inside a frame
    public override void Display()
    {
        int width = text.Length + 4;  // Adding space for the frame
        string frame = new string('*', width);  // Create a frame line

        // Print top frame
        Console.SetCursorPosition(0, y - 1);  // Adjust Y position to make room for the frame
        Console.WriteLine(frame);

        // Print the framed text in the center
        Console.SetCursorPosition(Math.Max(x - 1, 0), y);  // Ensure the X position is not negative
        Console.WriteLine("*" + text + "*");

        // Print bottom frame
        Console.SetCursorPosition(0, y + 1);  // Adjust Y position for the bottom frame
        Console.WriteLine(frame);
    }
}

// Auxiliary class with the Main function to test the functionality of the classes
public class Program
{
    public static void Main()
    {
        // Create a ScreenText object and display it at the given coordinates (X, Y)
        ScreenText screenText = new ScreenText(5, 3, "This is ScreenText!");
        screenText.Display();

        // Create a CenteredText object and display it in the center of the screen (horizontally)
        CenteredText centeredText = new CenteredText(5, "This is CenteredText!");
        centeredText.Display();

        // Create a FramedText object and display it inside a frame
        FramedText framedText = new FramedText(7, "This is FramedText!");
        framedText.Display();
    }
}

Más ejercicios C# Sharp de POO Más sobre Clases

 Matriz de objetos: tabla
Cree una clase denominada "Table". Debe tener un constructor, indicando el ancho y alto de la placa. Tendrá un método "ShowData" que escribirá en la p...
 House
Cree una clase "House", con un atributo "area", un constructor que establezca su valor y un método "ShowData" para mostrar "Soy una casa, mi área es d...
 Tabla + coffetable + array
Cree un proyecto denominado "Tablas2", basado en el proyecto "Tablas". En él, cree una clase "CoffeeTable" que herede de "Table". Su método "ShowDa...
 Encriptador
Cree una clase "Encrypter" para cifrar y descifrar texto. Tendrá un método "Encrypt", que recibirá una cadena y devolverá otra cadena. Será un méto...
 Números complejos
Un número complejo tiene dos partes: la parte real y la parte imaginaria. En un número como a+bi (2-3i, por ejemplo) la parte real sería "a" (2) y la ...
 tabla + coffetable + leg
Amplíe el ejemplo de las tablas y las mesas de centro, para agregar una clase "Leg" con un método "ShowData", que escribirá "I am a leg" y luego mostr...
 Catálogo
Cree el diagrama de clases y, a continuación, con Visual Studio, un proyecto y las clases correspondientes para una utilidad de catálogo: Podrá alm...
 Número aleatorio
Cree una clase RandomNumber, con tres métodos estáticos: - GetFloat devolverá un número entre 0 y 1 utilizando el siguiente algoritmo: semilla =...
 Texto a HTML
Crear una clase "TextToHTML", que debe ser capaz de convertir varios textos introducidos por el usuario en una secuencia HTML, como esta: Hola Soy...
 Clase ComplexNumber mejorada
Mejore la clase "ComplexNumber", para que sobrecargue los operadores + y - para sumar y restar números....
 Punto 3D
Cree una clase "Point3D", para representar un punto en el espacio 3D, con coordenadas X, Y y Z. Debe contener los siguientes métodos: MoveTo, que c...
 Catálogo + Menú
Mejorar el programa Catálogo, de forma que "Principal" muestre un menú que permita introducir nuevos datos de cualquier tipo, así como visualizar todo...

Juan A. Ripoll - Tutoriales y Cursos de Programacion© 2025 Todos los derechos reservados.  Condiciones legales.