.NET 4.x ООП, сокращение строк кода - C#

Узнай цену своей работы

Формулировка задачи:

В программе мы выбираем режим: 1,2,3 В каждом классе используется один и тот же метод Hello, он дублируется, а вот метод Write у всех классов разный. Вопрос: как сократить код? Чтобы Hello был один, а вызывал он разные методы Write классов. Можно ли переопределить метод Write 1 раз, а потом его в цикле прокрутить?
class Program
    {
        static void Main()
        {
            A a = new A();
            B b = new B();
            C c = new C();
 
            while (true)
            {
                var input = Console.ReadLine();
                switch (input)
                {
                    case "1":
                        a.Hello();
                        break;
                    case "2":
                        b.Hello();
                        break;
                    case "3":
                        c.Hello();
                        break;
 
                    case "Close":
                        return;
                }
            }
        }
 
        class A
        {
            public void Hello()
            {
                for (var i = 0; i < 3; i++)
                {
                    Write();
                }
            }
 
            private void Write()
            {
                Console.WriteLine("А");
            }
        }
        class B
        {
            public void Hello()
            {
                for (var i = 0; i < 3; i++)
                {
                    Write();
                }
            }
 
            private void Write()
            {
                Console.WriteLine("B");
            }
        }
        class C
        {
            public void Hello()
            {
                for (var i = 0; i < 3; i++)
                {
                    Write();
                }
            }
 
            private void Write()
            {
                Console.WriteLine("C");
            }
        }
    }

Решение задачи: «.NET 4.x ООП, сокращение строк кода»

textual
Листинг программы
abstract class Base
{
    public void Hello()
    {
        for (var i = 0; i < 3; i++)
        {
            Write();
        }
    }
 
    protected abstract void Write();
}
 
class A : Base { protected override void Write() { Console.WriteLine("A"); } }
class B : Base { protected override void Write() { Console.WriteLine("B"); } }
class C : Base { protected override void Write() { Console.WriteLine("C"); } }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы