Абстрактные классы

В статьях не раз упоминаются абстрактные классы - не моглиб вы на примерах показать, что это такое и с чем его едят?

Forums: 

Изображение пользователя st.

Абстрактный класс

Абстрактный класс в рамках фреймворка meta4 - это обобщенный предок (суперкласс). В принципе, бессмысленно создавать его объекты, но это не запрещено. В ядре это Object. В прикладной части - базовый документ, агент/контрагент и т.п. Они создаются с той же целью, что и везде в ООП - ссылаться на общего предка, получить полиморфизм методов и свойств, обобщить структуру и поведение.

Абстрактный класс

А как же тогда с ним работать если нет его объектов?
Правильно я понимаю что в данном случае может абстрактным объектом быть "Контрагенты" если нет общих атрибутов у наследуемых классов? Как я тогда смогу использовать Контрагенты в документях если нет ссылки на таблицу?

Изображение пользователя st.

Объекты есть

Объекты есть, но они производных классов. Вообще рекомендую поменьше обобщать и создавать базовые(абстрактные) классы. Все можно решить агрегацией.

для меня, как

для меня, как новичка, немного непонятен ваш ответ (ссылка) - вы же в "теме", а я - ничего еще не понимаю в вашей архитектуре (
Еще нигде не нашел описание идеи папок, используемых в вашей системе - они у вас и классовые и фильтрующие и еще какието...в общем тоже непонятно...

Изображение пользователя st.

Папки

Папки, фильтрующие папки, абстрактные типы документов и прочая - это абстракции документ-ориентированной системы. Такая система - Nexus - есть в готовом виде, вы её можете установить и "пощупать". В моей статье только основы для построения ядра, над которым можно надстроить в том числе и документ-ориентированные абстракции.

Как же тогда

Как же тогда быть если мне в документ необходимо вставить ссылку например на контрагента, ведь в БД нет такого отношения!? но есть абстрактный класс!

Если

Если посмотрите на схему ядра Мета4, то обнаружите там сущность Links, которая описывает отношения между классами.
В описании атрибута задается его тип - ссылка на объект.
На уровне объектов БД Вы можете протянуть FK, если для хранения атрибутов класса используется своя таблица.

Мета4 это чистая идея, а не готовый проект. Поэтому ответа на вопрос, как мне организовать связь между классами в моей БД Вы не найдёте. Но найдётё подсказку в виде таблицы Objects, в которой храняться id всех эксземпляров всех классов. Благодаря её наличию, по ссылке можно обратиться к объекту любого класса. Замечу, что при этом даже не обязательно знать на объект какого класса эта ссылка ведёт.

Спасибо, я уже и

Спасибо, я уже и сам пришел к такому решению сильно напрягая извилины :)
В принципе ваша концепция позволяет вытворять всякие разные чудеса с базов - главное все правильно запрограммировать! )
Спасибо вам за идею!)

Но Object и

Но Object и Контрагент имеют реальное воплощение в таблицах, когда в статье Усова речь идет об абстрактных классах как о классах без воплощения в таблицы.!
Т.е. у Усова и у вас - это разные понятия!?

Изображение пользователя st.

Насколько я помню

Насколько я помню статью Усова, из трех способов отображения иерархии обобщения (наследования) на таблицы оптимальным автор признает только один: таблица на класс с дублированием наследуемых от предка атрибутов. То есть абстрактный класс все равно имеет под собой таблицу.