Компилирует без ошибок,но...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Компилирует без ошибок,но...

Сообщение Лекс Айрин » 21.06.2016 22:04:31

resident писал(а):Полиморфизма нет.


Как раз таки есть. Не стоить путать с полиморфным кодом (обычно вирусным ;) ) Полиморфизм это, грубо, перегрузка методов родителя методами предков. И если не писать vittual, то можно иметь абсолютно разные наборы параметров и любой выхлоп.

На самом деле, это все ерунда... понятное дело, что пока можно определить нужную в данный момент функцию/процедуру можно страдать любой ерундой -- компилятор разберется. Не стоит забывать, что не нижнем уровне все эти методы не более чем смещения относительно определенного базового значения т. е. все они разные.

AlphaBlend писал(а):Объемы точки еще никто не пробовал измерять .


понятие объема для математической точки, как сущности нуль-размерной, не существует. Но если быть занудными до конца, то resident прав.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Компилирует без ошибок,но...

Сообщение pupsik » 21.06.2016 22:18:34

Т.е. метод необходимо указать. В ином случае - не то. И отличается только внутри. Выхлоп должен быть однотипным.
Т.е.:
Код: Выделить всё
TMyChild = class
    function One: string; virtual;
  end;
  TMyGrandChild = class(TMyChild)
    function One: string; override;
  end;

Или опять не туды? :)

Добавлено спустя 5 минут 20 секунд:
Лекс Айрин
Мдя: надо ещё мнение.

п.с.
Хотя, по учебнику - с virtual и override
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Компилирует без ошибок,но...

Сообщение resident » 21.06.2016 22:48:02

Лекс Айрин писал(а):Полиморфизм это, грубо, перегрузка методов родителя методами предков.

Чувствую, что здесь наследование. Но математически выразить не могу (с).
Там разная классификация:
По статье:
Полиморфизм (информатика)
В сообществе объектно-ориентированного программирования под термином «полиморфизм» обычно подразумевают наследование, а использование параметрического полиморфизма называют обобщённым программированием, или иногда «статическим полиморфизмом».

Ваш полиморфизм в данном примере вроде получается:
Если параметру функции сопоставлен ровно один тип, то такая функция называется мономорфной......
Стрэчи назвал такую возможность «ad hoc полиморфизмом»

Я же выбираю это:
Если параметру функции сопоставлено более одного типа, то такая функция называется полиморфной.....
Стрэчи назвал такую возможность «параметрическим полиморфизмом»


И дальше:
В дальнейшем классификацию уточнил Лука Карделли[en][9], выделив четыре разновидности полиморфизма:
универсальный
-- параметрический
-- включения (или подтипов)
ad hoc
-- перегрузка
-- приведение типов


Лекс Айрин писал(а):На самом деле, это все ерунда...

Похоже на то, если там такой разброд во мнениях.
Есть ранее связывание, а есть позднее и точка! (шар нулевого объема :mrgreen: ).

Добавлено спустя 7 минут 35 секунд:
Или опять не туды? :)

Именно это я и называю полиморфизмом = позднее (динамическое) связывание.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Компилирует без ошибок,но...

Сообщение vvvch » 22.06.2016 07:52:21

Если смотреть на это с практической стороны, то если есть предок и потомок. В поломке один метод переопределён, а другой метод предка просто наследуется, но вызывает переопределён метод. Тогда если не virtual, (override) наследуемый (другой) метод вызовет метод предка (свой метод), а если virtual тогда потомка (хотя он написан для предка). Это и есть позднее связывание.
Для перегруженных функций (не процедур) если одинаковое имя, но разные аргументы - тогда нормально, но если разный тип возвращаемого результата, тогда ошибка компиляции.
Аватара пользователя
vvvch
постоялец
 
Сообщения: 105
Зарегистрирован: 26.04.2013 11:05:39
Откуда: г.Боровичи, Новг. обл.

Re: Компилирует без ошибок,но...

Сообщение Лекс Айрин » 22.06.2016 09:22:46

resident писал(а):Там разная классификация:
По статье:

Меня больше всего там удивляет
resident писал(а):обычно подразумевают


Насчет этого...
resident писал(а):Ваш полиморфизм в данном примере вроде получается:


тут сложность в том какая функция статическая или виртуальная.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 231

Рейтинг@Mail.ru