По определению, конструктор это метод класса и вызывается ПРИ создании экземпляра, а не ДЛЯ его создания.
Поэтому получается, что в языках с конструкторами сначала new, а потом вызов конструктора.
Иначе пришлось бы new назвать конструктором. Ну, породил, значит "конструктор".
А в обероне вообще нет конструкторов, поэтому Мессенбёк имитирует работу среды по вызову конструктора, с помощью процедуры модуля.
## Код:
```
TYPE
   T* = POINTER TO RECORD
      a- : REAL
   END;

PROCEDURE ( t : T ) InitT* ( x : REAL );
   BEGIN
      t.a :=x
END InitT;

PROCEDURE NewT* ( x : REAL ) : T;
   VAR t : T;
   BEGIN
      NEW(t); t.InitT(x);
      RETURN t
END NewT;
```

И здесь конструктором является метод InitT, который и нужен только потому, что поле класса только для чтения (что вполне обосновано). Рассуждения об удобстве такого решения можно оставить за скобками.