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

Как поменять 2 функции в один класс?

Есть две функции и класс сервис. Для упращения функцию сервиса буду называть ФС. Так вот обе функции одинаковые до момента использования ФС в функциях. Как быть в таком случае? Делать абстрактный класс и абстрактную функцию, где будет вынесен общий алгоритм. А в абстрактной функции сделать вызов функции. Это нормальная идея или нет?
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
kinglostov
@kinglostov
просто lostov
А в абстрактной функции сделать вызов функции. Это нормальная идея или нет?

Абстрактная функция указывает на то, что в данном классе нет реализации этой функции, но она должна быть реализована в классах-потомках.
Абстрактные функции бывают полезны, когда от класса-предка наследуются несколько классов-потомков с различными реализациями одного и того же действия. Тогда, используя переменную типа класса-предка с абстрактной функцией, можно вызывать эту функцию. В зависимости от того, на объект какого класса указывает переменная, будет вызвана нужная реализация функции.
Поэтому абстрактными могут быть только виртуальные функции.
Обычно создание объекта класса, имеющего абстрактные функции, приводит к выводу компилятором предупреждения. А вызов абстрактной функции во время выполнения обычно приводит к выводу ошибки.
Ответ написан
Комментировать
@Vitsliputsli
ООП - это больше про объекты и их связи. Да, в какой-то степени боремся и с повторяемостью кода, но это не главное. Т.е. нужно смотреть на то, что это за объекты, если они родственные, то можно сделать абстрактный класс, но быть может больше подойдет инстанцирование в один класс разных объектов и вызов одноименной функции. А где-то вообще будет вызов динамический, а где-то быть может стоит и продублировать код. Все зависит от самих объектов и их связей.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Есть две функции и класс сервис. Для упращения функцию сервиса буду называть ФС. Так вот обе функции одинаковые до момента использования ФС в функциях. Как быть в таком случае? Делать абстрактный класс и абстрактную функцию, где будет вынесен общий алгоритм. А в абстрактной функции сделать вызов функции. Это нормальная идея или нет?

Здесь - недостаточно информации. Можно начать с того что нет даже оснований для ООП.
Есть просто какая-то функция которая висит в космосе. Ты можешь ее просто объявлять функцией.
ООП не запрещает функции.

Кстати по поводу ООП. Нет канонического рефакторинга для ООП. Обычно все учебные ООП
примеры - применительны к конкретным языкам. На примерах всегда пишут Джош Кериевски,
Мартит Фаулер и Дядя Боб. Поэтому чтобы дальше обсуждать твой вопрос предметно - нам
нужны сорцы.

Иначе получается битва телепатов. Мы тут мним твой исходник каждый в своём языке.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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