Является ли это нарушением инкапсуляции? Псевдокод:class Changeable {
private state: string;
public createSnapShot(): Snapshot {
new Snapshot(state);
}
}
class Snapshot {
private state: string
public Snapshot(string state1) {
state = state1;
};
public getState() {
print(state);
}
}
Можно ли сказать, что метод getState() нарушает инкапсуляцию Changeable тем, что выставляет приватное поле Changeable публичным методом? Если нет, то в каком случае инкапсуляция будет нарушена?

22 Мар 2021 в 20:02
145 +1
1
Ответы
1

Да, метод getState() нарушает инкапсуляцию Changeable, поскольку он позволяет получить доступ к приватному полю state из внешнего класса. Инкапсуляция нарушается, когда приватные поля или методы класса доступны извне класса, не соблюдая принцип доступа к объекту только через его публичные методы.

Для сохранения инкапсуляции в данном случае метод getState() должен быть удален из класса Snapshot, а доступ к переменной state должен осуществляться только через методы класса Changeable.

17 Апр в 20:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 622 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир