powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Дополнение в дочернем классе метода родительского
9 сообщений из 9, страница 1 из 1
Дополнение в дочернем классе метода родительского
    #39711256
тгз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Такой вопрос. Есть класс с определенным методом, дополняющим метод родителя. Структура такая:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TParent = class
    function func();

TChild = class(TParent)
    function func();

...

function TChild.func();
begin
    result := inherited;
end;



Внутри этого метода родительский класс перебирает все свойства объекта (через RTTI) и выполняет некоторые действия в зависимости от типа свойства. Некоторые типы там не рассмотрены, они появляются только в дочернем классе, и в каждом из дочерних могут появляться свои.

Нужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711268
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тгз,

инхеритед + до-обработка?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711284
тгз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, inherited - это понятно. А вот с "до-обработкой" проблемы. Как понять, какие свойства не были обработаны родительским классом?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711298
тгз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, "до-обработка" - это обработка дочерним классом до вызова "inherited", правильно? Тогда в каждом из родительских классов получать список свойств заново и обрабатывать только те, которые данный класс может обработать? Не будет слишком дорогой операцией получение каждый раз этого списка?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711311
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тгзПонял, "до-обработка" - это обработка дочерним классом до вызова "inherited", правильно? Тогда в каждом из родительских классов получать список свойств заново и обрабатывать только те, которые данный класс может обработать? Не будет слишком дорогой операцией получение каждый раз этого списка?
1. Помечай, флажки ставь.
2. Кому какое дело, кроме тебя, дорогая ли "эта" операция, или нет?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711324
типа юзер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тгз...выполняет некоторые действия в зависимости от типа свойства . Некоторые типы там не рассмотрены, они появляются только в дочернем классе , и в каждом из дочерних могут появляться свои.

Нужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать?очевидно же - в дочернем обрабатывать свойства тех типов , которые в нем и появляются.
если в дочернем добавлены свойства типов "рассматриваемых" родительским - родительский же их увидит через RTTI и обработает, разве нет?
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711325
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тгзНужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать?
Составить список свойств (TStringList) и помечать обработанные свойства флажком integer(TStringList.Object[i]) := 1;
Соответственно, обработанные более не обрабатывать
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711725
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тгз,

Я так понял, что для каждого свойства может быть своя функция.. и раз RTTI уже используется, то попробуй использовать атрибуты.
Атрибутами можно помечать свойства, которые надо обрабатывать. Атрибуты могут быть параметризованными, например иметь ссылку на процедуру обработки.
...
Рейтинг: 0 / 0
Дополнение в дочернем классе метода родительского
    #39711761
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
TParent = class
    function func(): Boolean;  virtual;

TChild = class(TParent)
    function func(): Boolean; override;

...

function TChild.func(): Boolean;
begin
  result := inherited func();
  if not result then begin
    // Дообработка
  end;
end;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Дополнение в дочернем классе метода родительского
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]