@oop_ru

Страница 105 из 785
da horsie
14.02.2017
08:32:52
Ну вернее ооп это не java

Ivan
14.02.2017
08:34:22
* не только джава

Red
14.02.2017
08:34:33
Java - язык

Google
Evgeniy
14.02.2017
08:35:48
java язык, а я томат

guga
14.02.2017
08:35:54
ага ооп язык, где есть примитивы, статики, лямбды.

Alexander
14.02.2017
08:36:48
вики врет? Java — строго типизированный объектно-ориентированный язык программирования.

Sergey
14.02.2017
08:37:03
мультипарадигменный)

guga
14.02.2017
08:37:47
конечно вики не врёт, что ты

я бы тебе показал вики нашего проекта

вот ему точно не стоит верить

Alexander
14.02.2017
08:39:10


Paul
14.02.2017
08:39:48
Лол, вы сначала с дефиницией ООП определитесь

Red
14.02.2017
08:44:41
Ну а в чем проблема? Обёртки для примитивов есть, те же статики используются для реализаций паттернов ООП, они все равно являются объектами, ну лямбды - ООП с блэкджеком и .. лямбдами

Evgeniy
14.02.2017
08:45:32
в интерфейсах реализацию можно делать))

даже практически трейты))

самое забавное читая философия java там в первых главах рассказывается почему в java не нужно множественное наследование как в c++

Google
Evgeniy
14.02.2017
08:47:25
а потом бац и оказывается надо чтобы в se в паре мест код по красивей был без лишнего дублирования

Red
14.02.2017
08:47:39
припоминаю - в том же абзаце вроде пишется. почему в Java нет указателей

Paul
14.02.2017
08:48:07
даже практически трейты))
И каким образом в дефолтной реализации интерфейса ты получишь доступ к данным?

Evgeniy
14.02.2017
08:48:33
поэтому я написал "практически"

Paul
14.02.2017
08:48:47
Ок, наезд был лишним )

Evgeniy
14.02.2017
08:53:05
а можно поподробнее?
например вот http://softwareengineering.stackexchange.com/questions/233053/why-were-default-and-static-methods-added-to-interfaces-in-java-8-when-we-alread

Red
14.02.2017
08:53:27
ty

Evgeniy
14.02.2017
08:53:32
можно еще погуглить

Red
14.02.2017
08:54:01
я через пару часов почитаю, благодарю

Evgeniy
14.02.2017
08:54:36
там идея в том что было 2 метода сортировки один у листа другой у коллекции которые были очень похожи

но их приходилось копипастить потому что для разных реализаций нельзя было наследоваться от двух мест

вообщем там написано)

Aleh
14.02.2017
09:37:15
Тут новая статейка https://martinfowler.com/bliki/FunctionAsObject.html

Ничего нового, но ближе к ооп

Paul
14.02.2017
09:53:02
Ничего нового, но ближе к ооп
ты так говоришь, как будто ооп это что-то хорошее

Paul
14.02.2017
09:53:45
ООП без типажей не нужно

Aleh
14.02.2017
09:54:10
Так, а типажи это что?

Paul
14.02.2017
09:54:19
Сейчас даже у функционалка смотрится получше, чем потуги оппшников

Google
Paul
14.02.2017
09:54:22
Aleh
14.02.2017
09:55:32
лол
Отлично объяснил, спасибо)

Вижу что-то в расте, похоже на интерфейсы

Или тайпклассы в хаскеле, это оно?

Paul
14.02.2017
09:57:33
Да, тайпклассы в хаскеле или трейты в расте (или имплисит в скале)

Aleh
14.02.2017
09:58:01
Paul
14.02.2017
09:58:35
это просто перевод "тайпкласса"

Трейты не очень слово, ибо путаница с трейтами из рубей

Aleh
14.02.2017
09:59:45
Окей, никогда не думал о переводе тайпклассов

Так я не понял связи ооп и тайпклассов

Paul
14.02.2017
10:01:21
Т.е. связь ооп с интерфейсами ты понимаешь, а с типажами нет?

Aleh
14.02.2017
10:02:52
Ну даже просто интерфейсы в жаве

Aleh
14.02.2017
10:02:52
Сейчас даже у функционалка смотрится получше, чем потуги оппшников
Вот эт ваще какой-то стремный наброс, какие потуги?)

Paul
14.02.2017
10:03:48
Вот эт ваще какой-то стремный наброс, какие потуги?)
Ну, например, у функциональщиков нет той проблемы с итераторами, их решение через трансдьюсеры вполне выруливает

