Здравствуйте, MaximE, Вы писали:
ME>Вот это как раз не прелесть, а ужас.
ME>Концептуально, у объекта есть состояние и поведение (еще identity, но здесь это нас не интересует). Состоянием рекоммендуется манипулировать только через методы объекта (инкапсуляция). Когда мы начинаем манипулировать состоянием объекта напрямую (нарушение инкапсуляции) — это уже создает бардак в коде, так как нет гарантий, что инвариант класса не нарушен.
Свойства нарушают инкапсуляцию? Каким образом
ME>Но когда изменение состояния вызывает еще какое-то поведение — это полный кошмар, т.к. из такого кода неясно, где просто изменяется переменная объекта, а где изменение состояния влечет за собой цепочку вызовов — поведение.
Перегруженные операторы присваивания в C++ делают тоже самое и никого это не пугает