Лекс Айрин писал(а):Дож писал(а):Как он действует, например, в следующем коде? Можно ли утверждать, что код и данные разделены, хотя var-секции идут в перемешку с определениями функций?
Вообще-то, обычно так не делают... функции/процедуры описывают в самом конце. Да и сейчас принято в interface писать прототипы, а не сами функции, что, имхо, более правильно. Ах да, как ни странно, да, в этом случае данные разделены, хоть вы и отошли от канонического их размещения.
Я спрашивал не про то, как делают, а про то, как «основополагающий принцип паскаля» соблюдается на уровне языка :)
Задам другой вопрос: известно, что один из основополагающих принципов ООП — это инкапсуляция, т.е. объединение данных и кода в некую единую недилимую сущность. Известно также, что паскаль поддерживает ООП конструкциями object и class. Получается, что в паскале есть два противоречащих друг другу принципа? Как так?
Да и сейчас принято в interface писать прототипы, а не сами функции, что, имхо, более правильно.
Опять же: кто предлагает писать в interface-секции сами функции? Кому Вы отвечаете? Я, наоборот, пытаюсь сократить число кода в interface-секции, вынести из него то, что по факту является частью реализации.
Сорри, не заметил. Но тогда у Вас получается объект описывается дважды. Причем, один раз в секции кода А вдруг описания не совпадут? Да и потеря компактности.
Нет, в interface-секции объявляются публичные члены, а в implementation — приватные. Дублируются дважды только заголовки публичных методов.
Дублирование заголовков функций и методов — давно сложившаяся практика, и существенных проблем от того, что что-то где-то не совпало, не наблюдается. Непонятно какие тут опасения.
Я удалил бы virtual и добавил бы own (собственный). По умолчанию я бы сделал все методы виртуальными. Скрыл бы все методы/поля и организовал бы доступ только через property.
Для меня такое изменение убьёт паскаль и я сбегу в C++ :)