|
|
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey TominЭто два костыля, в связи с отсутствием функций, как самостоятельных объектов. Т.е. грубо- ошибка проектирования языка. Да-да. Афтару сразу лучше изучать Scala. Правда? Нет. Просто эти примеры- не примеры нужности интерфейсов в ООП, а примеры костылей в java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:04 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Примеров мы походу не дождемся? Мне запостить полностью пример проекта с использованием интерфейса? Т.е. выложить тексты java-модулей что я навоял? Я Вас правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:15 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMAULERПроблем нет. Т.е. я понимаю код с использованием интерфейсов, но выгода от их применения, для меня, на данный момент, пока сомнительная. Примеров мы походу не дождемся? у явы везде интерфейсы, кодить начнешь, сам столкнешься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:18 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULER, кокой непонятливый). - если сказал, что преимуществ у интерфесов нет, то нужен проект с кодом А и Б, где это видно. Звёзды с интерфейсами... и без. Это логично. А если нет логики, нефиг программировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:29 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
bochkovBlazkowiczПримеров мы походу не дождемся? у явы везде интерфейсы, кодить начнешь, сам столкнешься Спасибо, а то я только начинаю кодить, ещё не разобрался где и как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:30 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123, автор- если сказал, что преимуществ у интерфесов нет Неправда :) Я такого не говорил :) Я сказал, что на данный момент, преимущества использования интерфейсов для меня пока сомнительны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:37 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULER, OFF )) в части что нет логики правда) - код то всё одно нужен))) Сомневаюсь я, жениться или не жениться? А если жениться, то куда девать нынешнюю жену? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:44 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Blazkowiczbochkovпропущено... у явы везде интерфейсы, кодить начнешь, сам столкнешься Спасибо, а то я только начинаю кодить, ещё не разобрался где и как. верный признак того, что наступило время применить интерфейс или абстрактный класс, когда начинаешь код копипастить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:45 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
bochkovверный признак того, что наступило время применить интерфейс или абстрактный класс, когда начинаешь код копипастить Хорошо. Буду знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 11:49 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULERПонять причины, почему же в конкретном случае применяется интерфейс а не то или это... Единственной причиной, для которой в Java нужны интерфейсы это, если я чего не забыл, необходимость сделать так, чтобы пару классов A и C можно было использовать как нечто одно и то же и пару классов B и C можно было использовать как одно и то же. При том, что пару A и B использовать как одно и то же не получится. (Лямды оставим за скобками). Другими словами интерфейс это декларация некой части сущности, которая может быть общей у разных классов в обход линий наследования. На сколько это удобно отдельный вопрос. Можно ли обойтись без них - да, как впрочем и без ООП в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 12:05 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULERbooby, - желание иметь физически единственный экземпляр некоторого утилитарного алгоритма для разнотипных классов ... реализующих данный интерфейс? Нет . Реализующих - сколько угодно. Использующих - один единственный, только в одном экземпляре на всю систему. Вот есть разнотипные коллекции - коллекции зайчиков, коллекции мишек, коллекции винтажных ночных горшков. Их много - коллекций разных типов. Сами по себе не сравнимы - горшки - это не мишки и не зайчики. Горшки - это горшки. И код для них можно писать специфически разный. Один будет понимать, что коллекцию зайчиков можно сортировать по длине их ушей, другой код будет понимать, что горшки можно сортировать по месту происхождения глины, из которой они сделаны. Потребуется посортировать новопридуманную коллекцию по не известному заранее признаку - напишем специфический код тогда, когда проЯснеет - чо там за коллекция и какова специфика ее ее элементов. Вариантов кода для сортировки будет столько, сколько типов коллекций есть в системе. Это "нормальный" вариант развития событий. Представим теперь чудака, захотевшего иметь один, единственный вариант кода, умеющий сортировать коллекций, составленные из экземпляров произвольных, наперед неизвестных (и даже еще не написанных) классов. Такой чудак предъявит требование к писателям классов горшков. Пусть все вами написанные классы - будь то мишки, будь то зайки - реализуют интерфейс "БытьСравнимым" Тогда, сколько бы стотышьпятьсот классов вы не написали, я сумею сравнить элементы коллекции единственным, универсальным экземпляром утилитарного кода, а умея сравнивать, сумею и и отсортировать произвольную коллекцию единственным, уникальным, общим для всех вариантом кода. MAULER что замена реализующего интерфейс компонента не требует перекомпиляции использующих его компонент. А если бы компонент не реализовывал интерфейс, вернее совсем с интерфейсом не работал. Это лядство какое-то, а не терминология. "Реализовывать" - предоставлять другому для использования. "Работать" - собственно использовать переменные типа известного интерфейса. Реализующий интерфейс код и одновременно работающий с ним код - это электро-вилка и розетка. Вот быть вилкой, вернее розеткой (вилко-розеткой) - несколько шизофренично, глубоко нетрадиционно. Вряд ли найдутся ремесленники, понимающие толк в таком креативе. НО. Вилка предоставляет интерфейс вилки. И может использовать интерфейс розетки. Розетка предоставляет интерфейс розетки и может использовать интерфейс вилки. MAULER А методы взаимодействия с конечным пользователем "торчали наружу" через public. В этом случае - потребовалась бы перекомпиляция? Интерфейс в любом случае public. По крайней мере по отношению к использующему коду. Вот есть процедура сортировки специфически ночных горшков. Если писатель класса горшков меняет и реализацию и спецификацию метода сравнения сравнения, добавляя к параметру МестоПроисхожденияГлины параметр ЗаводПроизводитель или НомерСмены, то нет шансов после такого изменения не перекомпилировать и код сортировки вместе с изменениями в классе горшков. Использование интерфейсов предполагает, что их спецификация стабильна, заявлена навечно и представляет собой элемент такой архитектуры, который, с одной стороны нельзя проигнорировать, а с другой стороны, не требует изменений в использующей стороне (включая пререкомпиляцию в нормальных средах - ну, может быть к java относится - тут я малек не в курсах...). Не нужно менять вилку после замены проводки в стене (кода, подводящего электричество к месту использования), если розетка осталась неизменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 12:15 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
booby, Вы РЕАЛЬНО доходчиво объясняете! Спасибо :) За терминологию сильно не пинайте :) Я пока новичок в этих делах :) Но я наберусь наглости и спрошу, точнее попробую описать Ваш пример несколько по другому: Вот есть коллекции: зайчиков, мишек, винтажных горшков и код для каждой коллекции (как Вы заметили) специфически разный. Ещё есть вероятность, что появится новомодная коллекция дамских сумочек и код сортировки для неё пока неизвестен. И вот наш "чудак", предъявил требование к писателям горшков, мишек, зайчиков и сумочек в виде 4-х "бумажек" на которых карандашом написано название методов, которыми он будет пользоваться в своей работе. Писатели соответствующих классов, получили соответствующую "бумажку", и в своих классах написали public-методы для нашего чудака. Не привлекая тему интерфейсов. Со стороны чудака что то поменяется? Ведь он как вызывал методы "по бумажке" так и продолжает вызывать их. Такое В ПРИНЦИПЕ возможно? Но, наверное (наверное!) писатели горшков могут смухлевать, и не написать метод "на бумажке". Или написать, но оставить его пустым. Тогда наш чудак поимеет проблем, т.к. для экземпляра горшков такого метода существовать не будет. А если бы использовались интерфейсы, то он максимум получил бы "пустышку" не вываливаясь из программы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 12:59 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULERПисатели соответствующих классов, получили соответствующую "бумажку", и в своих классах написали public-методы делают ещё хитрее финт ушами - callback соединение и подписку. А реализацию кода сортировки вообще делай сам у себя. Тут тебе и интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 13:06 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULER, само слово Коллекция просто по ООП не делается. По определению. Даже без зайчиков и Мишек). Ну, и коллекции тоже не все сразу используют)) в стадии программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 13:08 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULERПисатели соответствующих классов, получили соответствующую "бумажку", и в своих классах написали public-методы для нашего чудака. Не привлекая тему интерфейсов. Со стороны чудака что то поменяется? Ведь он как вызывал методы "по бумажке" так и продолжает вызывать их. Такое В ПРИНЦИПЕ возможно? Это называется утиная типизация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 14:09 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 15:11 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Atum1в этом видео из двух частей ты не понял. Аффтар топика (не я), просил рассказать Доступно и Просто. Без всяких ссылок на статьи\видео\курсы\толмуты. Тут форум программистов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 15:47 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MAULER, авторТакое В ПРИНЦИПЕ возможно? Да. Так делают (пусть это будет утиная типизация в рамках данного разговора). А в некоторых средах (языках программирования) именно что-то такое либо рекомендуемый, либо вообще единственный способ реализовать идею интерфейса. Я думаю, что во внимание следует принимать как минимум следующие два обстоятельства: а) в какой момент желательно получение ошибки - в момент компиляции кода, или в момент времени выполнения кода. Закладка на явно объявленные интерфейсы определенно позволят провести кодирование так, чтобы ошибки вроде отсутствия подходящей реализации выявлялись на этапе компиляции. Наивная реализация этой идеи в java однозначно ведет к ошибке времени выполнения. Не наивная может иметь смысл, но не будет бесплатной ни в смысле порождения (нескольких) дополнительных оберток для поддержки не наивности, ни в смысле накладных расходов на вызовы сквозь полученные конструкции. б) Так или иначе - но раз это другой способ реализации той же идеи - один использующий утилитарный код для классов разного происхождения, то в общем это тоже сорт интерфейса, или способ реализации идеи интерфейса. Идея интерфейса важнее синтаксического конструкта, названного тем же именем. Идея интерфейса в архитектурном плане, с моей точки зрения, вообще один из самых краеугольных камней программирования. Не владея ею свободно, вы вообще не понимаете, что вы делаете как программист. Если продолжать строительно-архитектурные сравнения, то получится как-то так: 2 подхода к архитектуре. 1) Пусть дана планировка дома. Размеры помещений и их техническое оборудование заранее известны. Это подход со статически заявленными интерфейсами. Кухня может быть только в этом помещении, потому что в него подведена вода и сделана вытяжка. А спальню разумно организовать именно в этом, потому что оно самое тихое и дорога именно из этой комнаты в туалет не загорожена несущим столбом, вокруг которого с делан коридор. Использование статических интерфейсов производится архитекторами и инженерами, заранее планирующими и продумывающими строительство дома заданных характеристик. 2) вот двор только построенного жилого квартала. Как проложить асфальтовые дорожки - справа налево или сверху вниз? Ответ утиной типизации - а никак не проложить. Подождать, пока люди тропинки натопчут, посмотреть - что получилось. А там, может быть и асфальт накатать, если руки дойдут и деньги найдутся. Т. е. - в ситуации непредсказуемого взаимодействия или когда электропроводка специально сделана внешней, чтобы при случае ее можно использовать кроме доставки электричества в телевизор еще и для сушки стиранного белья, так, что можно крючьями зацепиться за нее и пробросить металлические рейки через все комнату для увеличения площади сушки - утиная типизация наше все. То есть, когда дом уже есть, а для чего он строился - еще не выяснилось. Так или иначе - сами интерфейсы - это способ разделения мира на набор не пересекающихся областей, способных функционировать автономно с указанием способа взаимодействия между областями. В некотором смысле, интерфейсы - это вообще единственный результат программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 17:00 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
boobyИдея интерфейса в архитектурном плане, с моей точки зрения, вообще один из самых краеугольных камней программирования. Не владея ею свободно, вы вообще не понимаете, что вы делаете как программист. эк вас торкнуло)). Это перебор. Свободно владеть, это значит знать где надо и не надо). Двайте вы перечислите недостатки interface. А то вы разочаруете...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 17:14 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
boobyТак или иначе - сами интерфейсы - это способ разделения мира на набор не пересекающихся областей, способных функционировать автономно с указанием способа взаимодействия между областями. В некотором смысле, интерфейсы - это вообще единственный результат программирования. антипаттерн - лосутное одеяло (если переборщить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 17:16 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
boobyВ некотором смысле, интерфейсы - это вообще единственный результат программирования. Но это уже совсем другие интерфейсы и к ООП они отношения не имеют. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 17:54 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, авторНо это уже совсем другие интерфейсы и к ООП они отношения не имеют. :) это завсегда пожалуйста. само ООП к программированию имеет весьма специфическое отношение. ясно одно - интерфейсы и не виновны в том и сильно им до лампады, что по их поводу представляет себе ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 18:42 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123... эк вас торкнуло)). Это перебор. Свободно владеть, это значит знать где надо и не надо). У средневековых ремесленных цехов были правила посвящения кандидата в звание мастера. Кандидат должен был публично представить в специально отведенном месте и в специальное время на суд мастеровой ремесленной общественности, нечто, по отношению к чему общественность должна была вынести вердикт - является ли представленное шедевром . Решение о признании кандидата мастером с выдачей соответствующих бумаг и свидетельств осуществлялось на основании признания явленного шедевром . В связи с вышеизложенным докладываю, что не представляется интересным - как Вы сами себя называете ( даже если Вы называете себя программистом). Интересным представляется вот что - на каком основании Вы ожидаете, что другой программист признает Вас за такового, если Вы даже не претендуете не только на представление шедевра, но и даже на понимание того, где надо применять ту или иную специфическую технику, а где не надо? Petro123Двайте вы перечислите недостатки interface. А то вы разочаруете...) Это вопрос не столько о том, зачем пишутся программы, сколько для кого. В качестве целевых кандидатов можно рассмотреть а) предполагаемых конечных пользователей, б) компьютер на котором она должна выполняться и в) других программистов, которым придется поддерживать и развивать явленный "шедевр". а) Конечным пользователям до интерфейсов - примерно как интерфейсам до ООП - т.е. - до лампады. Если электричество подводится к лампочке без использования интерфейса выключателя - то это совершенно замечательно, до тех пор, пока электричество бесплатно. Как только возникает вопрос цены электричества - ответ прост - хоть и нельзя догадаться об отсутствии интерфейса выключателя, но доступно понять, что программа негодна, т.к. стала слишком дорога, и теперь правильно пользоваться спичками и свечками, а не вашими программами, жгущими в лампочках дорогое электричество. б) Для компьютеров интерфейсы зло безотносительно к java. Даже если правда, что в java использование интерфейсов стоит непропорционально и неприлично дороже, чем в "других языках" - это не шибко принципиально с точки зрения компьютера. Для компьютера концепция интерфейса в любом случае означает сознательное замедление работы программы, что обессмысливает саму идею с этой точки зрения со старта. в) Поэтому единственным получателем возможного профита от интерфейсов является другой программист , которому будет поручено сопровождать и развивать систему, построенному на концепции использования интерфейсов. Здесь мы возвращаемся к первой фазе марлезонского балета: Попытка рассуждать о достоинствах и недостатках интерфейсов находится за рамками добра и зла, если программист, с которым проводится такое обсуждение даже не догадывается - где их следует применять, а где нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 23:19 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
booby, нуууу. Тему можно закрывать). Ничего интересного не будет. Как говорит Жванецкий "вы пересаливаете...". Ода про хвалебные интерфейсы была, а вот столько букв ни о чём в последнем посте...... Ни или типа ...не буду тут бисером метать... А театр одного актёра неинтересен. Будем ждать кода. Занавес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 00:32 |
|
||
|
Изучаю Java. Объясните пожалуйста просто и доходчиво про интерфейсы.
|
|||
|---|---|---|---|
|
#18+
booby, попытка посчитать "профит" от выбора интерфейс\абстрактный класс\наследование\композиция никак не получится. Особенно в литературном стиле. Хотя занимательно, на первые 5 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 00:48 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39029105&tid=2125025]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 529ms |

| 0 / 0 |
