Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123OFF Агнец за бортомПочему? Наборот - чисто практический.ну это просто. Практический вопрос это на ранг выше. Т.е. Предметка с именами сущностей в предметной области. И зачем нужен класс поправленным интерфейсом. Ваще не понял. Что "просто"? Я ж написал - interface 15 методов. Основной класс / модифицированный в одном методе. Что тут обсуждать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать.вот вот.... +1. Предлагаю про Практику, а не абстрактный 1 из 15, обсудить завтра.. на работе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать. Читать вообще полезно. При чем тут это? Petro123вот вот.... +1. Почитал? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:59 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Надо тебе другое поведение - пиши новый класс, реализующий интерфейс. Пиши фабрику реализующую DI, а не лепи полиморфизм там где его не применять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПочитал? )))ну ты упрямый). Я выше сказал предметку давай. И ссылку я прочитал. А ты только мячик кидаешь туда сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПо поводу формулировокВсе формулировки, что я использовал, относятся ТОЛЬКО к исходникам. ООП - это же про исходники. Поэтому с точки зрения исходников Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе. Однако, тип наследника - составной. Он состоит из интерфейса, реализованного родителем, интерфейса самого родителя и собственного интерфейса. Не считая вездесущего object :). Поэтому объект финального типа можно привести к любому типу, из которых он состоит. К слову - набор собственных членов класса тоже называется интерфейсом (обобщающее название), и не нужно путать это название и интерфейс-элемент ООП и холиварить по этому поводу, мол у потомка нет реализованных интерфейсов. В TLB, например, собственный набор членов класса все равно описывается отдельным интерфейсом-элементом языка. Таким образом, "интерфейс класса" - это просто набор его публичных членов. Да и "приведение типов" - условность. Никакого действия под названием "приведение" над объектом не происходит, приведение типов не компилируется в какие-то инструкции (по крайней мере в VB6), происходит лишь указание компилятору, методы какого интерфейса нужно дергать. Поэтому с точки зрения компилятора "наследник реализует интерфейс" - правда. С его точки зрения даже иерархии никакой нет - просто плоская таблица методов, обращение к которым идет по адресам (вернее смещениям), которые вычисляются на этапе компиляции, исходя из порядка объявления интерфейсов и их членов (опять же потроха VB6 описываю, дотнетовские слабо представляю). И вот с этого момента начинаются срачи - реализует/не реализует. Граждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли... Не понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса? Многое зависит от того, что считать "поведением" программы. Его ты не знаешь. Что обсуждать? А выражать можно что угодно, через что угодно - смотря по ситуации. Antonariyэто неверно. Где код реализации в наследнике? Нет его, он в родителе. Ок. AntonariyПоэтому с точки зрения компилятора "наследник реализует интерфейс" - правда. Ок. Вывод на самом деле "неожиданный". Фраза, которую я видел не то в приводимой выше ветке, не то где-то в нете - "если вы используете new - значит вы делаете что-то неправильно". Самый ценный вывод из этой ветки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору,не согласен. Говорит же компилятор что у абстрактного метода нет реализации в потомках. Об этом и тема, моё имхо. Чтобы предупреждал). А вот верна ли постановка - мало информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 01:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса? Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected . Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно. Но если отмахнуться, и сказать, да мне типа пофигу, надо и всё. Ну если надо, делай типа копипаст, а какая разница-то? Если говнокодить, до уже пофигу как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 01:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ООП - говно :):):) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 02:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ViPRosООП - говно :):):) Жизнь полна разочарований особенно для некоторых ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 02:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЗаменить просто так работу какого-то метода... Ога, прикинь? Или надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна. Или у тебя опять флудо-генератор включился? Что характерно, к концу ветки - риск выставить себя дебилом ниже обычного; но знаешь, хвост, он ещё есть.))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 07:50 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
С учетом вышеописанного, что сигнатуру базовых методов менять нельзя, но требуется использовать интерфейс IParantable - тогда я бы запулил шаблон Proxy . В 14 из 15 методах сделал бы вызов метода базового класса. В 15ом, требующем коррекции - запулил бы свою реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
PallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Из кейса ветки очевидных выхода два: 1. virtual/override (если есть доступ к базовому классу) 2. явное указание реализации интерфейса iParentable в классе-наследнике. Минимум кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПоэтому с точки зрения исходников Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе. А что тогда по твоему в этом случае: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Наследник реализует, или не реализует, или частично реализует интерфейс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет. Ты столкнулся с наследниками, в которых нет кода что-ли? Адекватные граждане разработчики бастардов не клепают! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Второй метод не катит. Увы. авторОдни языки программирования (например, C++, C#) требуют явно указывать, что данный метод является виртуальным. В других языках (например, Java, Python) все методы являются виртуальными по умолчанию (но только те методы, для которых это возможно; например в Java методы с доступом private не могут быть переопределены в связи с правилами видимости). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Второй метод не катит. Увы. Что значит "не катит"? Компилятор в попапе пишет "no katit"? авторВ других языках (например, Java, Python) все методы являются виртуальными по умолчанию И как живут - беспредел же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомИли надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна.дописать свой метод в наследнике... Будет прямо по барбаре лисковой))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Про компилятор я с тобой согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомИ как живут - беспредел же."ты на святое покушаешься")))). Вопрос, почему в шарпе как в дельфи у хуже чем в java надо было сразу в заголовке темы написать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Как тебе такой интерфейс: IBucket Methods ? 222 метода против твоих 15. Задача: обернуть в Circuit Breaker . Чтобы если дёргаешь метод бакета, а в этот момент Couchbase отвалился, то срабатывал предохранитель и приложение спокойно работало себе дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Из кейса ветки очевидных выхода два: 1. virtual/override (если есть доступ к базовому классу) 2. явное указание реализации интерфейса iParentable в классе-наследнике. Минимум кода. Минимум-то минимум, но чревато. Нужно четко понимать, что делаешь, и как код будет использоваться Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:57 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=39720640&tid=1398780]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 432ms |

| 0 / 0 |
