Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > ООП и наследование -не могу понять задание на лабу


Автор: altai 15.9.2010, 19:50
В рамках изучения ООП, получил следующие задание на тему "Наследование. Использование защищенного доступа":
"1) Создать абстрактный класс Товар с методами, позволяющим вывести на экран информацию о товаре, а также определить, соответствует ли она сроку годности на текущую дату.
2) Создать производные классы: Продукт (название, цена, дата производства, срок годности), Партия (название, цена, количество шт, дата производства, срок годности), Комплект (названия, цена, перечень продуктов) со своими методами вывода информации на экран, и определения соответствия сроку годности.
3) Создать базу (массив) из n товаров, вывести полную информацию из базы на экран, а также организовать поиск просроченного товара (на момент текущей даты). "

Из этого задания я не могу понять, какого вида записи должна содержать "база (массив) из n товаров". Если я создам файл из записей типа 
[название продукта], [цена], [дата производства], [срок годности], вроде такого:
хлеб, 50шт, 14.50, 14.09.2010, 16.09.2010
печенье, 20 шт, 19.90, 10.09.2010, 10.12.2010
мармелад, 70 шт, 20.20, 02.02.2010, 05.09.2010
то откуда брать данные в массив "Комплект"? По заданию Комплект - это какой-то перечень продуктов. Что за продукты, по какому признаку они связаны, вообще не могу понять.
И еще вопросы:
2) Непонятно, зачем создавать три разных класса, если, в конечном счете, на экран будет выведено содержимое класса Продукт, т.к. оно полностью описывает содержимое файла. С какой целью предполагается создать классы Комплект и Партия? Не могу проследить логику автора задания.
3) по заданию нужно для каждого класса создать свои методы определения срока годности. Непонятно, что может быть разного в формуле определения срока годности для всех трех классов. Известна дата производства, известна дата истечения срока годности. Сравниваем с текущей датой и показываем объекты, с действующим сроком годности. Где тут могут быть отличия, зачем создавать этот метод для каждого класса в отдельности?
Буду дико благодарен за любые комментарии по этому заданию. 

Автор: ksnk 15.9.2010, 20:20
База должна состоять из нескольких таблиц.
Товары, партии, комплекты.

для иллюстрации - магазин заказывает товар на складах. В понедельник утром магазинный грузовичек объезжает склады и привозит товар в магазин.
-- содержимое кузова грузовика - это комплект. Может понадобится дата привоза, имя водителя, имя приемщика товара
-- водитель получил по накладной на хлебозаводе 400 буханок хлеба "Дарницкий". - это партия. Она имеет срок хранения, который представляет собой время, оставшееся до исчерпания срока хранения товара (учитываем время хранения на складе производителя) Нужна дата привоза, но можно взять из даты комплекта. Может понадобится номер накладной.
-- ну а конкретная буханка - товар. Это справочная таблица, так что дата производства в ней не нужна. 

при оформлении грузовика в базе заводится одна запись в таблице "комплекты", и столько записей в таблице "партии", сколько разных наименований товаров привезли. если привезенный товар отсутствует в таблице товаров - может понадобится заполнить строчку и в ней.

кстати, содержимое одной из комнат магазина - тоже комплект, так что может понадобится еще и хранение "деревьев" в базе  smile но, наверное, мучить бедных детей настолько не должны...

Автор: altai 15.9.2010, 20:51
спасибо, вы мне очень помогли! Задание понял, буду теперь делать. База данных и деревья тут вряд ли предполагаются, потому что у нас еще даже курса баз данных не было, это самые азы программирования, буквально вот ООП разбираем. Сделаю просто два текстовых файла, в одном из которых будет храниться список товаров на складе, а в другом - накладные на получение товара. Массив Продукты буду формировать, читая первый файл. Массив Партия тоже сформирую, читая первый файл (буду выделять разные товары с одной датой производства и объединять их в партии (типа, они покинули конвеер завода в один день). Массив Комплекты заполню, читая файл с накладными. Потом выведу на экран содержимое массива Продукты, выводя для каждого продукта номер накладной, по которой он получен у поставщика и номер партии, в которой он прибыл на склад. Таким образом, у меня будут связаны в единую таблицу все три массива.

Автор: Rodman 16.9.2010, 23:07

M
Rodman
Модератор: Название темы должно содержать язык написания!

Автор: altai 16.9.2010, 23:17
Язык программирования в данном случае не играет роли, обсуждается только алгоритм. Пытался исправить заголовок темы, но не нашел где это делается. :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)