Задача ООП абстрактный класс «Гирлянда» - 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
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace ConsoleApplication205
  5. {
  6.     class Program
  7.     {
  8.         static void Main()
  9.         {
  10.             Console.WriteLine("-----Simple garland------");
  11.             var simpleGarland = new SimpleGarland();
  12.             simpleGarland.PrintStateOfLights();
  13.  
  14.             Console.WriteLine("-----Color garland-------");
  15.             var colorGarland = new ColorGarland();
  16.             colorGarland.PrintStateOfLights();
  17.  
  18.             Console.ReadKey();
  19.         }
  20.     }
  21.  
  22.     abstract class Garland
  23.     {
  24.         public List<Light> Lights = new List<Light>();
  25.         protected const int LightsCount = 12;
  26.  
  27.         public void PrintStateOfLights()
  28.         {
  29.             foreach (var light in Lights)
  30.                 Console.WriteLine(light);
  31.         }
  32.     }
  33.  
  34.     class  SimpleGarland : Garland
  35.     {
  36.         public SimpleGarland()
  37.         {
  38.             for (int i = 0; i < LightsCount; i++)
  39.                 Lights.Add(new Light(){State = (LightState)(i % 2)});
  40.         }
  41.     }
  42.  
  43.     class ColorGarland : Garland
  44.     {
  45.         public ColorGarland()
  46.         {
  47.             for (int i = 0; i < LightsCount; i++)
  48.                 Lights.Add(new ColorLight() { State = (LightState)(i % 2), Color = (LightColor)(i % 4)});
  49.         }
  50.     }
  51.  
  52.     class Light
  53.     {
  54.         public LightState State { get; set; }
  55.  
  56.         public override string ToString()
  57.         {
  58.             return State.ToString();
  59.         }
  60.     }
  61.  
  62.     class ColorLight : Light
  63.     {
  64.         public LightColor Color { get; set; }
  65.  
  66.         public override string ToString()
  67.         {
  68.             return Color.ToString() + "\t" + base.ToString();
  69.         }
  70.     }
  71.  
  72.     enum LightColor { Green, Red, Yellow, Blue };
  73.     enum LightState { Off, On };
  74. }

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


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

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

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы