Философия ООП или в каком случае создавать новые классы?

Рейтинг: 0Ответов: 1Опубликовано: 24.05.2023

Как понять, что под определённое состояние объекта необходим новый класс?

Приведу пример: Есть телевизор, у него может быть 2 состояния - вкл./выкл. Как будто всё нормально, и это просто состояния, всё в одном классе. Но вот, по сценарию, этот телевизор должны сломать(разбить в щепки) и он уже будет выглядеть иначе. Отсюда неопределённость: в реальной жизни это тот же телевизор и как будто должен быть тот же объект, но в программе удобнее унаследовать сломанный телевизор от телевизора и переопределить его "внешний вид".

Итак вопрос, как понимать, когда создавать новый класс, а когда это просто состояние объекта?

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

Ответы

▲ 4Принят

Дизайн кода - это скорее искусство, чем наука, а искусство неформализуемо. Так что никакой формулы тут нет, есть только паттерны проектирования (design patterns), которые можно реализовывать самыми разными способами (в зависимости от избранного языка, ТЗ, вашего воображения, накопленого опыта, привычек), а можно вообще обходиться без них, особенно в C++, где больший вес имеют идиомы.