Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Атрибуты ABSTRACT и EMPTY
https://zx.oberon.org/forum/viewtopic.php?f=79&t=391
Страница 1 из 4

Автор:  Len [ 26 июн 2018, 14:42 ]
Заголовок сообщения:  Атрибуты ABSTRACT и EMPTY

В каких случаях при объявлении методов используется атрибут ABSTRACT, а в каких EMPTY?

Автор:  Comdiv [ 26 июн 2018, 15:21 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

В сообщении о языке - http://www.inr.ac.ru/~info21/cpascal/cp ... .4_rus.htm есть довольно подробное описание:
Цитата:
Описания абстрактных и пустых методов состоят только из заголовка процедуры. Абстрактные методы не могут вызываться. Тип записей, содержащий абстрактный метод, должен быть абстрактным. Метод, переопределяемый абстрактным методом, должен быть абстрактным. Абстрактный метод экспортируемого типа запись должен экспортироваться. Вызов пустого метода не имеет никакого эффекта. Пустые методы не могут быть процедурами-функциями и не могут иметь OUT параметров. Тип записей, содержащий новые пустые методы, должен быть переопределяемым или абстрактным. Метод, переопределенный пустым методом, должен быть пустым или абстрактным. Абстрактные или пустые методы некоторого типа обычно переопределяются (реализуются) в его потомках. Они не должны вызываться супер-вызовами. Конкретный (не абстрактный) тип записей, являющийся потомком абстрактного типа, должен реализовать все абстрактные методы своего типа-предка.

Автор:  Len [ 26 июн 2018, 15:30 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Это я уже читал. Тут сказано КАК это делать, но почти ничего не сказано ДЛЯ ЧЕГО. Вот только одна строчка:
Цитата:
Абстрактные или пустые методы некоторого типа обычно переопределяются (реализуются) в его потомках.

Автор:  Comdiv [ 26 июн 2018, 16:26 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Вот ещё
Цитата:
Абстрактные методы не могут вызываться

То есть, абстрактный метод требует обязательного определения в конечном, не заготовочном RECORD. Пустой метод не требует обязательного переопределения, предоставляя поведение по умолчанию - отсутствие действий.

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

Автор:  Len [ 26 июн 2018, 17:04 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Comdiv писал(а):
...предоставляя поведение по умолчанию - отсутствие действий.

Зачем он тогда нужен?

Автор:  Zorko [ 26 июн 2018, 17:41 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Comdiv писал(а):
В целом, ООП модель а Компонетном Паскале на данным момент считается не очень удачной
Кем считается? Надо думать, в Обероне-07 более удачная модель ООП?

Автор:  Comdiv [ 26 июн 2018, 18:11 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Len писал(а):
Comdiv писал(а):
...предоставляя поведение по умолчанию - отсутствие действий.
Зачем он тогда нужен?
Видимо, для экономии строк. Я уже писал, что модель не очень удачная.

Автор:  Comdiv [ 26 июн 2018, 18:15 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Zorko писал(а):
Кем считается?
В целом, в мире прошла ООП-эйфория и появилась тенденция более ограниченного ООП (Go, Rust). Других эйфорий, впрочем, хватает.
Comdiv писал(а):
это потенциально врывоопасная тема, я же говорю об этом потому, что, возможно, и не стоит особо вникать в эти детали.

Автор:  Zorko [ 27 июн 2018, 00:43 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Модель ООП в КП вполне минималистична (проще принятой в Активном Обероне) и является уточнением модели Оберона-2 в сторону компонентности.


Никто не утверждает, что она идеальна. Но она вполне хорошо выполняет возложенные на неё задачи.


Автор:  Comdiv [ 27 июн 2018, 10:59 ]
Заголовок сообщения:  Re: Атрибуты ABSTRACT и EMPTY

Zorko писал(а):
Модель ООП в КП вполне минималистична (проще принятой в Активном Обероне)
И тем не менее, сейчас пришли к двухэтажной модели наследования методов - интерфейс -> воплощение с разными нюансами. Возможно, хотят на уровне языка решить проблему хрупкого базового класса.

Страница 1 из 4 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/