Является ли это нарушением инкапсуляции? Псевдокод: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
186 +1
1
Ответы
1

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

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

17 Апр 2024 в 20:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир