![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
У меня в классе должны быть неизменяемые во время работы объекта константы.
Как правильнее реализовать: 1) Инициализировать поле во время создания объекта и отдавать его свойством. 2) Просто возвращать функцией. Да и - Делфи 7. Это сообщение отредактировал(а) superVad - 12.7.2011, 23:05 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
А просто объявить константы нельзя?
Const a = 10; b = 20; |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Akella, есть родительский класс, его потомки отличаются некоторыми "константами". Но в самом классе константу не объявить.
Может само слово константа не правильно подобрано... |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Наверно неправильно. Потомки класса не должны отличаться друг от друга только некоторой "константой", которую можно "отдавать как свойство" (у них и так разные классы) или результатом некоей функции предка. Имхо стоит немножко приблизить данную задачу к "Задаче Х" с одновременным удалением от "Задачи Y". P.S. Соответствующую сагу ты должен знать. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Ну ладно, классы отличаются еще и некоторыми методами. Но все же: 1) Инициализировать поле во время создания объекта и отдавать его свойством. 2) Просто возвращать функцией:
Это сообщение отредактировал(а) superVad - 13.7.2011, 00:25 |
|||
|
||||
| northener |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Ты меня не понял. Классы - потомки некоего класса отличаются уж тем, что они - суть разные классы!
TFirstChildOfMyClass и TSecondChildOfMyClass - разные классы. И оператор Is примененный к экземплярам(объектам) данных классов это подтвердит. Добавлено через 2 минуты и 20 секунд
И всё же я напоминаю про сагу. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
||||
|
|||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
superVad,
приведи примеры классов, думаю так всем понятнее будет |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
А ещё лучше озвучь задачу, для которой тебе нужны "константы в классе".
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Это связано с отчетами.
В родителе находятся всякие общие для всех отчетов методы. Потомки отличаются как способом подсчета данных, так и в них должны быть - количество колонок, их названия, запросы... И эти данные не меняются во время работы методов объекта. Как их правильней объявить. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Возвращаемое функцией значение тоже как бы изменить сложно По мне первый вариант выглядит как то правильней. Но во втором можно сделать методы класса и обращаться к ним без создания объекта, если надо конечно. |
|||
|
||||
| 1000000dollars |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 6.10.2007 Репутация: нет Всего: 8 |
Я бы сделал свойством. Примерно так:
интерфйс фиксирован, а значение хочешь константное, хочешь вычисляемое и всё прозрачно PS: делфи под рукой нет и давно на нём не писал - так что могут быть ошибки. |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
1000000dollars, спасибо за совет. Похоже на вариант 2, но значение функции читается через свойство, что мне кажется излишне.
|
|||
|
||||
| de_Nis |
|
|||
![]() Старательный ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 19.10.2006 Где: Молдова Репутация: нет Всего: 6 |
Возможно, это прописные истины, но все же:
1) Если все классы в одном модуле, константы можно объявить в разделе implementation этого модуля. 2) Можно выделить константы в отдельный модуль, подключаемый при необходимости. Это сообщение отредактировал(а) de_Nis - 13.7.2011, 13:07 --------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет… |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Вечером постараюсь набросать маленький вариант
Это сообщение отредактировал(а) Keeper89 - 13.7.2011, 20:42 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |