1. Что входит в понятие «интерфейс объекта»?
Интерфейс объекта — это набор общедоступных методов и свойств, с помощью которых внешний код может взаимодействовать с объектом. Интерфейс определяет, какие операции над объектом разрешены, а также как именно эти операции должны быть вызваны. Он скрывает внутреннюю реализацию и предоставляет только необходимую функциональность.
2. Чем различаются общедоступные и скрытые данные и методы в описании классов?
Общедоступные данные и методы (public) доступны из любой точки программы, где виден объект. Они предназначены для взаимодействия объекта с внешним миром. Скрытые данные и методы (private) доступны только внутри класса, в котором они определены. Они используются для реализации внутренней логики объекта и не предназначены для прямого изменения извне.
3. Почему рекомендуют делать доступ к полям объекта только с помощью методов?
Доступ к полям объекта через методы рекомендуется, чтобы обеспечить инкапсуляцию. Это позволяет контролировать, каким образом данные изменяются и считываются, защищает данные от некорректных изменений, обеспечивает возможность проверки значений и сохранения внутренней целостности объекта.
4. Что такое свойство? Зачем во многие языки программирования введено это понятие?
Свойство — это конструкция, которая предоставляет доступ к данным объекта через методы, но с синтаксисом, напоминающим работу с полями. Свойства упрощают работу с объектами, делая код более читаемым и интуитивно понятным. Это понятие введено для удобства, чтобы объединить контроль над доступом (с помощью методов) и простоту использования (как у полей).
5. Почему методы доступа, которые использует свойство, делают закрытыми?
Методы доступа, используемые свойством, делают закрытыми для соблюдения принципа инкапсуляции. Это защищает внутренние данные от прямого изменения извне, но при этом предоставляет контролируемый доступ к этим данным через свойства.
6. Зачем нужны свойства «только для чтения»? Приведите примеры.
Свойства «только для чтения» нужны, чтобы предоставить возможность внешнему коду получать данные объекта, не позволяя их изменять. Пример: свойство Площадь у объекта Круг, вычисляемое на основе радиуса, должно быть доступно только для чтения. Это позволяет избежать несоответствий между свойствами объекта.
7. Подумайте, в каких ситуациях может быть нужно свойство «только для записи» (которое нельзя прочитать). Подумайте, как ввести такое свойство в описание класса.
Свойства «только для записи» могут использоваться, если требуется зафиксировать информацию или изменить внутреннее состояние объекта без возможности обратного чтения. Например, для записи конфиденциальных данных или логирования.