Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 29 30 [31] 32 33 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#452
,
|
|
|
|
Ты имеешь в виду, что их можно инкапсулировать в модуле? Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше. Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения. |
|
Сообщ.
#453
,
|
|
|
|
Цитата D_KEY @ Shaggy, я о том, что эта инициализация должна делаться за кулисами того класса, который обеспечивает нужный функционал(и реализован с использованием GDI+). какой из? их несколько например: TGraphics - холст, TImage, TBitmap - наследник TImage, TPen и наследники, TBrush и наследники и т.д. и все они реализованы с использование GDI+ Цитата D_KEY @ Ибо скорее всего, классы, использующие GDI+ могут успешно решать свои задачи, если будут использовать какое-то другое средство, обеспечивающее нужный функционал. вот этого вообще не понял, это как, так? работать c GDI+, но пользоваться другими средствами, какими? |
|
Сообщ.
#454
,
|
|
|
|
Цитата Shaggy @ Цитата D_KEY @ Shaggy, я о том, что эта инициализация должна делаться за кулисами того класса, который обеспечивает нужный функционал(и реализован с использованием GDI+). какой из? их несколько например: TGraphics - холст, TImage, TBitmap - наследник TImage, TPen и наследники, TBrush и наследники и т.д. и все они реализованы с использование GDI+ А разве их логика зависит от GDI+ ?Цитата Цитата D_KEY @ Ибо скорее всего, классы, использующие GDI+ могут успешно решать свои задачи, если будут использовать какое-то другое средство, обеспечивающее нужный функционал. вот этого вообще не понял, это как, так? работать c GDI+, но пользоваться другими средствами, какими? Сегодня они работают с GDI+, а завтра они могут работать с какой-то сторонней библиотекой, а после завтра могут быть перенесены на другую платформу. На .NET, например. Зачем иметь зависимость от конкретной реализации? |
|
Сообщ.
#455
,
|
|
|
|
Цитата D_KEY @ А разве их логика зависит от GDI+ ? а от чего она зависит, если я работаю именно с GDI+ Цитата D_KEY @ Зачем иметь зависимость от конкретной реализации? не зависеть от реализации = ограничивать себя в возможностях |
|
Сообщ.
#456
,
|
|
|
|
Цитата Shaggy @ Цитата D_KEY @ А разве их логика зависит от GDI+ ? а от чего она зависит, если я работаю именно с GDI+ От того, что представляет собой bitmap, image, pen, brush, ... Они совершенно независимы от GDI+. Цитата Зачем? Цитата D_KEY @ Зачем иметь зависимость от конкретной реализации? не зависеть от реализации = ограничивать себя в возможностях Добавлено Цитата Shaggy @ не зависеть от реализации = ограничивать себя в возможностях Впрочем, с таким подходом, лучше работать с процедурами/функциями/модулями. |
|
Сообщ.
#457
,
|
|
|
|
Цитата D_KEY @ Зачем? зачем что? я написал(переписал под себя на самом деле) модуль для работы с GDI+, именно с ней и описал как в нём реализована часть функционала, как делфийские модули в этом помогли ты пишешь, что это неправильно и надо отвязатся от конкретной технологии/реализации прекрасно, если мне это понадобится напишу более абстрактную прослойку поверх этого модуля но обсуждалось то не это... |
|
Сообщ.
#458
,
|
|
|
|
Цитата D_KEY @ Ты имеешь в виду, что их можно инкапсулировать в модуле? Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше. Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения. этоот языка зависит, в CL например можно менять что угодно и когда угодно, а классы ты и в плюсах в рантайме не поменяешь |
|
Сообщ.
#459
,
|
|
|
|
Цитата Shaggy @ я написал(переписал под себя на самом деле) модуль для работы с GDI+, именно с ней и описал как в нём реализована часть функционала, как делфийские модули в этом помогли А почему ты не написал в таком случае класс для работы с GDI+? Добавлено Цитата korvin @ Цитата D_KEY @ Ты имеешь в виду, что их можно инкапсулировать в модуле? Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше. Например, можно поменять GDI+ на что-то другое хоть в процессе выполнения. этоот языка зависит, в CL например можно менять что угодно и когда угодно, а классы ты и в плюсах в рантайме не поменяешь Класс менять и не надо(зачем?). Я могу поменять объект |
|
Сообщ.
#460
,
|
|
|
|
Цитата D_KEY @ Класс менять и не надо(зачем?). Я могу поменять объект ![]() ну добавь метод в объект |
|
Сообщ.
#461
,
|
|
|
|
Цитата korvin @ Цитата D_KEY @ Класс менять и не надо(зачем?). Я могу поменять объект ![]() ну добавь метод в объект Зачем? Я имел в виду поменять один объект на другой. А завести специальный вид классов, содержащий расширяемый контейнер функций и обеспечивающий вызов метода по имени - дело не хитрое. |
|
Сообщ.
#462
,
|
|
|
|
А что, у тебя обоснования есть? Прости, не заметил, ткни, где.
Я вроде бы не претендовал на безгрешность, когда то писал. То, что это моё ИМХО, т.с. чистые рассуждения, там ясно видно. Если процитированное мною является твоим мне обвинением, ты промазал. Если б твоя критика была конструтивной, могли б хорошо побеседовать, а так... не вижу во флейме смысла. Ага. Только ими тогда нельзя будет пользоваться без документации. У нас - можно, если оставить .h. Впрочем, я, конечно, придираюсь. .h - это только публикация интерфейсов, эдакий справочник. Документацией это назвать было бы слишком натянуто. Однако я и Дельфях видел .int файлики, которые просто суть те же модули с вырезанной implementation секцией, и которые не используются никак, окромя просто почитать глазками. Цитата KILLER @ Первые три пунктра ещё в C были. А initialization/finalization-секции - это эдакие конструкторы и деструкторы модулей. (Ага, korvin уже тоже то же сказал.) Хм... а оно надо? Ну если надо, глобальный экземпляр класса в безымянном пространстве имён. Хотя мне ни разу не понадобилось строить чёрный ящик на уровне единицы трансляции. Бред это.В принципе первые три пункта меня мало инетерсуют, так как С++ имеет такие возможности, а вот по 4 пункту было бы интересно послушать, что это за initialization/finalization-секции такие, для чего используются ? Запросто. Намёк: пространства имён открыты. Вот вы смешные, её богу. Зачем в язык заводить аж целую новую сущность с целыми двумя специальными ключевыми словами, если существующие механизмы с этим справляются на ура. Будем меряться количеством строчек? У нас пять, у вас две. Считайте, вы выиграли. Нет, не правильно. Будет твой вариант. Цитата korvin @ Если я правильно понял, то замена одной реализации на другую в ран-тайм поддержана наличием позднего связывания. Не поверю ,что ты о ней не слышал. Значит я тебя неправильно понял. А как правильно? ...а классы ты и в плюсах в рантайме не поменяешь |
|
Сообщ.
#463
,
|
|
|
|
Цитата D_KEY @ Зачем? Я имел в виду поменять один объект на другой. так а при чем тут тогда модули? менять значения переменных они не мешают Добавлено Цитата D_KEY @ А завести специальный вид классов, содержащий расширяемый контейнер функций и обеспечивающий вызов метода по имени - дело не хитрое. раз не хитрое, может покажешь? ну в частности меня интересует тип контейнера, примеры вызова хранящихся в нем методов и собственно реализация самого метод вызова Добавлено Цитата Qraizer @ Если я правильно понял, то замена одной реализации на другую в ран-тайм поддержана наличием позднего связывания. Не поверю ,что ты о ней не слышал. Значит я тебя неправильно понял. А как правильно? чтобы поменять класс в рантайме, нужно чтобы классы были объектами первого класса |
|
Сообщ.
#464
,
|
|
|
|
Цитата D_KEY @ Да, можно. Только я здесь не модули ругаю, а утверждаю, что при ОО-проектировании, это все делают классы. И делают они это лучше. А что они делают? Что? Цитата Qraizer @ А что, у тебя обоснования есть? Прости, не заметил, ткни, где. Я вроде бы не претендовал на безгрешность, когда то писал. То, что это моё ИМХО, т.с. чистые рассуждения, там ясно видно. Если процитированное мною является твоим мне обвинением, ты промазал. Если б твоя критика была конструтивной, могли б хорошо побеседовать, а так... не вижу во флейме смысла. Обоснования чего? О преимуществах модулей? О них уже давно рассказали, если не хотите это принимать - ваши проблемы. А всё что тобою было написано - просто вода, без каких-либо доказательств. Цитата Qraizer @ Ага. Только ими тогда нельзя будет пользоваться без документации. Собственно да, но работать с одними DCU - это не частая практика (к примеру когда используешь демонстрационные коммерческие библиотеки). Цитата Qraizer @ У нас - можно, если оставить .h. Впрочем, я, конечно, придираюсь. .h - это только публикация интерфейсов, эдакий справочник. К слову, что не нравится в .h - хрен найдёшь саму реализацию (хотя может быть я не умею правильно искать). Цитата Qraizer @ Первые три пунктра ещё в C были. А initialization/finalization-секции - это эдакие конструкторы и деструкторы модулей. (Ага, korvin уже тоже то же сказал.) Хм... а оно надо? Ну если надо, глобальный экземпляр класса в безымянном пространстве имён. Хотя мне ни разу не понадобилось строить чёрный ящик на уровне единицы трансляции. Бред это. Открой любой модуль Delphi из RTL или VCL - практически в каждом используется initialization/finalization. Цитата Qraizer @ Вот вы смешные, её богу. Зачем в язык заводить аж целую новую сущность с целыми двумя специальными ключевыми словами, если существующие механизмы с этим справляются на ура. Будем меряться количеством строчек? У нас пять, у вас две. Считайте, вы выиграли. А в сумме используемых модулей сколько дополнительных строчек будет? У нас ноль - а у вас от 100 и более |
|
Сообщ.
#465
,
|
|
|
|
Цитата DesweR @ К слову, что не нравится в .h - хрен найдёшь саму реализацию (хотя может быть я не умею правильно искать). А зачем тебе реализация? Чтобы посмотреть в каком порядке вызываются конструкторы классов, дабы не выхватить AV при использовании? Реализация хранится в *.с/*.сpp файлах, реализация шаблонов - часто располагается в *.h файлах. Или я может не допонял чего Цитата DesweR @ А в сумме используемых модулей сколько дополнительных строчек будет? У нас ноль - а у вас от 100 и более Ты чего такое говоришь? Кто за тебя эти секции будет писать? Хоть в сумме хоть без суммы... Я же объяснял вроде, и Qraizer тут повторял, аналог вашей секции initialization/finalization это пространство имен(глобальное/локальное/безымянное), единственно что 5 строчек, это если нужно проделать сложные действия, тогда просто придется эти действия обернуть в класс, и в пространстве имен создать экземпляр этого класса, и все, конструктор и деструктор будут вызваны автоматически.. о каких 100 и более строчках ты говоришь? |