Здравствуйте, Bitfry, Вы писали:
B>Нужно-то всего лишь на основе данных из файла создать объект. А как это сделать красиво? B>Вот, ход моих рассуждений: B>Получив имя файла, вызываю свою функцию
Неправильный ход рассуждений.
Получив имя файла, ты создаешь свой объект, передав ему в конструктор имя файла в качестве аргумента.
Конструктор открывает файл, читает его, распихивает данные по полям объекта. Если что не так — конструктор кидает исключение.
В результате ты или получаешь полностью готовый объект, или исключение с соответствующей ошибкой.
B>OpenМemo (FileName, memo1); // Функция открывает файл, читает данные и размещает их в memo1 — объект моего класса.
Неправильный подход.
Никакая функция "снаружи" не должна иметь прямого доступа к полям класса. На то она и изоляция с инкапсуляцией.
B>Функция OpenMemo — это ведь процедурное мышление?
Да.
B>Кроме того, я создаю в обработчике глобально юзаемый по всей программе объект memo1. Неужели так это и делается?
Зависит от логики программы.
Почему твой объект юзается во всей программе? Если там какие-нибудь конфиги хранятся, то можно и глобально заюзать.
А если у тебя там просто "всякая полезная мелочь" в кучу свалена — надо подумать, не стоит ли разобраться в этой куче и рассортировать все по отдельным объектам.