Нарушение инкапсуляции
Допустим, вы создали класс, один из атрибутов которого представляет собой массив. Но вместо того чтобы работать с массивом через промежуточные методы (например, предназначенные для создания, удаления, модификации элементов и т. д.), вы в случае необходимости напрямую обращаетесь к массиву. В течение месяца вы уверенно программируете большое «объектно-ориентированное» приложение и благосклонно принимаете хвалу коллег-программистов. Будущее сулит много радостей — премии, оплачиваемый отпуск и даже отдельный кабинет.
Но вот через
месяц после успешного запуска вашего web-приложения
ваш начальник вдруг решает, что массивы в
данном случае не годятся и работать с
информацией нужно только через базу данных.
Какая неприятность! Поскольку вы решили работать с атрибутами напрямую, вам теперь придется просматривать всю программу и везде, где происходят обращения к данным, вносить исправления в соответствии с новым интерфейсом. Задача весьма хлопотная, к тому же чревата риском внесения новых ошибок.
А теперь
давайте посмотрим, что произошло бы при
работе с данными с использованием методов.
Все, что вам пришлось бы сделать при
переходе от массива к базе данных —
перепрограммировать методы. Модификация
автоматически распространяется на все
точки программы, в которых присутствуют
вызовы методов.