Чтобы закрыть тему, попытался разобраться в онтологии понятия "конструктор". Для этого пошарил в документации кPHP,Python,C++,C#, Java (тутитут),Smalltalk,Free Pascalи дажеPascalABC.NET. Не обошлось безГради Буча.

Все источники, как один, связывают смысл конструктора с порождением экземпляра класса и приведением его в допустимое состояние. Кто-то прямо говорит, что конструктор создаёт новый объект, кто-то ставит вызов конструктора сразу послеnewтак, что вы не можете создать объект, не вызвав конструктора. Но никто не рассматривает конструктор как операцию, отдельную от порождения объекта.

Таким образом, мы имеем дело со схемой, не зависящей от языка программирования и состоящей из двух операций:
1) Порождение объекта (экземпляра класса)
2) Инициализация атрибутов объекта (приведение в допустимое состояние).

Поскольку эта схема повторяется очень часто и буквально везде, то она имеет право называться паттерном, шаблоном. И совершенно естественно назвать этот паттернконструктором.

Дальше мы смотрим, как эта схема формализуется в разных ЯП. Естественно, по-разному. Либо это функция, возвращающая в качестве результата ссылку на созданный объект, либо метод инициализации, вызываемыйавтоматически, сразу после создания объекта обычным способом.

Отсюда вывод, даже два.

Первый: конструктор - это в первую очередь, паттерн проектирования, а не элемент описания ЯП. На языке Component Pascal конструктор реализуется (не "имитируется", а именно реализуется) очевидным и простым способом (указанным в одном из предыдущих сообщений).

И второй. Когда говорят, что в Обероне нет конструкторов, то всего лишь имеют в виду отсутствие поддержки паттерна в формальном описании языка, только и всего. Это совершенно не мешает использовать конструкторы в Оберонах.