Size: a a a

2019 December 15

НП

Никита Петроченко... in CODE BLOG / C#
Артур
Привет, подскажите пожалуйста, функции наследования в ооп, кроме структурирования кода? Особенно касающиеся интерфейсов  На тех. интервью завалили этим вопросом, на ответ что интерфейс обязывает реализовывать метод , интервьюер ответил что и без интерфейсов все прекрасно реализуется, суть другая идите думайте.
А можешь дословно вопрос написать?
источник

А

Артур in CODE BLOG / C#
Кратко и дословно: смысл наследования и интерфейсов в ооп
источник

НП

Никита Петроченко... in CODE BLOG / C#
и ты ответил, что интерфейсы нужны для того, что бы обязать класс реализовать метод?
источник

А

Артур in CODE BLOG / C#
Да
источник

s.

sauwork . in CODE BLOG / C#
это некорректный ответ , зачем нужно обязывать класс реализовывать метод ? - когда метод можно реализовать без каких либо обязательств.
источник

НП

Никита Петроченко... in CODE BLOG / C#
А что тогда удивляться? Вопрос по факту звучит как "для чего нужнен интерфейс" а не "что он делает". Они тупо проверили опыт разработки
источник

А

Артур in CODE BLOG / C#
Так можете подсказать корректный ответ?
Опыта в разработке как бы и нету совсем у меня)
источник

s.

sauwork . in CODE BLOG / C#
а чего гугл говорит ? )
источник

s.

sauwork . in CODE BLOG / C#
там и примеры есть . сюда долго пояснять.
источник

НП

Никита Петроченко... in CODE BLOG / C#
А если подумать? Давай от друггого отталкиваться. Зачем нам ограничивать класс интерфейсом, если можно метод реализовать без интерфейса?
источник

s.

sauwork . in CODE BLOG / C#
источник

s.

sauwork . in CODE BLOG / C#
Если убрать много букав , и оставить только определение , то звучит примерно так:
источник

s.

sauwork . in CODE BLOG / C#
Интерфейсы устанавливают взаимные обязательства между элементами программной системы, что является фундаментом концепции программирования по контракту (англ. design by contract, DbC). Интерфейс определяет границу взаимодействия между классами или компонентами, специфицируя определённую абстракцию, которую осуществляет реализующая сторона.
источник

s.

sauwork . in CODE BLOG / C#
Но без практики , понять это тоже сложно , нужны наглядные задачи.
источник

А

Артур in CODE BLOG / C#
Никита Петроченко
А если подумать? Давай от друггого отталкиваться. Зачем нам ограничивать класс интерфейсом, если можно метод реализовать без интерфейса?
Чтобы он точно реализовал необходимый нам функционал
источник

НП

Никита Петроченко... in CODE BLOG / C#
Артур
Чтобы он точно реализовал необходимый нам функционал
это бредово звучит. ну реализует он этот метод, а дальше что?
источник

А

Артур in CODE BLOG / C#
Никита Петроченко
это бредово звучит. ну реализует он этот метод, а дальше что?
Дальше пользователь класса наследовавшего от интерфейса будет  использовать его с известной асигнатурой, определенной в интерфейсе
источник

s.

sauwork . in CODE BLOG / C#
PrintColor(IColoredObject  object) {     WriteLine(object.Color);      } : о чем-то говорит ? , если у нас есть множество цветных обьектов разного типа ,  шарики , карандаши , и возомжно будут в будущем другие ? - как нам напечатать цвета всех возомжных типов обльектов (которых еще даже нет) , не переписывая каждый раз функцию PrintColor ?
источник

s.

sauwork . in CODE BLOG / C#
- нам нужно договорится , определить контракт взаимодействия , функция PrintColor готова работать только с цветными типами обьектов , т.е все реализации цветных типов должны соблюдать контракт IColoredObject. В противном случае пришлось бы писать кучу PrintColor на каждый тип ,  PrintColor(Карандаш object)  {  WriteLine(object.Color);  }, PrintColor(Шарик object)  {  WriteLine(object.Color);  }, PrintColor(ХЗЧегоЕще object)  {  WriteLine(object.Color);  }
источник

НП

Никита Петроченко... in CODE BLOG / C#
Артур
Дальше пользователь класса наследовавшего от интерфейса будет  использовать его с известной асигнатурой, определенной в интерфейсе
НУ я также класс могу реализовать с публичным методам, той же сигнаторой и в другом месте также этот класс будут использовать с тем же методом. Ничего по факту не изменитсяъ
источник