|
Чем полиморфизм отличается от наследования? Ø (Волшебник 30.05.2016 12:44) | ☑ | ||
---|---|---|---|---|
0
los_hooliganos
23.05.16
✎
07:10
|
Что-то не могу въехать. По мере изучения ООП, для меня это де факто одно и тоже. Хотя в учениях об ООП это делят на 2 разные вещи.
И вообще можно пример где есть наследование, но нет полиморфизма |
|||
1
ДенисЧ
23.05.16
✎
07:12
|
Наследование - это у объекта есть методы родителя
Полиморфизм - это когда одну функцию можешь вызывать с разными параметрами. Это коротко и для чайников |
|||
2
vvp91
23.05.16
✎
07:22
|
Полиморфизм - способность метода обрабатывать параметры разных типов.
Наследование - способность объекта выдавать себя за родителя. В 1С протокольно все процедуры и функции полиморфны, т.е. нет платформенного ограничения на тип передаваемых значений. Например, есть в БСП функция ОбщегоНазначения.ЗначенияРеквизитовОбъекта, принимающая параметр Ссылка - этот параметр может быть любого ссылочного типа. Еще пример, можно написать метод, принимающий параметр Объект, а внутри читающий от этого объекта два поля через точку (Дата, Номер). Тогда в этот метод можно передать: - ссылку на любой документ - или данные формы документа (основной реквизит Объект) - или структуру с двумя этими полями - или выборку из запроса с двумя этими полями - или строку таблицы значений с двумя этими полями - и т.д. Это и есть полиморфизм. Наследования в 1С нет. Хотя с появлением расширений конфигурации появляется "псевдонаследование", когда переопределяется поведение методов форм и модулей. |
|||
3
b_ru
23.05.16
✎
07:34
|
(3) Наследование в 1С таки есть, но только то, что прошито в платформу, свои классы на основании родительских нельзя определять.
Например, класс "Документ.РеализацияТоваровУслуг" наследуется от класса "Документ" и т.п. |
|||
4
GenAcid
23.05.16
✎
07:41
|
Насколько я помню полиморфизм это способность переопределять методы и свойства предка. Возможно не прав, давно по ООП теорию не читал.
|
|||
5
Рэйв
23.05.16
✎
07:46
|
(0)>>для меня это де факто одно и тоже.
хренасе одно и тоже. Имхо, тупой вброс. |
|||
6
spock
23.05.16
✎
07:48
|
(0) для какого языка программирования нужно?
|
|||
7
los_hooliganos
23.05.16
✎
07:49
|
(5) Скажем так, полиморфизм и наследование очень тесно связаны. Если считать это 2мя разными штуками.
Инкапсуляция где-то в сторонке от них. Кстати обращение к свойству или методу через 2 точки как в (2) и есть нарушение правила инкапсуляции. |
|||
8
los_hooliganos
23.05.16
✎
07:49
|
(6) Речь о JAVA
|
|||
9
spock
23.05.16
✎
07:52
|
||||
10
los_hooliganos
23.05.16
✎
07:53
|
Насчет вброса, я тут на выходных изучал рефлексию класса/объекта и у меня мозг окончательно взорвался.
|
|||
11
Рэйв
23.05.16
✎
07:53
|
(7)да нифига они не связаны.
для Полиморфизма нужно описывать каждый вариант вызова.А наследование указывается при создании класса. Учи мат часть ужеке |
|||
12
DDwe
23.05.16
✎
07:57
|
(11) Тролит он и толсто очень. Он же не тупой.
|
|||
13
Рэйв
23.05.16
✎
07:58
|
(12)Да я так и понял с самого начала:-)
|
|||
14
spock
23.05.16
✎
08:02
|
Все что ли? Продолжения кина не будет?
|
|||
15
Рэйв
23.05.16
✎
08:04
|
(14)неинтересный троль попался:-)
|
|||
16
spock
23.05.16
✎
08:06
|
(15) Так-то ты не прав, если судить по (11)
|
|||
17
los_hooliganos
23.05.16
✎
08:06
|
(14) Автора на хабре раскритиковали, что полиморфизм нужон для интерфейсов, а не для наследников базового класса. Хотя в последнем случае он тоже работает.
|
|||
18
Рэйв
23.05.16
✎
08:10
|
(16)Ну обоснуй:-)
|
|||
19
spock
23.05.16
✎
08:13
|
(18) В компилируемых ЯП полиморфизм реализуется через наследование. Что еще обосновывать? Можно, конечно, изобрести велосипед, применив рефлексию или методы определения типов, но это колхоз.
|
|||
20
Рэйв
23.05.16
✎
08:14
|
(19)Полиморфизм вообще сд\лабо привязан к наследованию.
Я могу создать 50 вариантов описания вызова функции Foo(), но это ни на шаг не приблизит ее к классу и наследованию. |
|||
21
spock
23.05.16
✎
08:16
|
(20) 50 определений функции - полиморфизм?
|
|||
22
Рэйв
23.05.16
✎
08:17
|
(21)Естественно.
|
|||
23
spock
23.05.16
✎
08:17
|
+21 я не понял логики в приведенном примере про 50 определений.
|
|||
24
spock
23.05.16
✎
08:17
|
(22) А, ну садись два :)
|
|||
25
Рэйв
23.05.16
✎
08:18
|
(21)Вызов одноименной функции с разными типами и количества параметров.
А что такое полиморфизм в твоем понимании? |
|||
26
butterbean
23.05.16
✎
08:19
|
ничто не предвещало срача... хотя нет, предвещало
|
|||
27
Рэйв
23.05.16
✎
08:19
|
(24)ну ну:-)
|
|||
28
woww
23.05.16
✎
08:19
|
Полиморфизм это когда процедура может принимать значения разных типов. А наследование это когда один класс/объект может наследовать параметры от другого. Инкапсуляция это хранение данных вместо с кодом.
|
|||
29
spock
23.05.16
✎
08:19
|
(25) 50 определений функции - это не полиморфизм, а переопределение. Читать, например, тут: http://www.tutorialspoint.com/cplusplus/cpp_overloading.htm
|
|||
30
Encode
23.05.16
✎
08:19
|
(0) Полиморфизм это когда ты разные объекты объединяешь и обрабатываешь по одинаковым свойствам. Например у класса House и Car реализуем интерфейс Priceble (имеющие стоимость), и потом в коде ты можешь создать New ArrayList<Priceble>, запихнуть туда дом, машину, и вызывать у них методы своего интерфейса
|
|||
31
Encode
23.05.16
✎
08:20
|
(25) Это перезагрузка методов.
|
|||
32
Рэйв
23.05.16
✎
08:20
|
не..я больше тролей кормить не буду:-)
|
|||
33
spock
23.05.16
✎
08:22
|
(32) Правильно! Не нужно. Нужно просто почитать матчасть, например, там же рядом: http://www.tutorialspoint.com/cplusplus/cpp_polymorphism.htm
|
|||
34
Encode
23.05.16
✎
08:23
|
(30) Соответственно полиморфизм вытекает из наследования. Самый простой пример в java это класс Object - родитель всех классов. Ты можешь вообще любые объекты объединить в массив Object-ов и вызывать методы Object у всех них. Это и будет полиморфизм.
|
|||
35
los_hooliganos
23.05.16
✎
08:25
|
(25) Получается разные конструкторы одного и того же объекта и есть полиморфизм в 1с?
|
|||
36
woww
23.05.16
✎
08:29
|
(35) В 1с динамическая типизация. Значит по умолчанию все процедуры и функции полиморфны, т.к. могут принимать значения разных типов.
|
|||
37
los_hooliganos
23.05.16
✎
08:34
|
(19) В чем колхозность рефлексии?
Я так понимаю рефлексия нужна для разработки инструментов. Например написание калькулятора, который будет считать только по тем командам, которые я ему передам текстовым файлом. |
|||
38
spock
23.05.16
✎
08:35
|
(35) Полиморфизм - это когда компилятор сам определяет, метод какого класса дернуть. Не какую из переопределенных функций, а именно метод какого класса.
|
|||
39
spock
23.05.16
✎
08:37
|
(37) Колхозность не рефлексии, а реализации полиморфизма через рефлексию.
|
|||
40
spock
23.05.16
✎
08:38
|
Коллеги, вы в институте пары по программированию прогуливали чтоли? :)
|
|||
41
los_hooliganos
23.05.16
✎
08:39
|
(40) Я вообще не ходил на программирование в институте, потому что его не было.
|
|||
42
spock
23.05.16
✎
08:40
|
(41) Все еще не понятно, что такое полиморфизм?
|
|||
43
woww
23.05.16
✎
08:41
|
(35) Какое нафиг ООП в 1с ? Ты не можешь создавать свои классы. Значит нету и ООП.
|
|||
44
Рэйв
23.05.16
✎
08:42
|
(42)да прочитай уже и успокойся:-)
https://ru.wikipedia.org/wiki/Полиморфизм_(информатика) |
|||
45
Рэйв
23.05.16
✎
08:44
|
(42)"полиморфизмом называется способность функции обрабатывать данные разных типов"
Предельно доступно для понимания помоему:-) |
|||
46
los_hooliganos
23.05.16
✎
08:45
|
(42) Примерно понятно. Непонятно почему он так сильно выделен от наследования. :)
|
|||
47
spock
23.05.16
✎
08:47
|
(44) Ты прочитал начало wiki-статьи и решил нас научить?
Читай дальше: "В сообществе объектно-ориентированного программирования под термином «полиморфизм» обычно подразумевают наследование, а использование параметрического полиморфизма называют обобщённым программированием[8], или иногда «статическим полиморфизмом»." |
|||
48
Рэйв
23.05.16
✎
08:47
|
(47)просто мы спорим о частностях одного целого:-)
|
|||
49
kauksi
23.05.16
✎
08:49
|
А про инкапсуляцию забыли?
|
|||
50
los_hooliganos
23.05.16
✎
08:49
|
(49) Инкапсуляция это вьюшки и представления в SQL
|
|||
51
spock
23.05.16
✎
08:50
|
(46) Наследование - это расширение, переопределение функциональности. А полиморфизм - это способ реализации интерфейсного метода, через наследование.
|
|||
52
Тролль главный
23.05.16
✎
08:51
|
(1) и неверно
|
|||
53
spock
23.05.16
✎
08:51
|
(48) Я даже не пытался спорить. А так, да, можно сказать, что полиморфизм - это частность ООП'шного ЯП.
|
|||
54
Тролль главный
23.05.16
✎
08:52
|
Тупым 1Сникам это не нужно
|
|||
55
ДенисЧ
23.05.16
✎
08:55
|
(52) Обоснуй
|
|||
56
spock
23.05.16
✎
09:03
|
(46) Классическое объяснение:
Работают два программиста над проектом (java/c++). Один программирует взаимодействие пользователя с программой (нажатие кнопки "Рисовать фигуру"), другой - реализует конкретную реализацию рисования фигур "Круг" или "Квадрат". Интерфейщик пишет такой код: Процедура ПриРисовании(Фигуры* Фигура, handle НаЧемРисовать) Фигура->Рисовать(НаЧемРисовать); КонецПроцедуры // ПриРисовании() И он не знает, какая фигура будет рисоваться, да и не хочет знать. Второму программисту-функциональщик приходится рисовать три класса: 1. Абстрактный Класс "Фигуры" с методом Рисовать(handle) 2. Прикладной класс "Круг" с методом Рисовать(handle) 2. Прикладной класс "Квадрат" с методом Рисовать(handle) И в обоих классах "Круг" и "Квадрат" реализуется логика рисования конкретной фигуры. и в момент вызова Фигура->Рисовать(НаЧемРисовать) компилятор сам определяет какой из классов использовать, чтобы вызвать конкретную реализацию метода. Т.е. в точке вызова нет контекста, есть только тип. Сессно, что перед использованием ПриРисовании() нужно где-то написать так: Фигуры* Фигура = new Круг() или Фигуры* Фигура = new Квадрат() |
|||
57
Лефмихалыч
23.05.16
✎
09:04
|
(55) он хочет достебаться до "с разными параметрами", ведь они, строго говоря, не совсем разные
|
|||
58
spock
23.05.16
✎
09:04
|
(46) После (56) стало понятнее? :)
|
|||
59
woww
23.05.16
✎
09:05
|
(38) А если рантайм определяет какой метод какого класса дергнуть. Это уже не полиморфизм?
|
|||
60
spock
23.05.16
✎
09:08
|
(59) в (38) акцент был не на компиляторе, а на выборе класса, чтобы вызвать одноименной метод.
|
|||
61
Тролль главный
23.05.16
✎
09:11
|
(57) наследование - способ построения новых типов через имеющиеся (базовые типы) с возможностью собственной специализации (новые методы, поля, свойства)
полиморфизм - изменение поведения функций (методов) подтипа по сравнению с базовым поведением |
|||
62
woww
23.05.16
✎
09:12
|
(60) А я сразу подумал что там где вызов функции определяется динамически, а не при компиляции. Полиморфизм перестал быть полиморфизмом.
|
|||
63
los_hooliganos
23.05.16
✎
09:12
|
(58) Это все понятно.
|
|||
64
rs_trade
23.05.16
✎
09:12
|
Простой пример полиморфизма обычный + хотя бы в 1С. В одном случае складывает числа, в другом например строки. Интерфейс один, но результат разный и зависит от типа входных данных.
|
|||
65
sash-ml
23.05.16
✎
09:13
|
Полиморфизм методов(с разным количеством параметров) <> полиморфизму объектов с методами с одинаковой сигнатурой в одной иерархии наследования.
(38) - не копмилятор. (59) + рантайм на этапе выполнения, так как неизвестно какой объект будет создан. |
|||
66
woww
23.05.16
✎
09:16
|
(56) А если у меня динамический язычек, в котором нету интерфейсов (т.к. не нужны) например JavaScript, то у меня уже нету полиморфизма?
|
|||
67
Тролль главный
23.05.16
✎
09:17
|
(64) да, потому что в 1С нет типизации
а вообще это совпадение сигнатур - не более то есть вот это: class A { public: void Test(); } class B { public: void Test(); } не полиморфизм, а просто совпадение имен |
|||
68
ViSo76
23.05.16
✎
09:17
|
(1) ДенисЧ вызов функции с разными параметрами называется перегрузка функции. Это так для чайников.
(2) Есть тип переменной типа Variant это не полиморфизм. (3) Полный бред. Есть прототип объекта документ, то что он работает с разным количеством полей это не означает наследование. |
|||
69
los_hooliganos
23.05.16
✎
09:18
|
(64) вот полиморфизм toString() в 1С:
ОбработкаПолученияПредставления(<Данные>, <Представление>, <СтандартнаяОбработка>) |
|||
70
spock
23.05.16
✎
09:18
|
(65) "(38) - не копмилятор." - и да, и нет. Конечно же компилятор не знает, какой из классов в данном конкретном случае использовать на этапе компиляции. Компилятор в таких местах вставляет обвязку из таблиц виртуальных методов.
|
|||
71
spock
23.05.16
✎
09:21
|
(66) Мне кажется, я в (60) это пояснил. Дело не в компиляторе, дело в виртуальных таблицах.
|
|||
72
woww
23.05.16
✎
09:22
|
(69) Если хочешь "понять" проблемы полиморфизма. Возьми язычек со статической типизацией типа C#, Java. В динамике проблемы полиморфизма нету.
|
|||
73
ViSo76
23.05.16
✎
09:22
|
(71) Ты не правильно несколько пояснил в (56)
|
|||
74
ViSo76
23.05.16
✎
09:24
|
(69) Где ты увидел тут полиморфизм?
|
|||
75
spock
23.05.16
✎
09:24
|
(73) ? Поправь меня, делов-то.
|
|||
76
Тролль главный
23.05.16
✎
09:25
|
вот тут и наследование и полиморфизм в каком-то смысле:
https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/ |
|||
77
woww
23.05.16
✎
09:27
|
(69) В 1с динамика там все функции изначально полиморфны. Так как проверки типов нету. И по этому интерфесы не нужны. Интерфейсы нужны язычкам в которых типы проверяются на этапе компиляции, а не в рантайме.
|
|||
78
ViSo76
23.05.16
✎
09:27
|
(75) В общем представьте массив разных объектов ( circle, point, square ) порождённых от shape. В прототипе shape есть обязательно перегружаемая процедура show. Так вот идём по массиву и приводим получаемый элемент к базовому объекту и вызываем у них перегруженную функцию show. Это и будет полиморфизмом. То что переменные разных типов, так сам 1С не типизирован, и все переменные там Variant
|
|||
79
spock
23.05.16
✎
09:28
|
+75 Я понял в чем неточность. Конечно же прикладные классы "Круг" и "Квадрат" являются наследниками абстрактного класса "Фигуры".
|
|||
80
spock
23.05.16
✎
09:30
|
(78) Это будет делегатом.
|
|||
81
Рэйв
23.05.16
✎
09:32
|
(80)Делегат - это указатель на функцию.Вряд ли будет делегатом:-)
|
|||
82
ViSo76
23.05.16
✎
09:32
|
(80) Делегат это объект который содержит в себе вызов или батарею вызовов, а полиморфизм это изменение типа класса, тапа как хамелеон. И всё это связано лишь с тем что полиморфизм нужен лишь для типизированных языков.
|
|||
83
Лефмихалыч
23.05.16
✎
09:36
|
(61) >полиморфизм - изменение поведения функций (методов) подтипа по сравнению с базовым поведением
чааво?.. |
|||
84
spock
23.05.16
✎
09:36
|
(81) Делегат - это указатель на класс, реализующий в себе массив указателей на функции(ю).
|
|||
85
Рэйв
23.05.16
✎
09:37
|
(84)Все равно вряд ли будет:-)
|
|||
86
spock
23.05.16
✎
09:38
|
(85) Читаем буквально "...массив разных объектов ( circle, point, square ) порождённых от shape..." + "идём по массиву... и вызываем ...show...".
|
|||
87
Тролль главный
23.05.16
✎
09:38
|
(83) таво
в базовом метод выдавал "Му-му", переопределяешь и получаешь "Тра-та-та" |
|||
88
Лефмихалыч
23.05.16
✎
09:39
|
+(83) какое в пень "изменять поведение"?
вот, на мой взгляд, отличное определение: https://habrahabr.ru/post/37576/ "Если говорить кратко, полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового" (87) ты бредишь |
|||
89
woww
23.05.16
✎
09:39
|
(82) Ну не только для языков со статической типизацией. С хорошим полиморфизмом гораздо удобнее работать и в динамике. Ведь удобно когда метод определяется не только проверкой типа, а еще может проверяет значение типа. Такое таким язычкам как C#, java и не снилось.
|
|||
90
Dotoshin
23.05.16
✎
09:40
|
(0) Все достаточно просто. Класс наследник получает от класса родителя все его свойства и методы так сказать по умолчанию, то есть есть все эти свойства будут присутствовать у наследника уже при "рождении" - это наследование. А полиморфизм - это многократное описание одного и того же метода для разных случаев. При этом не важно был этот метод унаследован или был описан "с нуля".
Например класс может иметь метод "сложить", в зависимости от типа параметров он будет действовать по разному. Получит на входе две строки - на выходе будет конкатенация этих строк. Получит два числа - на выходе будет сумма чисел. Ну и т.д. |
|||
91
Тролль главный
23.05.16
✎
09:41
|
(88) не, это ты тупишь
|
|||
92
Рэйв
23.05.16
✎
09:42
|
(88)Как ни жаль но он прав.
Если стоит overload в ролительстком, то в наследуемом классе можешь написать там что угодно. |
|||
93
Лефмихалыч
23.05.16
✎
09:42
|
(91) "му-му" и "тра-та-та"
|
|||
94
Локи-13
23.05.16
✎
09:43
|
(88) я тоже хотел на хабр сослаться (
|
|||
95
Dotoshin
23.05.16
✎
09:43
|
(83) Все правильно в (61) сказано. Может существовать класс с абстрактным методом - это как бы базовое поведение, а в классах наследниках будет описано поведение этого метода для разных типов параметров.
|
|||
96
Лефмихалыч
23.05.16
✎
09:44
|
(92) к полиморфизму это каким боком? Это наследование, точнее возможности управления наследованием в разных языках. Полиморфизм - это когда ты делаешь один метод с неким поведением относительно базового класса и в него можшь передавать любых потомков этого базового класса
|
|||
97
woww
23.05.16
✎
09:45
|
(88) Настоящий полиморфизм. Это когда рантайм может выбирает метод, на основе произвольной функций. Например функция может проверить тип, значение или внешнее состояние и вызвать соответствующий метод.
|
|||
98
Рэйв
23.05.16
✎
09:46
|
(96)это безспорная истина:-)
|
|||
99
Рэйв
23.05.16
✎
09:47
|
(96)делай скидки, что большинство участников дискуссии - троли:-)
|
|||
100
woww
23.05.16
✎
09:48
|
(96) А полиморфизм на основе мультиметодов, это уже не полиморфизм?
|
|||
101
Тролль главный
23.05.16
✎
09:50
|
(96)
class A { public virtual string Test() {return "Муму";} } class XA: A { public override string Test() {return "Тратата";} } A a1 = new A(); string s1=a1.Test(); A a2 = new XA(); string s2=a2.Test(); //полиморфный вызов |
|||
102
woww
23.05.16
✎
09:51
|
(98) Не бесспорная. Я кроме этой знаю еще 2 реализации полиморфизма. 1) На основе мультиметодов. 2)На основе систем типов. Это если не считать динамических язычков где вообще можно что угодно делать и определять полиморфизм как угодно.
|
|||
103
Dotoshin
23.05.16
✎
09:57
|
(0) Вот ссылка https://vk.com/doc98893819_254664798?hash=aaa19faa2c7bffdc35&dl=19c8c9902fae2b14b6
на странице 164 объясняется что такое полиморфизм и чем он отличается от наследования |
|||
104
woww
23.05.16
✎
09:59
|
(0) Ты если будешь читать про "паттерны ООП", не вздумай их изучать на динамических языках или тем более 1С. В динамике половины тех проблем нету, которые есть в языках со статической типизацией (c#, java и т.п.).
|
|||
105
Живой Ископаемый
23.05.16
✎
10:01
|
а когда у одной функции несколько сигнатур - это полиморфизм?
|
|||
106
Локи-13
23.05.16
✎
10:02
|
Полиморфизм - это когда каждый мистянин трактует определение "Полиморфизма" по разному.
|
|||
107
los_hooliganos
23.05.16
✎
10:02
|
(101) Почему полиморфный? a2 хоть и формируется через конструктор ХA, в итоге будет все равно приведен к типу А
|
|||
108
Тролль главный
23.05.16
✎
10:03
|
(107) это С#, там не как в C++
|
|||
109
los_hooliganos
23.05.16
✎
10:04
|
(108) Хм... ну значит в java так же как в с==
|
|||
110
los_hooliganos
23.05.16
✎
10:04
|
(109) + как в с++
|
|||
111
Локи-13
23.05.16
✎
10:05
|
Наследование это когда один мистянин цитирует другого, и немного его поправляет.
|
|||
112
Тролль главный
23.05.16
✎
10:06
|
(109) в джава как раз как в шарпе
|
|||
113
ViSo76
23.05.16
✎
10:06
|
Простым языком наследование, это типа "копирование" всего от родителя в возможностью переопределять методы, если дано такое право и добавлять что-то своё ( переменные, процедуры или функции ). В общем расширять объект. К примеру есть объект TPoint содержащий координаты X и Y и всего 1 перегружаемую процедуру Show. На основе TPoint создадим класс Circle. Для этого наследуем TPoint. Соответственно нам нужно добавить в новый класс переменную R - радиус, и перегрузить метод Show чтобы отображать круг. Далее создадим на основе Circle класс Целиндр, который будет иметь ещё и высоту. А полиморфизмом соответственно будем вызывать методы Show из массива для всех фигур, это будет маленький Corel Draw если добавим метод Hide и Move и работу с мышкой для объектов.
|
|||
114
Dotoshin
23.05.16
✎
10:08
|
(106) (111) Лучший ответ! :)
|
|||
115
xxTANATORxx
23.05.16
✎
10:11
|
было уже?
Инст. Допконсультация. Умаявшийся препод бьется с тупым студентом, в уголке сидит аспирант, жует печеньки, запивает чаем и чатится в аське. Препод, задолбавшись объяснять студенту, что такое полиморфизм, зовет аспера и говорит студенту: - Так, смотри сюда! Вот Андрей - это полиморфная функция. Что у него на входе? - Эээээ... - На входе у него чай и печенье! А что у него на выходе? - О_О! - На выходе у него, твою мать, строка символов! Андрей, у тебя есть еще что-нибудь поесть? - Эээээ... ну, шоколадка есть! - Съешь ее! Офигевающий аспирант разворачивает шоколадку и начинает ее поглощать. Препод: - Вот теперь у него на входе шоколадка. Что на выходе будет? - Эээ... - Идиот! Щас он доест, сядет за комп и опять будет трепаться! На выходе снова будет строка символов! Хоть его, мать твою, артишоками накорми - на выходе будет строка символов! Он полиморфная функция!!! Понял? |
|||
116
los_hooliganos
23.05.16
✎
10:20
|
(113) Что значит Т в начале имени класса?
|
|||
117
spock
23.05.16
✎
10:21
|
(101) Верно. Верно даже для с++.
|
|||
118
Тролль главный
23.05.16
✎
10:22
|
(117) для С++ это верно было бы, если бы юзались ссылки или указатели на объекты, а не сами объекты
|
|||
119
spock
23.05.16
✎
10:23
|
(118) Мы же за подход говорим.
|
|||
120
Тролль главный
23.05.16
✎
10:24
|
(119) я про конкретный написанный мною пример
|
|||
121
DDwe
23.05.16
✎
10:25
|
(116) Слабо троллишь. )))
|
|||
122
Dotoshin
23.05.16
✎
10:28
|
(117) Есть некоторые "неписанные" правила и соглашения, типа этих https://habrahabr.ru/post/172091/
|
|||
123
spock
23.05.16
✎
10:33
|
(122) ?
|
|||
124
Dotoshin
23.05.16
✎
10:38
|
(123) Сорри, промазал. (122) было к (116)
|
|||
125
ViSo76
23.05.16
✎
10:51
|
(116) Ничего не значит, просто название. Обычное для pascal
|
|||
126
Shurjk
23.05.16
✎
10:58
|
Какая бурная дискуссия, вроде в вики все написано?
Автор если непонятно посмотри по поводу перегрузки операторов и функций, там поймешь что такое полиморфизм. |
|||
127
bolobol
23.05.16
✎
11:25
|
Функция ПривестиЗначение(А :целое){ возврат А; }
Функция ПривестиЗначение(А :дробное){ возврат округлить(А); } - это, простите тогда, как называется? |
|||
128
Тролль главный
23.05.16
✎
11:27
|
(127) это зависит от языка
в нетипизированных вполне полиморфизм в строготипизированных это две одноименные функции с разной сигнатурой (overload) |
|||
129
Asmody
23.05.16
✎
11:52
|
||||
130
Asmody
23.05.16
✎
11:53
|
(129)+ для взрыва мозга достаточно Введение прочитать.
|
|||
131
Xapac
23.05.16
✎
11:54
|
яверы тут чтоли?
JavaFX кто-нить использовал? |
|||
132
Shurjk
23.05.16
✎
12:09
|
(131) Тут в основном 1с-ки, выпускнкики, курсов воспитаники франчей, держатели сертификатов от 1с и прочий сброд недоучек, потому и возникла такая бурная дискуссия по данному вопросу.
|
|||
133
Dotoshin
23.05.16
✎
12:13
|
(132) >> ...и прочий сброд недоучек...
Ты за всех-то не говори. |
|||
134
Рэйв
23.05.16
✎
12:21
|
(132)Интересно послушать к какой категории ты относишь себя?
-выпускнкики курсов -воспитаники франчей -держатели сертификатов от 1с -прочий сброд недоучек, а? |
|||
135
ДенисЧ
23.05.16
✎
12:22
|
(129) Зачем нужен хаскель, если есть православный с++?
|
|||
136
Shurjk
23.05.16
✎
12:22
|
(134) К тем у кого не возникает вопроса по поводу того чем полиморфизм отличается от наследования.
|
|||
137
Тролль главный
23.05.16
✎
12:23
|
(135) православный С++ теперь как раньше ассемблер
производителен, но тяжел в обслуживании |
|||
138
Dotoshin
23.05.16
✎
12:24
|
(134) Давай лучше с тебя начнем.
|
|||
139
Рэйв
23.05.16
✎
12:24
|
(136)Ну у меня вот тоже не возникает:-). Тем не менее пообщаться с людьми не чураюсь.
|
|||
140
ДенисЧ
23.05.16
✎
12:24
|
(136) У моей мамы такого вопроса не возникает....
(137) Руки нужно прямые иметь... |
|||
141
Рэйв
23.05.16
✎
12:25
|
(138)Я "воспитанник франчей" наверное.:-) Что греха таить.Было дело в молодости.А ты?:-)
|
|||
142
Dotoshin
23.05.16
✎
12:26
|
(136) Ну у меня такого вопроса не возникает, но и сбродом на этом форуме я никого не считаю.
|
|||
143
DomovoiVShoke
23.05.16
✎
12:30
|
(0)Когда учился понял одно: если не использовать эти слова, то программить будет легче, а также легче будет твоим собеседникам)
|
|||
144
Dotoshin
23.05.16
✎
12:30
|
(141) Ну тогда пожалуй тоже "воспитанник франчей".
|
|||
145
Рэйв
23.05.16
✎
12:33
|
(144)пора создавать партию и идти на выборы:-)
|
|||
146
Локи-13
23.05.16
✎
12:34
|
(136) а что ты в этой теме делаешь?
вопроса у тебя нет, но и ответ ты не дал. |
|||
147
spock
23.05.16
✎
12:35
|
(136) Так твое "Автор если непонятно посмотри по поводу перегрузки операторов и функций, там поймешь что такое полиморфизм." как понимать тогда?
Посмотреть на перегрузки функций и понять, что overload/override к полиморфизму отношения не имеет? |
|||
148
Dotoshin
23.05.16
✎
12:36
|
(145) Какая интересная мысль однако :)))
|
|||
149
bolobol
23.05.16
✎
12:38
|
(136) Так и ответа, верно, нет, да?
|
|||
150
Рэйв
23.05.16
✎
12:38
|
(148)Да порвем ЕдРо как бобик грелку!:-))
|
|||
151
ДенисЧ
23.05.16
✎
12:44
|
(145) Мда... Во что лучше вступить: в коровье или собачье?
|
|||
152
Shurjk
23.05.16
✎
12:49
|
(146) Кстати дал.
|
|||
153
Shurjk
23.05.16
✎
12:51
|
(147) Как говорится смотрим в кингу видим фигу, а все почему отсутствие базовых навыкоу дает о себе знать.
|
|||
154
spock
23.05.16
✎
12:55
|
(153) Ты еще один неуд, который прогуливал пары по c++?
|
|||
155
Shurjk
23.05.16
✎
13:00
|
(154) В отличии от тебя у меня они хотя бы были. И давали на них как раз те темы которые так будоражат мозги 1с-ков, а не тупо писали привет мир.
|
|||
156
spock
23.05.16
✎
13:01
|
Коллеги, вы палитесь зачем так?
От обратного: Полиморфизм - это парадигма из ООП, где есть классы (новые типы). Т.е. полиморфизм может быть, при наличии классов (явные/неявные). А перегрузка (overload/override) применяется к свободным функциям, а так же методам классов. Т.е. наличие overload/override не реализует полиморфизм. |
|||
157
spock
23.05.16
✎
13:02
|
(155) Ага, вижу какой результат оставили в голове.
|
|||
158
Рэйв
23.05.16
✎
13:02
|
(151)С волками жить-...(С)
:-) |
|||
159
Asmody
23.05.16
✎
13:03
|
(156) "Полиморфизм - это парадигма из ООП" — только функциональщикам такую чушь не говори.
|
|||
160
Shurjk
23.05.16
✎
13:04
|
(156) Без комментариев, кто знает поймет, а остальным думаю все равно. Давай лучше дальше переходить на личности, определения это не твое, в вики на порядок лучше нвписано.
|
|||
161
ДенисЧ
23.05.16
✎
13:04
|
(158) то есть предлагаешь вступать в волчье? Спасибо....
|
|||
162
Рэйв
23.05.16
✎
13:06
|
(161)Ну, если не хочешь быть жертвой, придется быть хищником.
|
|||
163
los_hooliganos
23.05.16
✎
13:06
|
К сожалению во франчайзи не учат мыслить в рамках ООП.
|
|||
164
spock
23.05.16
✎
13:06
|
(159) Молодец, чё! Фразу вырвал из контекста и бегаешь довольный.
|
|||
165
spock
23.05.16
✎
13:07
|
(160) Какую wiki, очнись. В (29) и (33) я привел ссылки. Читай, развивайся.
|
|||
166
Рэйв
23.05.16
✎
13:09
|
(163)оно им и не надо. В детском садике тоже не учат высшей математике. Это просто начальный уровень.
|
|||
167
Shurjk
23.05.16
✎
13:14
|
(165) Те же самые ссылки на определения. Так что возвращаемся к (153)
|
|||
168
Shurjk
23.05.16
✎
13:15
|
+(167) Вопрос наводящий для чего используют перегрузки?
|
|||
169
spock
23.05.16
✎
13:17
|
(167) "Те же самые ссылки на определения." - не авторитетный источник или что?
Людям, читавших Страуструпа, и писавших на c++, моих ссылок будет достаточно. |
|||
170
Shurjk
23.05.16
✎
13:18
|
(169) Как видишь не факт.
|
|||
171
spock
23.05.16
✎
13:18
|
(170) Я хз тогда, ищи причину в себе :)
|
|||
172
Shurjk
23.05.16
✎
13:19
|
(171) На (169) Сможешь ответить?
|
|||
173
Рэйв
23.05.16
✎
13:20
|
(171)(172) Мне одному кажется, что вы из пустого в порожнее переливаете?:-)
|
|||
174
spock
23.05.16
✎
13:21
|
(172) На (168)? Могу.
|
|||
175
ViSo76
23.05.16
✎
13:22
|
Что вы всё спорите и спорите... Полиморфизма на уровне машинных кодов нет, это миф :)
|
|||
176
Shurjk
23.05.16
✎
13:23
|
(174) Давай.
|
|||
177
Рэйв
23.05.16
✎
13:24
|
(175)Да вообще все языки выше ассемблера - это костыли:-)
|
|||
178
los_hooliganos
23.05.16
✎
13:27
|
(177) 1С на вершине пищевой цепочки?
|
|||
179
Gary417
23.05.16
✎
13:28
|
(177) да и ассемблер, если вдуматься, тоже костыли
|
|||
180
los_hooliganos
23.05.16
✎
13:29
|
1С не нападет на клиента напрямую. А идет как-бы боком. Сначала подкидывается типовая бухгалтерия... И шаг за шагом клиент погружается в сети 1С и в итоге вынужден нанять 1С-ника.
|
|||
181
Shurjk
23.05.16
✎
13:31
|
(180) Самое главное не давать ему задуматься о том зачем ему вообще 1с. Есть фирма надо ставить - здесь без вопросов.
|
|||
182
ViSo76
23.05.16
✎
13:31
|
(180) Ты хочешь сказать что скайнет живёт с 1С?
|
|||
183
Рэйв
23.05.16
✎
13:32
|
(179)Ну да. В машинных кодах все таки неудобно как то было кодить.
|
|||
184
spock
23.05.16
✎
13:32
|
Занятно, 1с-ник меня экзаменует по крестам :)
(176) overload - нужен для переопределения одноименной функции с новыми параметрами как по их количеству, так и по типу. Используется для того, чтобы лаконично описать программируемое действие, не вдаваясь в подробности типов параметров. Т.е. отдавая возможность компилятору самому подставлять ту версию функции, которая больше подходит по передаваемые параметры. override - тоже самое, но обычно термин используется тогда, когда хотим показать, что поведение функции меняется. |
|||
185
Shurjk
23.05.16
✎
13:34
|
(184) Теперь читаем определение полиморфизма понимаем что перегрузка является одним из его примеров и извиняемся переде дяденькой.
|
|||
186
Рэйв
23.05.16
✎
13:35
|
(185)Я уже сто постов назад ему говорил, что спорим о частных проявлениях, все никак не уймется:-)
|
|||
187
Тролль главный
23.05.16
✎
13:36
|
(178) 1С это велосипед с квадратными колесами
|
|||
188
Рэйв
23.05.16
✎
13:43
|
(187)да ладно. Единственное западло с их стороны- это то, что свои классы определять нельзя.Но тут их можно понять.Нафик они тогда кому нужны были бы, если каждый могбы под себя 2С сделать.
|
|||
189
Jokero
23.05.16
✎
13:44
|
(0)Наследование, это когда новый автомобиль феррари является спортивным феррари.
А полиморфизм это когда ты на феррари мешки с картошкой возишь. |
|||
190
Рэйв
23.05.16
✎
13:45
|
(189)..А иногда и мешки с капустой:-)
|
|||
191
Тролль главный
23.05.16
✎
13:49
|
(188) кто? вто кто придумал это?
https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/ какие-то аннотации вместо обычных виртуальных функций |
|||
192
spock
23.05.16
✎
13:51
|
(185) Какое определение? Из wiki? Ну тогда см. (47)
Дяденька начало ветки не читал и решил другого дяденьку уму-разуму поучить, да? :) |
|||
193
Рэйв
23.05.16
✎
13:51
|
(191)У них изначально была ущербная схема, и потом просто пришлось подчинять всей идеологии остальное. Может и рады были бы соскочить, но было уже поздно:-)
|
|||
194
Pixelrat
23.05.16
✎
13:54
|
(0) "И вообще можно пример где есть наследование, но нет полиморфизма"
У всех кошек четыре лапы, но не всё с четырьмя лапами - кошки. Т.е. можно привести пример где есть полиморфизм, но нет наследования и их тут уже понаприводили. |
|||
195
Shurjk
23.05.16
✎
13:55
|
(192)вообще в твоем (47) написно практически слово в слово то же что и в вики.
|
|||
196
Волшебник
модератор
23.05.16
✎
13:55
|
1С — объектно-ориентированная платформа
|
|||
197
Рэйв
23.05.16
✎
13:56
|
(196)Онли "для разработчиков платформы" :-)
|
|||
198
ДенисЧ
23.05.16
✎
13:57
|
(196) Давайте не путать объектно-ориентированную и объектную среды...
|
|||
199
spock
23.05.16
✎
13:57
|
(195) ыы, почитай-ка ты, дяденька, ветку с самого начала.
|
|||
200
ДенисЧ
23.05.16
✎
13:57
|
(197) Создай новый документ. У него уже будут метод Записать() и мемберы Дата и Номер....
|
|||
201
Рэйв
23.05.16
✎
13:58
|
(200)А у меня может душа требует
class My:РасходнаяНакладная :-) |
|||
202
Волшебник
модератор
23.05.16
✎
13:59
|
(198) Давай не путать.
В 1С есть инкапсуляция, наследование и полиморфизм - три кита ООП. |
|||
203
ДенисЧ
23.05.16
✎
13:59
|
(201) Если душа требует - прими.
(202) К чёрту перья, я должен видеть это! |
|||
204
Рэйв
23.05.16
✎
14:00
|
(203)Я то приму, а вот 1С нет:-)
|
|||
205
ViSo76
23.05.16
✎
14:00
|
Да не выйдет ООП для 1С. Вся абстракция от железа и связанна с тем что объекты определены и их нельзя модифицировать, можно только изменять поведение.
|
|||
206
ДенисЧ
23.05.16
✎
14:03
|
(204) А ты ей тоже.
(205) в 77 вышло.А чем 8* хуже? |
|||
207
Волшебник
модератор
23.05.16
✎
14:04
|
(205) Про модификацию объектов Гради Буч ничего не говорил. Давай ориентироваться на классиков. Объекты даны нам в ощущениях как объективная реальность.
|
|||
208
ДенисЧ
23.05.16
✎
14:05
|
(207) TPoint vs TCircle
|
|||
209
ДенисЧ
23.05.16
✎
14:05
|
И про таких Буч писал.
|
|||
210
ViSo76
23.05.16
✎
14:08
|
(202) А менеджер объекта это статические методы класса :). Осталось закрыть глаза и поверить что в 1С есть ООП
|
|||
211
Shurjk
23.05.16
✎
14:08
|
(199) А где тебя на С++ программировать учили?
|
|||
212
Shurjk
23.05.16
✎
14:09
|
(210) Лучше открыть и подумать о том нужны ли они там и главное зачем.
|
|||
213
ViSo76
23.05.16
✎
14:11
|
(212) Нужны разумеется, оченно неплохо с помощью таких вещей писать в парадигме ООП
|
|||
214
ДенисЧ
23.05.16
✎
14:12
|
(213) ООП в 1с не нужны от слова совесм
|
|||
215
ViSo76
23.05.16
✎
14:15
|
(214) Для читабельности кода, для того чтобы под крышей объекта держать код относящийся именно к данному объекту. К примеру РегистрСведений.ИмяРегистра.НайтиЗаписиКонтрагента( пКонтрагент )
PS: Я не говорил об ООП, а говорил о написании кода в стиле ООП |
|||
216
ДенисЧ
23.05.16
✎
14:16
|
(215) Твой пример реализован в текущих платформах 1с
|
|||
217
ViSo76
23.05.16
✎
14:17
|
(216) Ещё с 8.2 ( менеджер объекта )
|
|||
218
ДенисЧ
23.05.16
✎
14:18
|
(217) О чём я и говорю.
|
|||
219
spock
23.05.16
✎
14:18
|
(211) НГТУ - АВТФ - Специальность: Программное обеспечение ВТ и АС.
|
|||
220
Карупян
23.05.16
✎
14:19
|
(215) Со всей это асинхронностью в 1С нужны не ООП, а замыкания
|
|||
221
ViSo76
23.05.16
✎
14:20
|
(218) Если в плане полноценного ООП в 1С то 100% не нужно. Что конкретно нужно в 1С, так это сортировка массива, и функция ABS ( модуль числа ).
|
|||
222
Карупян
23.05.16
✎
14:21
|
(221) Сортировка и так есть
|
|||
223
Локи-13
23.05.16
✎
14:22
|
В чем смысл сейчас (имею в виду 2016 год), обсуждать ООП / не ООП?
Есть языки и есть фреймворки. И плевать какие принципы и парадигмы там поддерживаются. Нужно думать о задачах, и более удобном способе их решения. |
|||
224
ViSo76
23.05.16
✎
14:22
|
(220) Что за замыкания? Типа семафоры?
|
|||
225
ДенисЧ
23.05.16
✎
14:22
|
(220) Замыкания в 1с тоже не нужны
|
|||
226
spock
23.05.16
✎
14:23
|
+219 Есть проекты, в которых я участвовал, используя кресты:
http://catalog.mista.ru/profile/public/ http://1cpp.ru/index.php/1cpp:Community Достаточно? |
|||
227
ViSo76
23.05.16
✎
14:24
|
(222) В массиве? Приведи скриншот
|
|||
228
Карупян
23.05.16
✎
14:25
|
(227) Наториально заверенный?
|
|||
229
Рэйв
23.05.16
✎
14:25
|
(221)Загрузи в колонку ТЗ, отсортируй и верни обратно:-)
|
|||
230
Карупян
23.05.16
✎
14:26
|
(225) Ты наверно еще не столкнулся с асинхронностью
|
|||
231
ДенисЧ
23.05.16
✎
14:29
|
(230) У тебя шизофазия?
|
|||
232
ViSo76
23.05.16
✎
14:29
|
(230) Ты про фоновые, про форму немодальную, про обработчик ожидания? Что конкретно?
|
|||
233
Карупян
23.05.16
✎
14:30
|
(232) Я про всякие НачатьПоискФайловВКаталоге
|
|||
234
ViSo76
23.05.16
✎
14:32
|
(233) И в чём проблема? Там нет callback? Ты имеешь ввиду объект синхронизации действий типа семафоров?
|
|||
235
ViSo76
23.05.16
✎
14:40
|
(229) Ну это понятно что через ТаблицуЗначений. У ТЗ колонка так же может быть не типизирована, и вроде как позволяет сортировать, может конечно выдать ошибку runtime на различных данных... и по сему не вижу причин почему не сделать для массива тоже самое.
|
|||
236
Shurjk
23.05.16
✎
14:47
|
(226) Вообще тема про перегрузки это обычно первая тема по курсу ООП на С++, потому собственно и привел перегрузки как пример полиморфизма. И если ты на ней же плывешь то далнейшее обсжудение как бы не о чем, для того чтобы чего то колбасить можно вообще не знать что такое ООП, многие 1с-ники кстати так годами работают, когда принимал людей просил рассказать как работают соединения в запросах, реально знают буквально еденицы, большинство колбасит и знать не знает.
|
|||
237
Локи-13
23.05.16
✎
14:51
|
(236) Большинство программистов в мире работает по заученным алгоритмам.
Т.е. знают какие буквы написать, чтоб получить нужный результат. Почему именно такие буквы их не волнует. У индусов такой стиль вообще национальная черта. |
|||
238
ViSo76
23.05.16
✎
14:53
|
(236) А ты расскажи как работают соединения, а то когда встаёт вопрос о том, почему так медленно работает запрос, то слетаются повитухи, которые пытаются поставить мёртвому припарки... :). А так они прийдут к тебе и будут тебе баки заливать...
|
|||
239
Тролль главный
23.05.16
✎
14:53
|
(202) есть, но все ущербные
|
|||
240
Тролль главный
23.05.16
✎
14:54
|
убийца 1С конечно будет ООП, если будет
|
|||
241
ViSo76
23.05.16
✎
14:54
|
(237) Вообще у индусов было принято платить за портянки, по этому они их и выкатывали https://habrahabr.ru/post/150982/
|
|||
242
Shurjk
23.05.16
✎
14:55
|
(238) Мне важно чтоб он во первых правильно работал. Насчет заливать баки это не ко мне.
|
|||
243
Локи-13
23.05.16
✎
14:58
|
(240) звучит как "Убийца слона будет зоопарк, если будет"
|
|||
244
Тролль главный
23.05.16
✎
14:59
|
(243) в общем именно так
|
|||
245
Волшебник
модератор
23.05.16
✎
14:59
|
(210) в 1С есть ООП
|
|||
246
ДенисЧ
23.05.16
✎
14:59
|
(245) Там есть инкапсуляция?
|
|||
247
Локи-13
23.05.16
✎
15:00
|
(244) могу посоветовать употреблять меньше наркотиков
|
|||
248
Тролль главный
23.05.16
✎
15:02
|
(245) да есть, но (239)
|
|||
249
Волшебник
модератор
23.05.16
✎
15:03
|
(246) В 1С есть инкапсуляция, наследование и полиморфизм.
|
|||
250
Локи-13
23.05.16
✎
15:07
|
(249) нет смысла их убеждать, они хотят из 1С сделать С++
Хоть убей не понимают, что это языки для разных задач. И почему то считают, что ООП это только С++. |
|||
251
Pixelrat
23.05.16
✎
15:11
|
Чем инстанцирование отличается от наследования?
|
|||
252
Тролль главный
23.05.16
✎
15:13
|
(249)
инкапсуляция: как сокрыть реквизит документа или сделать его рид-онли наружу? наследование: только "одношаговое" наследование, наследовать от производных классов не получится абстракция: интерфейсов нет, хотя есть составные типы, но существование методов никто не гарантирует полиморфизм: все методы полиморфны, нельзя отказаться от этого (в силу нестрогой типизации). С другой стороны в силу "одношагового" наследования это мало эффективно |
|||
253
Волшебник
модератор
23.05.16
✎
15:17
|
(252) Это уже детали, которые к общему не имеют отношения. Главное, что 1С - это объектно-ориентированная платформа.
|
|||
254
Тролль главный
23.05.16
✎
15:20
|
(253) согласен, потому что ЗАЗ-968 автомобиль, как и Toyota Camry
|
|||
255
Dotoshin
23.05.16
✎
15:21
|
(236) Открой секрет, как полиморфизм связан с соединениями в запросе?
|
|||
256
Волшебник
модератор
23.05.16
✎
15:24
|
(254) Естественно. Они же относятся к одному классу "Автомобиль"
|
|||
257
Shurjk
23.05.16
✎
15:24
|
(255) Это пример того что люди работают годами но не знают основ при этом.
|
|||
258
Волшебник
модератор
23.05.16
✎
15:24
|
В этом смысле, 1С является "Toyota Camry", а вот всякие С++ скорее похожи на запорожцы.
|
|||
259
Тролль главный
23.05.16
✎
15:25
|
(0)>>пример где есть наследование, но нет полиморфизма
если в С++ или С# использовать наследования, но не использовать слов virtual/override, то будет как раз наследование без полиморфизма |
|||
260
Тролль главный
23.05.16
✎
15:27
|
(258) у 1С хорошо одно: она лучше всего подходит как старт-ап, быстрый взлет и все такое
но чем дальше, тем сложнее поддержка, те же типовые: постоянно переносят методы из модуля в модуль |
|||
261
spock
23.05.16
✎
16:03
|
(236) а давай-ка, дружок, послушаем твое определение полиморфизма. И так как в самом начале было обозначено, что в контексте си-подобных языков, то давай и ты так же.
Пойдут ссылки на любые адекватные книги/ресурсы. |
|||
262
sash-ml
23.05.16
✎
16:14
|
https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
С точки зрения Джава, полиморфизм это вызов метода не по типу ссылки а по типу объекта при одинаковой сигнатуре. |
|||
263
Волшебник
модератор
23.05.16
✎
16:18
|
(262) Java - отстой. Язык, родившийся мёртвым. JavaScript рулит.
|
|||
264
Рэйв
23.05.16
✎
16:22
|
(263)оно какбы вообще рядом не стояло:-)
|
|||
265
Волшебник
модератор
23.05.16
✎
16:26
|
(264) Типа того. Java - запорожец, а JavaScript - Тойота Камри
|
|||
266
spock
23.05.16
✎
16:26
|
(262) Вот именно, "при одинаковой сигнатуре".
Но в (185) коллега с упорством единорога доказывает так "Теперь читаем определение полиморфизма понимаем что перегрузка является одним из его примеров и извиняемся переде дяденькой.". Т.е. overload у него полиморфизм. |
|||
267
spock
23.05.16
✎
16:27
|
(265) Чё, никто не разводится на срачь? :)
|
|||
268
Рэйв
23.05.16
✎
16:27
|
(265)типатого -Java бентли, а JavaScript - лада-калина:-)
|
|||
269
Oftan_Idy
23.05.16
✎
16:30
|
Все это гавно. Ассемблер! Все остальное это костыли
|
|||
270
Shurjk
23.05.16
✎
16:30
|
(261) Определение тут не раз уже приводили. Достаточно того определения что указано в вики.
И тебе кстати тоже советую использовать их, а то то что ты пытаешься сам родить весьма смешно выходит. |
|||
271
spock
23.05.16
✎
16:31
|
(270) А процитируй еще раз.
|
|||
272
bolobol
23.05.16
✎
16:32
|
(266) Что смущает, что перегрузка - полиморфизм?
|
|||
273
Тролль главный
23.05.16
✎
16:35
|
(272) в общем смысле полиморфизм, но:
1. в ООП под полиморфизмом понимают не overload, а override 2. пользы от такого полиморфизма никакого, если язык не динамический |
|||
274
Волшебник
модератор
23.05.16
✎
16:35
|
(269) Баян. См (177)
|
|||
275
ViSo76
23.05.16
✎
16:43
|
(274) Нужно его забанить ненадолго для веселья.
PS: На самом деле на assebbler-е писать ещё то занятие... До сих пор не понимаю как реализован try catch... не на Int 3 же сидит... |
|||
276
Shurjk
23.05.16
✎
16:43
|
(271) В гугле забанили? Можешь свои ссылки посмотреть там то же самое написано.
|
|||
277
spock
23.05.16
✎
16:48
|
(276) Из (33):
"The word polymorphism means having many forms. Typically, polymorphism occurs when there is a hierarchy of classes and they are related by inheritance. C++ polymorphism means that a call to a member function will cause a different function to be executed depending on the type of object that invokes the function." Где здесь про overload? Да и образованные англоязычные люди тоже разделяют мою точку зрения: http://stackoverflow.com/questions/824763/is-polymorphism-another-term-for-overloading |
|||
278
Shurjk
23.05.16
✎
16:58
|
(277) То есть это уже точка зрения? А не непреложная истина как ты в начале выдал? Ну что же прогресс налицо.
Кстати ты там ссылался на Страуструпа - у него есть такое определение полиморфизма - "один интерфейс, много реализаций" И опять же ты тупо вообще не понимаешь о чем ты споришь, решил изначально понтанутся чем то что где то слышал но не понимаешь. |
|||
279
spock
23.05.16
✎
16:59
|
1с-ники, которые ссылаются на wiki-статью, вы читали дальше первого абзаца?
Учу читать: "В дальнейшем классификацию уточнил Лука Карделли[en][9], выделив четыре разновидности полиморфизма: -универсальный - ...; -ad hoc: - перегрузка; - ...; " Дальше поясняется значение ad hoc: " Латинский фразеологизм «ad hoc» (буквально «к случаю») имеет двойственное значение: 1) ...сделанный «на коленке»; 2) ...; " И эпилог: "Действительно, ad hoc полиморфизм не является истинным полиморфизмом[5]. Перегрузка функций даёт не «значение, имеющее множество типов», а «символ, имеющий множество типов», но значения, идентифицируемые этим символом, имеют разные (потенциально не совместимые) типы. ". |
|||
280
Тролль главный
23.05.16
✎
17:00
|
(278) overload под "один интерфейс, много реализаций" не подходит - интерфейсы как раз разные - в данном случае интерфейсом выступает сигнатура функции, так вот они разные
|
|||
281
spock
23.05.16
✎
17:01
|
+279 в английской версии полиморфизм понятнее. В русской же, wiki-программисты путаются в трех соснах.
|
|||
282
Shurjk
23.05.16
✎
17:05
|
(280) Где это они разные? Если интерфейс как раз остается неизменным а вот реализация уже зависит от контекста?
|
|||
283
Shurjk
23.05.16
✎
17:06
|
(281) То же самое и в английской версии написано. Ага трудности перевода прям.
|
|||
284
spock
23.05.16
✎
17:09
|
(283) ок, для тугих по-русски написано про overloading == adhoc полиморфизм, что это колхоз наколеночный.
|
|||
285
Тролль главный
23.05.16
✎
17:11
|
(282) для статических языков (C++,С#,Java,Delphi) сигнатура разная у функций
Foo(int x) и Foo(string x) следовательно полиморфизма времени выполнения не может быть да этот самый тупой adhoc, максимум пригодится для шаблонов в С++, но все равно времени компиляции |
|||
286
ViSo76
23.05.16
✎
17:12
|
Прикиньте топикастр накинул на вентилятор и свалил, а тут уже "религиозные" войны пошли...
|
|||
287
Shurjk
23.05.16
✎
17:14
|
(284) Опять слышал звон не знаешь где он, приминительно к с++ это основы основ.
(285) Как бы про С++ и говорим тут, там это самый яркий можно сказать пример полиморфизма, понять полиморфизм на примерах виртуальных функций гораздо сложнее. |
|||
288
Тролль главный
23.05.16
✎
17:15
|
(287) толку от adhoc как от козла молока в целом
|
|||
289
spock
23.05.16
✎
17:16
|
(287) Кисло ты слился.
|
|||
290
ViSo76
23.05.16
✎
17:18
|
Да ладно вам... Foo(int x) и Foo(string x) на уровне компиляции определяется что вызвать, а вызов метода у приведённого объекта к базовому, всего лишь call Объект:Смещение в таблице методов и нежен лишь для компилятора чтобы не ругаться. Полиморфизм это миф :)
|
|||
291
Shurjk
23.05.16
✎
17:19
|
(289) Угу я слился и перегрузка теперь не является примером полиморфизмом.
Добрый совет не пытайся кому то выставлять себя гуру в С++ занющие люди быстро тебя к плинтусу прижмут, хотя тебе все равно ты ведь не поймешь этого. |
|||
292
Господин ПЖ
23.05.16
✎
17:20
|
тупая ветка
|
|||
293
spock
23.05.16
✎
17:21
|
(291) хы, ну ты чудной.
|
|||
294
ViSo76
23.05.16
✎
17:22
|
(291) Я думаю что Foo(int x) и Foo(string x) скорее всего полиморфизм из определения:
Полиморфи?зм в биологии (от др.-греч. ?????????? — многообразный) — способность некоторых организмов существовать в состояниях с различной внутренней структурой или в разных внешних формах. https://ru.wikipedia.org/wiki/Полиморфизм_(биология) |
|||
295
Тролль главный
23.05.16
✎
17:27
|
(294) какая польза от такого полиморфизма в С++?
|
|||
296
Волшебник
модератор
23.05.16
✎
17:28
|
(295) на свидании с девчонкой можно понтануться
|
|||
297
ViSo76
23.05.16
✎
17:31
|
(295) Это просто так называется и всё. Толк только один - чтобы программа откомпилировалось ( обойти типизацию ). Больше не для чего это не нужно.
|
|||
298
Pixelrat
23.05.16
✎
17:34
|
Так дальше пойдёт, и классификация злом окажется.
|
|||
299
Shurjk
23.05.16
✎
17:56
|
(297) Скомпилиируется и так без проблем, а вот при выполнении выпадет с ошибкой о несовместимости типов.
|
|||
300
Карупян
23.05.16
✎
18:13
|
(299) Ты про c++? В джаве например НЕ скомпилируется
|
|||
301
Тролль главный
23.05.16
✎
21:04
|
(296) или я стар или девочки изменились
|
|||
302
Smallrat
24.05.16
✎
10:19
|
||||
303
los_hooliganos
24.05.16
✎
11:12
|
Тема подошла к концу.
Надо обсудить ковариантность и почему его нельзя учитывать как сигнатуру метода. |
|||
304
Карупян
24.05.16
✎
11:22
|
(301) Сейчас модно быть программистом
|
|||
305
Карупян
24.05.16
✎
11:22
|
Только нужно говорить, что в силиконовую долину скоро поедешь
|
|||
306
los_hooliganos
24.05.16
✎
11:25
|
(305) Станешь крутым 1С-ком, поедешь на Достоевскую, там будешь зарабатывать очень много денег. Квартиру себе в центре Москвы купишь.
|
|||
307
Кирпич
24.05.16
✎
11:39
|
Прочитал всю ветку. Так и не понял чем полиморфизм отличается от наследования.
|
|||
308
Pixelrat
24.05.16
✎
11:47
|
Что отличает мадам от мадемуазель?
-мсье! |
|||
309
Тролль главный
24.05.16
✎
12:05
|
(307) забей, тебе это не надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |