|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Архитектура Desktop приложения. Проектирование классов
Хотя и имею профильное образование, программирую под Win довольно редко (в основном ПЛК, а ещё чаще отвёртки и бокорезы), да и собственно, кроме Delphi, особо то и не знаю ничего. Возникла необходимость написать новое приложение, а так как с годами, мне кажется, что я тупею, решил посоветоваться. Последнее на чём я писал, это Delphi 7, несколько лет назад, причём когда писал, помню что сильно матерился, что не могу сделать так как я хочу, потому что это реализовано только в новых версиях делфи. Сейчас вот скачиваю 11 Community Edition.
Собственно задача: дан некий текстовый файл с данными для станка. В этом файле, в строковом виде, существует список изделий, а в каждом изделии, соответственно, список операций, осуществляющимися над ним. Необходимо перестроить файл, в соответствии с оптимизацией (раскроем) изделий. Также была необходимость пересчитывать некоторые операции, содержащиеся в изделии (первая версия программы написанная примерно за месяц неспешного труда, с постоянным отвлечением на другие задачи, обрастала мясом года полтора ещё сверху). То есть я уже делал одну такую программу, но сейчас возникла задача сделать такую же под другой станок и соответственно формат файлов. Теоретически, можно прикрутить новый формат файлов к старой программе, но... не хочется. Не знаю почему, хочется всё переписать на новой версии и сделать лучше чем было. Как я сделал старую программу: изначально, при открытии файла, создаётся объект при помощи конструктора класса TФайл, затем в этом же конструкторе файл парсится. И в поле типа TObjectList класса TФайл создаются объекты класса TИзделие. В свою очередь в классе TИзделия, есть поле типа TObjectList, которое содержит в себе объекты класса TОбработка. Получается такая иерархическая структура связанная через TObjectList. В каждом классе, естественно, помимо поля TObjectList, существуют вспомогательные и не очень, поля относящиеся к каждому конкретному классу, какие то размеры, списки TStringList с самими кодами программы и какими то служебными полями, также есть методы оперирующие данными, находящимися в этих классах. Например процедура оптимизации, содержится в классе TФайл, так как она выполняет перестановки в "массиве" изделий, который содержится внутри класса TФайл, в его поле TObjectList. Есть ещё несколько служебных - вспомогательных классов (например списки раскраиваемых заготовок), которые не относятся напрямую к классу изделий, файла, и обработок - они отделены и не входят в общую структуру. В итоге получается такой мегаобъект типа ТФайл, внутри него в списке объекты изделия, внутри которых объекты обработки. И собственно вопросы: 1. Насколько я выбрал удачную архитектуру приложения? Можно ли сделать лучше? 2. Какой класс выбрать, с учётом более современных возможностей Делфи 10/11, в качестве контейнера объектов, или остаться на TObjectList? |