Size: a a a

Сrystal Lang — русскоговорящее сообщество

2021 September 10

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Кстати, в том же Crystal/Ruby нет примитивных типов, там как раз иерархия классов.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
А где в ООП про типы - не знаю, хотелось бы ссылку на эту тему, первый раз слышу, что ООП как-то завязано на типизацию
источник

O

Oleg in Сrystal Lang — русскоговорящее сообщество
Изначальная идея ООП была в том, что объекты обмениваются сообщениями
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Ну, вот это правда.
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Это не ООП завязано на типизацию, это программирование завязано на типизацию. Но ко-/контра/инвариантность мы как правило обсуждаем в контексте ООП из-за наличия самого понятия подтипа
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Иерархия классов есть подмножество типов
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Собственно, для меня "тип" - это ограничения, связанные с объективно существующими возможностями  реализации. Например, мне совершенно пофигу на число 65536, но я объявляю свою переменную как UInt16, потому что знаю, что так будет эффективнее. Это не значит, что я реально рассчитываю на значения не больше магической степени двойки.
А вот если мне нужно, чтобы "переменная" имела разумное значение, отражающее приданный мной этой переменной смысл (например, "температура человеческого тела, показываемая термометром") - я использую классы.
Классы - определяют поведение и абстрактный смысл своих инстансов. Типы - по сути способ привести абстракции программной модели к возможностям реального железа.
У меня может в программной модели мотоцикл ездить внутри клетчатой сферы, но процессор и оперативная память не умеют оперировать такими вещами.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Вот у тебя есть, например, опросник какой-то или окошко с чекбоксами. Ты можешь отметить чекбоксы 1, 2 и 5, но не можешь - 1,2, 5и 4. Чтобы отметить 4 - нужно сначала снять галку с 5-го.
Такую логику легко реализует класс как логическая абстракция. Но к типам данных это не имеет никакого отношения.
Мало того, класс может не помнить никаких данных вообще. У него один метод: он отдаёт случайное число. И что? Это уже не класс?
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Я не понимаю логики
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Логика валидации может быть описана внутри класса и быть поведением объекта. Может не быть. Оба случая валидны.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Ну это не совсем логика валидации. Это просто то, что определяет суть объекта. У человека не может быть температура тела 350 по Цельсию, потому что это человек, а не кусок арматуры. Форма опросника не может быть с проставленными галками на противоречащих друг другу пунктах, потому что форма спроектирована так, её суть и заключается в задумке проектировщика.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
А так ты можешь и не валидировать, если источники информации для твоих классов конгруэнтны с программой. Приходит какое-нибудь AVRO, где всё заведомо как надо, а если это не так - то мир рухнет, - ну ты его и принимаешь как есть, зачем проверять.
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Да, все утыкается в то это я считаю форму самостоятельной или у меня есть некто Валидатор, который ответственен за проверку данных. Только как это противоречит чему-либо сказанному?
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Ну вот температура тела 37 градусов по Цельсию - какого она типа?
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
ООП приводит программу в соответствие с абстрактной проблемной моделью, в соотв. с решаемой задачей. Типы всё-таки больше о том, как привести программу в соотв. с целевой вычислительной моделью.
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Число
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Либо число с единицей измерения, в данном случае градусы цельсия
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Ну я бы сказал, что число - это класс-предок "температуры человека"  🙂 Но никак не тип
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Число не тип?
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
оно реализуется через типы, но типом не является
источник