Интерфейсы в .NET (Страница 1) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#1 03-05-10 00:57:04

SemyonKozakov
Журнашлюшка :)
Из Саратов
Зарегистрирован: 28-11-09
Сообщений: 4,109
Сайт

Re: Интерфейсы в .NET

Armanx64, речь шла об отсутствии множественного наследования. Про интерфейсы все знают  smile


https://nolinux.w2c.ru - море баттхерта и деаонимизации

Неактивен

#2 03-05-10 12:18:52

SemyonKozakov
Журнашлюшка :)
Из Саратов
Зарегистрирован: 28-11-09
Сообщений: 4,109
Сайт

Re: Интерфейсы в .NET

Мсье Armanx64, на этот предмет пытайте Linfan, когда он из Египта вернётся. Я не настолько в ООП разбираюсь. И без хамства, плиз.


https://nolinux.w2c.ru - море баттхерта и деаонимизации

Неактивен

#3 03-05-10 16:09:31

SemyonKozakov
Журнашлюшка :)
Из Саратов
Зарегистрирован: 28-11-09
Сообщений: 4,109
Сайт

Re: Интерфейсы в .NET

Armanx64 пишет:

И без хамства

Посмеялся

Хорошо смеётся тот кто смеётся последним  big_smile


https://nolinux.w2c.ru - море баттхерта и деаонимизации

Неактивен

#4 13-07-10 14:23:04

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Интерфейсы в .NET

Ой, с нетерпением жду кого-нибудь, чтобы обсудить, что же дает такого множественное наследование , без чего в .нет что-то получается "кривее".


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#5 30-07-10 10:29:14

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641

Re: Интерфейсы в .NET

Tiphon пишет:

Ой, с нетерпением жду кого-нибудь, чтобы обсудить, что же дает такого множественное наследование , без чего в .нет что-то получается "кривее".

Да че вы прицепились к этому множественному наследованию? От него в пользу интерфейсов отказались еще в Delphi периода Борланда и в D. Ну и?
А в интерпретируемых языках, наверно, так и не откажутся.


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

#6 30-07-10 16:29:59

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Интерфейсы в .NET

DonDublon3 пишет:

От него в пользу интерфейсов отказались еще в Delphi периода Борланда и в D. Ну и?
А в интерпретируемых языках, наверно, так и не откажутся.

Да я сам не знаю, чего прицепились)
В С++ тоже, наверное, не откажутся (издал гомерический хохот)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#7 30-07-10 18:25:59

whoknows
Гость

Re: Интерфейсы в .NET

Tiphon пишет:

В С++ тоже, наверное, не откажутся (издал гомерический хохот)

и правильно сделают. Хочется интерфейсов - используй множественное наследование только интерфейсов. Кто не даёт-то?
std::fstream на множественном наследовании построен - ну и чё?

#8 30-07-10 20:32:07

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Интерфейсы в .NET

whoknows пишет:

и правильно сделают. Хочется интерфейсов - используй множественное наследование только интерфейсов. Кто не даёт-то?
std::fstream на множественном наследовании построен - ну и чё?

Да ниче) Я разве где-то говорил, что че?

Вообще все один хрен и приемы примерно те же.

Редактировался Tiphon (30-07-10 20:35:20)


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#9 31-07-10 12:19:21

DonDublon3
Участник
Из Уфа
Зарегистрирован: 06-05-10
Сообщений: 641

Re: Интерфейсы в .NET

Armanx64 пишет:

Потому, что это противоречит парадигме .NET: в любом пространстве имён дерево классов должно быть строго иерархическим, что бы всегда можно было подняться к предку, а не к предкам.

Какая похвала Борланду smile)))

Добавлено спустя 13 мин 48 с:

Armanx64 пишет:

. А если вам нужны свойства более чем одного класса,  то лучше создать интерфейс, более того, встроенный в VS2010 рефрактор на основе кода может сам создать интерфейс.

На самом деле это проще только для создателей компилятора, но не для программиста, который этим языком будет пользоваться.


"Фу бля, крохобор вонючий" (с) Svart Testare

Неактивен

#10 31-07-10 14:10:53

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354

Re: Интерфейсы в .NET

DonDublon3 пишет:

На самом деле это проще только для создателей компилятора, но не для программиста, который этим языком будет пользоваться.

Все не так просто и страшно. Все сложно. Никто по одному зайцу не стреляет. Например, при создании C# обращалось внимание так же и на сложность его парса. В отличии от С++ - C# парсится очень легко, поэтому есть возможность создавать замечательные инструменты, которых под C++ нет. (Конкретика - см. Resharper https://ru.wikipedia.org/wiki/ReSharper)

Ну на вскидку могу еще подбросить то, что с точки зрения производительности наследование классов характеризуется за борьбу - влезет у тебя все с потрахами в кеш или нет. Как раз неструкрутрированное наследование с виртульными функциями (т.е. с созданим виртульных таблиц) приводит к созможному уменьшению производительности С++. Имея разграничения можно легче оптимизировать данную проблему.


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Неактивен

