LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Я так понимаю речь идет о том, что классы без наследования (а значит полиморфизма) имеют мало смысла.

Я же в примере указал какой создаваемый класс от какого наследуется. Можно делать реквизит с типом ДокументСсылка и работать с любыми документами в этом реквизите.

Интерфейс определяется соглашением. Например, любой объект, который можно печатать, в своём модуле менеджера экспортирует процедуру Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода).

Если надо наследование реализации в стиле ООП от своих классов, то в 1С делается это делается от обработок. В смысле, обработку-родителя записываем в переменную и в своих методах вызываем сначала её методы. Или, если у родителя нет полей, то «родителем» является общий модуль (так чаще делают).

ЕМНИП в 1С даже function overloading’а (еще одна из фишек которых относят к классам) нет - то есть объявление процедуры с одним именем и разными типами параметров (но тут не уверен, может добавили в последнее время).

Там всегда было типа

Процедура Заполнить(ПараметрЗаполнения, ДополнительныеДанные = Неопределено)

  Если ТипЗнч(ПараметрЗаполнения) = Тип("Структура") Тогда
     ...
  ИначеЕсли(ПараметрЗаполнения) = Тип("ДокументСсылка.ПриходныйОрдер") Тогда
     ...
  ...
  КонецЕсли
КонецПроцедуры

То есть разное поведение для разных типов обеспечивалось. Кому сильно хотелось в стиле ООП, писали ПолучитьОбработчикЗаполнения(ТипЗнч(Параметр)).Заполнить(Параметр).

Исходная версия monk, :

Я так понимаю речь идет о том, что классы без наследования (а значит полиморфизма) имеют мало смысла.

Я же в примере указал какой создаваемый класс от какого наследуется. Можно делать реквизит с типом ДокументСсылка и работать с любыми документами в этом реквизите.

Интерфейс определяется соглашением. Например, любой объект, который можно печатать в своём модуле менеджера экспортирует процедуру Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода).

Если надо наследование реализации в стиле ООП от своих классов, то в 1С делается это делается от обработок. В смысле, обработку-родителя записываем в переменную и в своих методах вызываем сначала её методы. Или, если у родителя нет полей, то «родителем» является общий модуль (так чаще делают).

ЕМНИП в 1С даже function overloading’а (еще одна из фишек которых относят к классам) нет - то есть объявление процедуры с одним именем и разными типами параметров (но тут не уверен, может добавили в последнее время).

Там всегда было типа

Процедура Заполнить(ПараметрЗаполнения, ДополнительныеДанные = Неопределено)

  Если ТипЗнч(ПараметрЗаполнения) = Тип("Структура") Тогда
     ...
  ИначеЕсли(ПараметрЗаполнения) = Тип("ДокументСсылка.ПриходныйОрдер") Тогда
     ...
  ...
  КонецЕсли
КонецПроцедуры

То есть разное поведение для разных типов обеспечивалось. Кому сильно хотелось в стиле ООП, писали ПолучитьОбработчикЗаполнения(ТипЗнч(Параметр)).Заполнить(Параметр).