Создание иерархии классов "Товары" - C#

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

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

1. Создать абстрактный класс Goods с функциями, позволяющими вывести на экран информацию о товаре, а также определить, соответствует ли он сроку годности на текущую дату. 2. В абстрактном классе Goods реализовать метод CompareTo так, чтобы можно было отсортировать базу данных о товарах по их цене. 3. Создать производные классы: Product (название, цена, дата производства, срок годности), Party (название, цена, количество шт, дата производства, срок годности), Kit (название, цена, перечень продуктов). 4. Создать базу (массив) из n товаров, вывести полную информацию из базы на экран, отсортировав базу данных о товарах по их цене, а также организовать поиск просроченного товара (на момент текущей даты). Массив читается из файла. У меня загвоздка с классом Kit. Я предположил, что было бы логично представить список продуктов как массив объектов класса Product
Листинг программы
  1. private Product[] productList;
Функция для инициализации объектов всех производных классов
Листинг программы
  1. static public Goods[] Input()
  2. {
  3. using (StreamReader fileIn = new StreamReader(@"c:/USers/USER/Documents/Visual Studio 2015/Projects/
  4. Chapter 8/MyFiles/test6.txt", Encoding.Default))
  5. {
  6. CultureInfo provider = CultureInfo.InvariantCulture;
  7. int n = int.Parse(fileIn.ReadLine());
  8. Goods[] ar = new Goods[n];
  9. for(int i = 0; i < n; i++)
  10. {
  11. string[] text = fileIn.ReadLine().Split('*');
  12. if(text.Length == 4)
  13. {
  14. ar[i] = new Product(text[0], double.Parse(text[1]), DateTime.ParseExact(text[2], "yyyy, dd, MM", provider),
  15. DateTime.ParseExact(text[3], "yyyy, dd, MM", provider));
  16. }
  17. else if(text.Length == 5)
  18. {
  19. ar[i] = new Party(text[0], double.Parse(text[1]), DateTime.ParseExact(text[2], "yyyy, dd, MM", provider),
  20. DateTime.ParseExact(text[3], "yyyy, dd, MM", provider), int.Parse(text[4]));
  21. }
  22. else if(text.Length == 3)
  23. {
  24. ar[i] = new Kit(text[0], double.Parse(text[1]), ) // как сюда передать массив объектов?
  25. }
  26. else
  27. {
  28. Console.WriteLine("Неверное количество аргументов");
  29. }
  30. }
  31. return ar;
  32. }
  33. }
И как в файле из которого идет чтение, указать что ожидается массив объектов? (мне кажется это вообще невозможно)

Решение задачи: «Создание иерархии классов "Товары"»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication22
  8. {
  9.     class Kit : Goods
  10.     {
  11.         private Product[] productList;
  12.  
  13.         public Kit(string title, double price, Product[] productList) : base(title, price)
  14.         {
  15.             this.productList = productList;
  16.         }
  17.  
  18.         public override void GoodsInfo()
  19.         {
  20.             foreach(Product item in productList)
  21.             {
  22.                 item.GoodsInfo();
  23.             }
  24.         }
  25.  
  26.         public override void StillFit()
  27.         {
  28.             foreach (Product item in productList)
  29.             {
  30.                 if (item.ExpirationDate.CompareTo(DateTime.Now) > 0)
  31.                 {
  32.                     Console.WriteLine("До конца срока годности продукта {0} еще {1} дней.", item, (item.ExpirationDate - DateTime.Now).Days);
  33.                 }
  34.                 else
  35.                 {
  36.                     Console.WriteLine("У продукта {0} истек срок годности!!!", item);
  37.                 }
  38.             }
  39.         }
  40.     }
  41. }

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


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

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

11   голосов , оценка 4 из 5

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

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

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