Задача ООП абстрактный класс «Гирлянда» - C#

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

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

Ну такая беда, я пишу на пыхе, ну вообще редко когда мне попадает возможность загнать код ООПешный, ну а в универе у нас на ООП шарп и ява (второй семестр). Я горел желанием нормально выучить ООП на шарпе да и вообще я ООП плохо знаю, но преподша не отвечала на просьбы прислать письма с заданиями. Делал мелкие задачки сам для себя чтобы хоть чутку понять все это, но когда приехал на сессию был удивлен тем что от меня просил препод который "забил" на меня во время семестра. Реально мне завтра или послезавтра сдать надо, но я даже как не напрягаюсь не могу сам это раздуплить. Прошу помощи студенту, которому уже 27 и вряд ли будет иметь второй шанс учиться снова. "Создать абстрактный класс Garland и специализировать его классами-потомками TSimpleGarland и TColorGarland, что являются абстракциями одноцветной и цветной гирлянд соответственно. В качестве элементов первой гирлянды использовать класс TLight .В качестве элементов цветной гирлянды использовать экземпляры класса TColorLight, что является расширением класса TLight за счет введения одного поля FColor типа TLightColor (может принимать значения: lcGreen, lcRed, lcYellow, lcBlue), метода SetColor (устанавливает цвет лампочки через тип TLightColor) и метода GetColorAsString, что возвращает цвет лампочки в виде строчной типа. Для хранения объектов-лампочек в обоих гирляндах использовать экземпляр класса TList (объявлен в модуле classes). Количество лампочек в обоих классах фиксированная и равен 12. Для обоих гирлянд создать метод PrintStateOfLights, что выводит в консоль состояние лампочек: включена-выключена для обоих случаев и цвет лампочки для случая цветной гирлянды. При создании цветной гирлянды установить цвет лампочки в зависимости от кратности ее порядкового номера в гирлянде: последовательно зеленая, красная, желтая, голубая. "
Насколько я понял абстрактный класс должен содержать всего 1 поле - енам (цвет лампочки), ну по логике мы должны наследоваться либо от гирлянды с 1 лампочкой, либо от гирлянды с 12 лампочками? Как вообще сюда перечисления впихнуть, как это сделать в одном неймспейсе я понимаю, но тут же должно быть иначе.

Решение задачи: «Задача ООП абстрактный класс «Гирлянда»»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication205
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("-----Simple garland------");
            var simpleGarland = new SimpleGarland();
            simpleGarland.PrintStateOfLights();
 
            Console.WriteLine("-----Color garland-------");
            var colorGarland = new ColorGarland();
            colorGarland.PrintStateOfLights();
 
            Console.ReadKey();
        }
    }
 
    abstract class Garland
    {
        public List<Light> Lights = new List<Light>();
        protected const int LightsCount = 12;
 
        public void PrintStateOfLights()
        {
            foreach (var light in Lights)
                Console.WriteLine(light);
        }
    }
 
    class  SimpleGarland : Garland
    {
        public SimpleGarland()
        {
            for (int i = 0; i < LightsCount; i++)
                Lights.Add(new Light(){State = (LightState)(i % 2)});
        }
    }
 
    class ColorGarland : Garland
    {
        public ColorGarland()
        {
            for (int i = 0; i < LightsCount; i++)
                Lights.Add(new ColorLight() { State = (LightState)(i % 2), Color = (LightColor)(i % 4)});
        }
    }
 
    class Light
    {
        public LightState State { get; set; }
 
        public override string ToString()
        {
            return State.ToString();
        }
    }
 
    class ColorLight : Light
    {
        public LightColor Color { get; set; }
 
        public override string ToString()
        {
            return Color.ToString() + "\t" + base.ToString();
        }
    }
 
    enum LightColor { Green, Red, Yellow, Blue };
    enum LightState { Off, On };
}

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


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

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

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