С интерфейсами тоже слабенькая
Лол. Дай угадаю, крестовик?

Aleh
14.02.2017
10:04:07
Ну, например, у функциональщиков нет той проблемы с итераторами, их решение через трансдьюсеры вполне выруливает
Итераторы которые мутабельные? Они говно, надо юзать имутабельные и итераторы делают тоже самое что трансдьюсеры

Paul
14.02.2017
10:05:11
Ладно, разговор ни о чём, "ООП" сегодня это пердёшь в воздух, так что сравнивать нужно конкретные проявления (протимную модель, модель кея, классовую модель).

Google
Paul
14.02.2017
10:06:38
Paul Loyd, [10.02.17 23:10] Чуваки, простейшая для типажей абсолютно задача: спроектировать итератор Map<I, F> такой, чтобы он был Copyable только тогда, когда итератор I: Copyable. Аналогично с остальными производными итераторами (Filter, Flat и прочее) Paul Loyd, [10.02.17 23:11] Кроме Copyable могут быть и другие (аля ExactSize, если можно узнать кол-во оставшихся).

Хреново процетировалось, ну да ладно

Admin
ERROR: S client not available

Paul
14.02.2017
10:07:16
Что элементы можно копировать

Aleh
14.02.2017
10:07:34
Так это свойство элементов?

Paul
14.02.2017
10:07:45
+ нужно чтобы можно было пробрасывать свои атрибуты. Скажем, чтобы uniq() работал как обычный dedup нужно гарантировать свойство упорядоченности

Aleh
14.02.2017
10:10:35
Да
Так как это влияет на список?

Paul
14.02.2017
10:10:44
+ нужно чтобы можно было пробрасывать свои атрибуты. Скажем, чтобы uniq() работал как обычный dedup нужно гарантировать свойство упорядоченности
Скажем, на типажах можно просто объявить типаж Sorted и сделать что-то вроде: impl<I: Iterator + Sorted> Sorted for Filter<I> {} impl<I: Iterator + Sorted> Sorted for Take<I> {} impl<I: Iterator + Sorted> Sorted for Skip<I> {} ... А потом: impl<I: Iterator + Sorted> Uniq { // реализация dedup } impl<I: Iterator + !Sorted> Uniq { // реализация с буфером }

Так как это влияет на список?
Не понял, что влияет?

Aleh
14.02.2017
10:11:46
Элемент Copyable, это его свойство, почему оно как-то должно отражаться на контейнере?

Paul
14.02.2017
10:12:32
Скажем, у тебя есть итератор по ссылкам на какой-то тип. Можно ли получить итератор по значениям зависит лишь от того, копируемый ли элемент или нет.

Aleh
14.02.2017
10:12:41
Если ты хочешь мапу только из Copyable, то так и должен ее описать, Map <I: Copyable>

Paul
14.02.2017
10:14:00
Aleh
14.02.2017
10:15:24
class SpecificList <I: Copyable> implements Map <I>

Paul
14.02.2017
10:16:02
Какая разницу списку, клонируемые его элементы или нет?

Google
Aleh
14.02.2017
10:16:34
Так если разницы нет, то используй просто Map <I>

Oo

Paul
14.02.2017
10:16:42
Ты, видимо, не понял задачу

Aleh
14.02.2017
10:16:55
Я может очень сонный, но совсем не улавливаю)

Paul
14.02.2017
10:18:06
Ещё раз: есть итератор Iterator<T>, не важно откуда он получен. Очевидно, что на итераторе есть всякие filter(), map() и т.д., которые порождают другие итераторы, скажем map() порождает итератор Map<Iterator<T>, fn>

Задача: у этого итератора должен быть метод clone() только тогда, когда он есть у типа T

Red
14.02.2017
10:19:38
/stat@combot

Combot
14.02.2017
10:19:38
combot.org/chat/-1001071233926

Aleh
14.02.2017
10:19:56
А что сделает clone у итератора?

Paul
14.02.2017
10:20:25
Будет вызывать у всех элементов clone, чтобы получить из Iterator<&T> Iterator<T>

Если не нравится свойство клонируемости можешь другое взять, скажем частичной/полной сравнимости или эквивалентности

Aleh
14.02.2017
10:21:19
Ага, ну тебе нужен CloneableIterator <T: Cloneable> implements Iterator <T>

В котором описан clone

Paul
14.02.2017
10:21:30
Отлично, о чём я и говорю

Это одно свойство

Теперь добавим ещё сравнимости и эквивалентности

И получаем CloneableEqOrdIterator

И дублируем так на все Map, Filter, Skip и т.д. итераторы

Страница 105 из 785