Создание иерархии классов "Товары" - 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);
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д