1

Тема: Модель ООП в Канторе. Объекты первого класса

Поскольку класс -- тоже функция, модель ООП в Канторе основана на обобщениях:

  • У классов нет единого общего предка.

  • Все классы являются раскрытием анонимного беспараметрического обобщения -- null. В этом смысле модель ООП в Канторе близка C++, но все базовые типы описаны через аналог шаблонов, чего не было сделано в C++. Кантор исправляет ошибки предшественников и является компилируемым языком с объектами первого класса.

  • Ключевые слова-модификаторы влияют на поведение компилятора и кодогенерацию, то есть имеют явное физическое воплощение:

    • final -- описывает класс без VMT.

    • ...

2

Re: Модель ООП в Канторе. Объекты первого класса

По всему получается, что final class описывает класс фиксированного размера, а вот виртуальные методы у него могут быть, если они в нем объявлены. В этом случае фиксированный размер учитывает указатель на VMT.

final class pointRec of 
  public final var Core:Integer X, Y;
end;

final class pointObj of
  public var Core:Integer X, Y;
end;

В этом примере оба класса имеют фиксированную размерность, но pointRec не имеет VMT, а pointObj имеет, в ней 4 метода -- in/out на каждое var-свойство.

3

Re: Модель ООП в Канторе. Объекты первого класса

За прошедшее время выкристаллизовалось объяснение, почему важно наследование и почему его нельзя заменить агрегацией.

Если встать на сторону противников ООП, наследование можно рассматривать как разновидность агрегации. Это и в самом деле так, но наследование -- анонимная агрегация, поскольку для доступа к унаследованным свойствам не нужно указывать имя предка. Если заменить наследование обычной агрегацией, анонимность потеряется.

С точки зрения принципов Кантора анонимность -- это имя, равное null. То есть наследование -- это агрегация по null. А поскольку, согласно принципам архитектуры Кантора, null -- тоже значение, анонимная агрегация имеет право на существование.

Даже более того, отсутствие ключевых атрибутов обозначает в Канторе особый или служебный смысл. Анонимная агрегация -- не исключение, за ней скрывается смысл наследование.