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