#11 14-08-10 17:11:29

Linfan
Linux user
Зарегистрирован: 11-11-09
Сообщений: 1,653

Re: Интерфейсы в .NET

Armanx64 пишет:

Кто там трындел про отсутствие интерфейсов в .NET? Кажись, линьфань?
Цитирую из книги Джона Либерти:

Кроме того, язык С# поддерживает интерфейсы (interfaces) - средст-
во заключения контракта с классом на предоставление услуг, огово-
ренных интерфейсом. В языке С# класс может наследоваться только
от одного родителя, но в нем могут быть реализованы несколько ин-
терфейсов. Реализуя интерфейс, класс обещает предоставить функ-
циональность, описанную интерфейсом.

ух ты, какую я ветку то пропустил, не посещая форум. Оказывается (k)Armanx64 тут
батхерт зализывал (я надеюсь правильно расшифровал твой ник? Косишь под Учителя?  big_smile )

(k)Арманчик, прежде чем лезть в обсуждение таких вопросов, ты бы
базовые вещи по ООП освоил бы, да и не только по ООП. А то в соседнем треде
выяснилось, что ты не знаешь таких примитивных вещей как типы (если такое
выяснится при приеме на работу - тебя ни в одну контору не возьмут... ну разве что
толчки мыть big_smile ).

Касательно основного отличия между интерфейсами и множественным наследованием -
в интерфейсах "Реализуя интерфейс, класс обещает предоставить функ-
циональность, описанную интерфейсом." А при множественном наследовании класс
потомок получает готовый функционал от предков. Разницу поймешь
или надо на пальцах пояснять?

Редактировался Linfan (14-08-10 18:59:53)


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

Неактивен

#12 14-08-10 19:26:39

Linfan
Linux user
Зарегистрирован: 11-11-09
Сообщений: 1,653

Re: Интерфейсы в .NET

Множественное наследование приводит к путанице и нельзя найти конкретного родителя.  Безупорядоченные половые связи опасны. wink

(k)Арманчик, вы непроходимо тупы и не шарите в теме чуть более чем полностью. Паренты декларируются в самом начале класса.

class MutiParents (Parent1, Parent2, Parent3):
     def __init__(...):

и т.д.

Заявить такое - тоже самое сказать, что "интерфейсы приводят к путанице и нельзя найти конкретный интерфейс".


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

Неактивен

#13 14-08-10 19:39:17

Linfan
Linux user
Зарегистрирован: 11-11-09
Сообщений: 1,653

Re: Интерфейсы в .NET

Любое расширение возможностей потенциально повышает сложность, а значит и увеличивает и путаницу. Это цена, которую приходится платить.

100% Это верно для любого ЯП и для любого сложного проекта. В данном случае все зависит от создателей проектов.

Добавлено спустя 05 мин 46 с:

Armanx64 пишет:

Наследование нужно, ибо ООП.
Множественное наследование нужно, когда два и более класса должны уметь делать что-то одно.
Но в случае других языков мне придётся делать два базовых класса, а затем наследовать от них свой производный.
В случае с .NET я знаю, что мне нужно. Максиум я наследую базовый класс - всё остальное в интерфейсе.
К примеру, я могу применить foreach к любому экземпляру класса, реализующего интерфейс IEnumerable.
Я могу создать интерфейс IВыключабл, и реализуя его в классах, я знаю, что все они могут иметь возможность выключения.
Всё просто.

Ты так и не понял основной сути - интерфейсы провоцируют дуплицирование кода, поскольку это отложенная имплементация. Именно благодаря языковым особенностям Питона (в т.ч. множественному наследованию) код проектов на Питоне на порядок компактнее чем на дотнете/жабе/плюсах. А соотв. скорость создания проекта гораздо выше и меньше людей нужно на его написание и поддержку. Чистый бизнес и никакой религии.

Редактировался Linfan (14-08-10 19:40:05)


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

Неактивен

#14 14-08-10 20:32:36

Linfan
Linux user
Зарегистрирован: 11-11-09
Сообщений: 1,653

Re: Интерфейсы в .NET

Нет, не понял тут кое что некто другой.
Код будет расти в любом случае. Интерфейсы гарантируют то, что даже несмотря на разность работы, разные классы смогут взаимодействовать по одним и тем же стандартам. Хотя да, кому я говорю...

(k)Арманчик, ты хочешь сказать что имплементация интерфейсов "гарантируют то, что даже несмотря на разность работы, разные классы смогут взаимодействовать по одним и тем же стандартам" а наследование не гарантирует??? Так, школота, иди читай учебники!

Можешь сходить в блог карманыча и поскоморошничать под моим ником - судя по-всему, ты так батхерт залечиваешь  big_smile


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

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





Подвал форума

Под управлением FluxBB
Модифицировал Visman

Яндекс.Метрика