Задать вопрос

Что такое замещение в ООП?

Здравствуйте. Замещение в объектно-ориентированном программировании, тобишь overrideng есть переопределение. Переопределение = полиморфизм. Тобишь замещение = полиморфизм.
Значит, вопрос "Понятие замещения в ООП" есть вопрос "Понятие полиморфизма в ООП"?
Спасибо всем кто откликнется=)
  • Вопрос задан
  • 1295 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Полиморфизм - один из трех фундаментальных принципов ООП-парадигмы.

Замещение (также "перекрытие" или "переопределение" методов) - общее название механизма, предоставляемого ЯП для поддержки применения этого принципа при проектировании иерархий классов.

Конкретные детали реализации механизма могут отличаться, (как, например в Java и JS), но суть с т.з. ООП остается той же. А вот в С, например, такого механизма вообще нет, однако это не препятствует (просто не помогает!) писать объектно ориентированный код на этом языке.

Так что, если под "замещением" понимается именно overriding, я бы не стал так широко отождествлять цель и средство ее достижения :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Возможно Вы об этом:

class Фигура:
  virtual void нарисоватьСебя() = 0;

class Круг : public Фигура:
  virtual void нарисоватьСебя() {
  // код рисующий круг
  }

class Квадрат : public Фигура:
  virtual void нарисоватьСебя() {
  // код рисующий квадрат
  }


У Вас есть множество фигур, но каждая выглядит по своему. Тем не менее каждую можно нарисовать. Получается, что изучая множество объектов, вы выделяете общие для всех свойства и действия и формируете "Абстракцию", в данном примере "Фигура". Когда Вы обобщили и сформулировали абстракцию в коде, настает время описать детали о Круге и Квадрате. Когда Вы пишите нарисоватьСебя() для квадрата , то Вы замещаете код написанный в "Фигуре". Таким образом Вы переходите от общего к частному.
Ответ написан
abs0lut
@abs0lut
Да.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы