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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication22
{
    class Kit : Goods
    {
        private Product[] productList;
 
        public Kit(string title, double price, Product[] productList) : base(title, price)
        {
            this.productList = productList;
        }
 
        public override void GoodsInfo()
        {
            foreach(Product item in productList)
            {
                item.GoodsInfo();
            }
        }
 
        public override void StillFit()
        {
            foreach (Product item in productList)
            {
                if (item.ExpirationDate.CompareTo(DateTime.Now) > 0)
                {
                    Console.WriteLine("До конца срока годности продукта {0} еще {1} дней.", item, (item.ExpirationDate - DateTime.Now).Days);
                }
                else
                {
                    Console.WriteLine("У продукта {0} истек срок годности!!!", item);
                }
            }
        }
    }
}

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


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

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

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