Пока мы говорили о вещах, существующих в физическом пространстве, но можно привести пример и более абстрактных объектов. Посмотрим на план строительства дома. Скорее всего, он состоит из нескольких этапов: сначала закладывается фундамент, затем возводятся стены и наконец укладывается крыша. Если в процессе строительства будут внесены изменения в фундамент, это может повлиять на стены, которые в свою очередь повлияют на крышу. Таким образом, цепочки связанных друг с другом событий являются объектами. Тема изменения объектов-событий встречается во многих фильмах, когда герой возвращается в прошлое и совершает некоторые действия, которые влияют на будущее.
Похожим образом объектом является любая область связанных друг с другом знаний. Каждое новое открытие опирается на фундамент уже накопленных знаний.
Если я видел дальше других, то потому, что стоял на плечах гигантов.
– Исаак Ньютон
В свою очередь, новые открытия могут дополнять, уточнять, а иногда и полностью менять предыдущие.
Компьютерные программы также являются объектами. Рассмотрим два типа изменений, которые могут с ними происходить.
• Объект: программа во время исполнения
Во время исполнения код программы остается неизменным, а все изменения происходят в регистрах процессора и ячейках оперативной памяти. В более сложных случаях производится запись в постоянную память, с помощью чего можно организовать связи между разными запусками программы.
Во втором случае изменяется сам код программы.
• Объект: код программы
В процессе разработки программисты регулярно производят внешние воздействия – вносят изменения в код. Части программы могут быть связаны между собой, например, один модуль может использовать функции другого. В этом случае изменение одной части может потребовать изменения другой.
Слишком сильные связи могут негативно отразиться на объекте-программе. В программировании это называется «сильным зацеплением» или «сильной связанностью» и считается плохой практикой.
Сильное зацепление рассматривается как серьезный недостаток, поскольку затрудняет понимание логики модулей, их модификацию, автономное тестирование, а также переиспользование по отдельности.
– Википедия
1.2 Действия и внешние воздействия
В предыдущей главе мы говорили, что изменения, вызванные внешними факторами, называются внешними воздействиями. Кроме этого, внутренние части взаимодействуют между собой, также изменяя объект. Такие изменения мы будем называть действиями.
Внешнее воздействие – изменение, вызванное внешними объектами.
Действие –