Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 17:18   #21
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Да процедура бог с ней... вопрос был про архитектуру, логику.
Кто и как будет создавать объект логер, дергатьего процедуры..
=master= вне форума Ответить с цитированием
Старый 14.05.2012, 17:42   #22
mongolores
 
Регистрация: 12.05.2012
Сообщений: 9
По умолчанию

Класс TLogger подразумевался в качестве шаблона. Хотя компилятор и позволяет создать объект на его основе, но задумывался он как полностью абстрактный, без реализации и без создания объектов этого типа. Он должен был определить все те действия, которые обязательно должны были быть реализованы в потомках. Ну шаблон, одним словом.
И хотя вроде как с 7 версии Delphi можно объявить класс вот так:
Код:
TLogger: class abstract

end;
но почему-то компилятор продолжает спокойно создавать объекты на основе полностью абстрактного класса. Для меня во всяком случае это удивительно.

Последний раз редактировалось mongolores; 14.05.2012 в 17:53.
mongolores вне форума Ответить с цитированием
Старый 14.05.2012, 18:01   #23
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

делфи и не запрещал создавать объекты абстрактного класса.

но вопрос не в том...
Вы для чего абстрактым хотели делать? Какую цель преследовали?
Этож не просто, утром проснулся с бодуна, а не сделать ли мне класс абстрактным...
И про шаблон с процедурами больше не надо рассказывать..
=master= вне форума Ответить с цитированием
Старый 14.05.2012, 18:15   #24
mongolores
 
Регистрация: 12.05.2012
Сообщений: 9
По умолчанию

Хм, уже даже не знаю что ответить. А для чего вообще нужны абстрактные классы? Я так понимаю, чтобы описать обязательные возможности для потомков. Ну чтобы они как минимум реализовали то, что объявлено в абстрактном классе. Собственно и все намерения. Или вы видите в абстрактных классах что-то другое?
Цитата:
делфи и не запрещал создавать объекты абстрактного класса.
Поэтому-то и удивительно, ведь теоретически абстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров (во всяком случае так гласит Википедия).
mongolores вне форума Ответить с цитированием
Старый 14.05.2012, 18:26   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Собственно и все намерения.
ваши намерения отличались от абстракции к реализации, вот и ошибка.

подумайте, а может вам стоит внести чтото вроде имя события->описание?
соответственно оно будет легко хранится как в xml, так и в обычном тексте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.05.2012, 18:41   #26
mongolores
 
Регистрация: 12.05.2012
Сообщений: 9
По умолчанию

Я внимательно пытаюсь вникнуть в каждое слово. Не спора ради, а для понимания сути отвечу, что под намерениями я подразумеваю то, что должны сделать потомки (например, записать в файл). Поэтому в чисто абстрактном классе по-идее и содержатся только объявления методов (и никаких полей класса!). Но абстрактный класс же совсем не должно интересовать как его намерение, точнее даже сказать требование, будет реализовано в потомке. Но ключевым здесь судя по всему является сигнатура метода в базовом классе, т.е. он говорит потомку не только что он обязан сделать, но и при помощи чего.
И, видя, как несколько человек дают понять, что мой замысел неверен, нет повода вам не доверять. Наоборот, я получил отличный стимул выучить этот вопрос досконально.

Последний раз редактировалось mongolores; 14.05.2012 в 18:46.
mongolores вне форума Ответить с цитированием
Старый 14.05.2012, 18:50   #27
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в вашем случае метод определяет как класс узнает инфу что должен записать.
можно вообще создать обьект который будет в себе инфу по событию передавать.
а как его пишет уже решать реализации+реализацию то можно настраивать.

у вас неверное абстрагирование.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.05.2012, 19:12   #28
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

А для чего делали общего предка-логера и к тому-же добавили туда virtual; abstract;?
Сделайте несколько классов, с предком тобжект, распишите в каждом свою реализацию и все тип-топ (и работы меньше и заморочек).
=master= вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка виртуальных функций при полиморфизме Стремящийся Общие вопросы C/C++ 2 06.05.2012 10:23
снова об виртуальных машинах. Пепел Феникса Общие вопросы по программированию, компьютерный форум 12 25.08.2011 23:35
перегрузка виртуальных функций tiger() Visual C++ 2 04.05.2011 07:35
Конфликт виртуальных серверов ZvEr_HaCkEr Свободное общение 4 19.04.2011 18:37
Построение виртуальных миров qqwer1984 Gamedev - cоздание игр: Unity, OpenGL, DirectX 28 19.07.2010 21:22