Форум: "Прочее";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
ВнизФилосовский вопрос Найти похожие ветки
← →
ketmar © (2008-05-14 09:52) [80]>[79] -koha (2008-05-14 09:43:00)
>за 30 кб. деньги вообще не нужны это бесплатно раздается, ну а если не
>хотят брать, всеравно ведь в впарят!
за примерно 10 лет сидения в винде безо всяких дурацких антивирусов ещё никому не удалось. ЧЯДНТ?
---
Understanding is not required. Only obedience.
← →
Anatoly Podgoretsky © (2008-05-14 10:03) [81]> -koha (14.05.2008 09:43:19) [79]
Ну так и раздавай, а нам кушать хочется и семью кормить.
← →
KSergey © (2008-05-14 10:12) [82]> Anatoly Podgoretsky © (14.05.08 10:03) [81]
> Ну так и раздавай, а нам кушать хочется и семью кормить.
Все о себе да о себе
А пионерам-то как быть? Кто о них позаботится??
← →
Ega23 © (2008-05-14 10:13) [83]
> А пионерам-то как быть? Кто о них позаботится??
Пьяная, помятая
Пионервожатая
:)))
← →
ketmar © (2008-05-14 10:15) [84]>[82] KSergey © (2008-05-14 10:12:00)
>А пионерам-то как быть? Кто о них позаботится??
Вивисекторская Лаборатория имени Морро-Менгеле. вне очереди.
---
Understanding is not required. Only obedience.
← →
Ega23 © (2008-05-14 10:17) [85]Впрочем, скатились к флуду. А по теме я так и не убедился в нужности использования абстрактных методов.
← →
pasha_golub © (2008-05-14 10:22) [86]
> Ega23 © (14.05.08 10:17) [85]
Вот странно. Ты ж вроде классов плодил. Неужто не встретилась необходимость?
← →
Alkid © (2008-05-14 10:22) [87]
> Впрочем, скатились к флуду. А по теме я так и не убедился
> в нужности использования абстрактных методов.
Короче, в ДЕЛЬФИ БОЛЬШОГО смысла использовать abstract нету, ибо реально он программиста на этапе компиляции НИ К ЧЕМУ НЕ ОБЯЗЫВАЕТ.
Если говорить о других языках, где на понятия абстрактного метода и абстрактного класса накладываются более жёсткие ограничения (в частности, невозможность создать экземпляр абстрактного класса), то там смысл есть.
← →
Palladin © (2008-05-14 10:23) [88]
> Ega23 © (14.05.08 10:17) [85]
То есть, все таки склоняешься, к реализации метода, который только и будет заниматься тем, что исключение возбуждать?
← →
pasha_golub © (2008-05-14 10:27) [89]Вот такая еще штука может быть для забывчивых:
TMyClass = class
procedure My; virtual;
end;
..
procedure TMyClass.My;
begin
{$MESSAGE WARN "ДЯДЯ, не забудь меня определить по-людски"}
end;
А чтобы было вообще на этапе компиляции, например, при передаче кода сотруднику:procedure TMyClass.My;
begin
{$MESSAGE FATAL "ДЯДЯ, пока не определишь не буду работать! Вот!"}
end;
← →
TUser © (2008-05-14 10:33) [90]Afaik, во времена Borland Pascal такой директивы не было, а вызывали какое-то специальное исключение в методе, который нельзя вызывать, если он не перекрыт. Но написать abstract проще ведь, чем raise AnyException.Create (); да и идеология у паскаля всегда была - все ошибки, которые можно найти на этапе компиляции, надо найти на этапе компиляции. А вызывать этот raise - это в другую сторону, в сторону гибкости языка, совершенно лишней в данном случае.
← →
Ega23 © (2008-05-14 10:42) [91]
> Вот странно. Ты ж вроде классов плодил. Неужто не встретилась
> необходимость?
Плодил, пложу и буду плодить. Что такое директива abstract и как она работает (и, собственно, зачем нужна в теории) - прекрасно понимаю.
Но вот заметил интересную вещь - не использую на практике. Делаю в базовом классе виртуальный метод с пустым телом. И тупо не вижу смысла в практическом применении.
← →
Ega23 © (2008-05-14 10:43) [92]Вот если бы Delphi не позволял создать абстрактный класс - вот тогда да, тогда вся мощь абстрактных методов сразу проявляется. А так - не заметил warning, а он тебе бах - и abstract error.
← →
Palladin © (2008-05-14 10:46) [93]
> А так - не заметил warning
а за это больно бьют по нежным местам... ЮЗ, помню, хорошо рассказывал, за, помоему, $10 за warning и 5$ за hint. уважам"с и однозначно одобрям"c.
← →
oxffff © (2008-05-14 11:05) [94]I>
Ega23 © (14.05.08 10:42) [91]
> Делаю в базовом классе виртуальный метод с пустым телом.
Когда ты объявляешь абстрактный метод, то тело-заглушка разделяется между всеми абстрактными методами.
А если ты объявляешь несколько пустых виртуальных, то на каждый фомируется свое тело.
-> Вывод я надеюсь понятен.
← →
Ega23 © (2008-05-14 11:22) [95]
> Когда ты объявляешь абстрактный метод, то тело-заглушка
> разделяется между всеми абстрактными методами.
> А если ты объявляешь несколько пустых виртуальных, то на
> каждый фомируется свое тело.
Ну вот это вот реальный довод.
> а за это больно бьют по нежным местам... ЮЗ, помню, хорошо
> рассказывал, за, помоему, $10 за warning и 5$ за hint. уважам"с
> и однозначно одобрям"c.
Был вынужден использовать библиотеку, сделанную не мной, но содержащую действительно хороший набор различных функций. Выдавала 90+ warning-ов и 200+ хинтов. Переписывать было нельзя (точнее было сказано: "Хочешь - переписывай, но это время тебе никто не оплатит").
Заметить в этом зоопарке конкретный warning - было крайне проблематично. Сейчас стараюсь писать без хинтов и варнингов, но это получается при условии, что всё пишу сам.
← →
KSergey © (2008-05-14 11:34) [96]Эффект от использования ламмерских библиотек может быть сильно отрицательным, не смотря на красивость обертки.
← →
Ega23 © (2008-05-14 11:36) [97]
> Эффект от использования ламмерских библиотек может быть
> сильно отрицательным, не смотря на красивость обертки.
Юнит писался бывшим шефом со всеми вытекающими. :)
← →
pasha_golub © (2008-05-14 11:40) [98]
> Ega23 © (14.05.08 11:36) [97]
> Юнит писался бывшим шефом со всеми вытекающими. :)
Да хоть затекающими. :) Ворнинги - это зло.
← →
KSergey © (2008-05-14 11:40) [99]А абстрактные методы, по-моему, начинаешь осознавать, когда конечным твоим родуктом становятся библиотеки. Когда их вид и интерфейс должны быть коммерческого качества.
В законченых (в смысле юзер(не_программер)-ориентрованности) проектах (тем более где нет сильно разделенных подразделений) это и не так остро ощущаешь.
← →
Ega23 © (2008-05-14 11:43) [100]
> Да хоть затекающими. :) Ворнинги - это зло.
А кто спорит? Но жизнь - она не чОрная и не белая. И даже не серая. Там больше, чем RGB :)
← →
Style © (2008-05-14 12:38) [101]Абстрактные классы это все конечно нужно ) Но вот одного не пойму, не ужели не могли сделать сообщение об ошибке абстрактных методов более подробным - т.е. "Abstract Error - не перекрыт такой-то там метод". А то "кучу" полезной информации несет в себе сообщение "Abstract Error", с таким же успехом могли бы и послать куда-нибудь разработчика 8-)
← →
ketmar © (2008-05-14 12:42) [102]>[101] Style © (2008-05-14 12:38:00)
ну так куда-нибудь и послали.
---
Understanding is not required. Only obedience.
← →
Style © (2008-05-14 12:48) [103]
> ну так куда-нибудь и послали.
именно так я и воспринимаю данное сообщение )
← →
ketmar © (2008-05-14 12:50) [104]>[103] Style © (2008-05-14 12:48:00)
нормальная очередная фича дельфи, которую придумали, но не доделали.
---
Understanding is not required. Only obedience.
← →
Anatoly Podgoretsky © (2008-05-14 13:40) [105]> Palladin (14.05.2008 10:46:33) [93]
Что же тогда у него делают за Error
← →
Anatoly Podgoretsky © (2008-05-14 13:41) [106]> Ega23 (14.05.2008 11:36:37) [97]
Вот поэтому и бывший.
← →
Anatoly Podgoretsky © (2008-05-14 13:43) [107]> Style (14.05.2008 12:38:41) [101]
Смеешься, откуда компилятор решит в каком наследнике ты решил перекрыть метод.
А что делать с любителями TStrings.Create
← →
Ega23 © (2008-05-14 13:46) [108]
> А что делать с любителями TStrings.Create
Запретить создание абстрактных классов на этапе компиляции.
И никто не уйдёт обиженным.
← →
Palladin © (2008-05-14 13:46) [109]
> Anatoly Podgoretsky © (14.05.08 13:40) [105]
эцых с гвоздями на час :)
← →
Palladin © (2008-05-14 13:49) [110]
> Ega23 © (14.05.08 13:46) [108]
представляешь на что ты разрабочиков делфи подпрягаешь? :)Type
TBaseCClass=Class of TBase;
TBase=Class
Public
Procedure a; Virtual; Abstract;
Procedure b; Virtual; Abstract;
End;
TPre=Class(TBase)
Public
Procedure a; Override;
End;
TCompleted=Class(TPre)
Public
Procedure b; Override;
End;
var
c:TBaseClass;
begin
c:=GetNeededClass;
cc:=c.Create;
Try
cc.a;
Finally
cc.free;
End;
end;
← →
Palladin © (2008-05-14 13:51) [111]на обучение компилятора общения с астралом ) бо класс определится только в RT )
← →
Zeqfreed © (2008-05-14 14:04) [112]Ну вот. Так и знал, что [42] было просто взятием на понт. Только не понятно зачем игнорировать напрочь.
← →
Ega23 © (2008-05-14 14:20) [113]
> Ну вот. Так и знал, что [42] было просто взятием на понт.
> Только не понятно зачем игнорировать напрочь.
мы же за Delphi говорим, а не за Питон...
← →
DiamondShark © (2008-05-14 14:21) [114]
> Ega23 © (13.05.08 20:43)
> А зачм в Delphi нужна директива abstract? В чём её прелесть?
> Почему не сделать виртуальный метод с пустым телом
Пототому что абстрактный метод и пустой метод -- это разные вещи.
Другой вопрос, почему оставили возможность инстанциирования классов с абстрактными методами? Вот это уже разгильдяйство.
← →
DiamondShark © (2008-05-14 14:26) [115]
> Ega23 © (13.05.08 20:58) [7]
>
> Тогда уж проще действительно интерфейс объявить, без реализации
> его методов ты и не скомпилируешься...
А куда при этом коде реюз пойдёт?
TSortedList = class
procedure Add(item: TObject);
function Compare(item1, item2: TObject): integer; virtual; abstract;
end;
procedure TSortedList.Add;
begin
// тут ищем куда впердолить элемент, используя Compare
end;
← →
Ega23 © (2008-05-14 14:27) [116]
> Пототому что абстрактный метод и пустой метод -- это разные
> вещи.
Да знаю я...
> Другой вопрос, почему оставили возможность инстанциирования
> классов с абстрактными методами? Вот это уже разгильдяйство.
Вот и мне непонятно. Сказал "А", скажи и "Б".
← →
Anatoly Podgoretsky © (2008-05-14 14:31) [117]> DiamondShark (14.05.2008 14:21:54) [114]
А про классовые ссылки слышал?
← →
Anatoly Podgoretsky © (2008-05-14 14:33) [118]> Ega23 (14.05.2008 14:27:56) [116]
Не понятно, чего страшного и криминального в создание такого класса, не надо просто вызывать абстрактный метод без реализации.
Хотя это и плохо, но не запрещено.
← →
DiamondShark © (2008-05-14 14:36) [119]
> Германн © (14.05.08 02:00) [61]
> Гложет меня смутное сомнение, что "ПионЭры" вообще ничего
> не пишут!
На заборах они пишут. Слово "МИР" с тремя ошибками.
← →
Style © (2008-05-14 15:00) [120]
>
> Смеешься, откуда компилятор решит в каком наследнике ты
> решил перекрыть метод.
> А что делать с любителями TStrings.Create
>
Я не про компилятор.
Ну наверное надо бы для этого хранить в RTTI имена методов.
А для любителей TStrings.Create - писать более понятное сообщение "это Абстрактный класс"
В любом случае этого уже никто не сделает :)
Страницы: 1 2 3 4 5 вся ветка
Форум: "Прочее";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
Память: 0.68 MB
Время: 0.048 c