170 похожих чатов

Class A { public: A(int x_, int y_)

: x(x_), y(y_) {}

void setX(int x_) { x = x_; }
void setY(int y_) { y = y_; }

int& getX() { return x; }
int& getY() { return y; }

private:
int x;
int y;
};

А такой класс нарушает инкапсуляцию ? Я в том смысле что он раскрывает детали реализации. Но вот вопрос одно ли это тоже ?
Т.е. раскрыть детали реализации == нарушить инкапсуляцию ?

36 ответов

11 просмотров

Каким образом он раскрывает детали реализации?

Да, по сути это одно и тоже

не раскрывает и не нарушает

int& getX() { return x; } --- зачем по ссылке то? Есть же set

Danya🔥
Раскрывает и нарушает

Ну это всё очень глубоко философский вопрос...

Ilya Zviagin
Ну это всё очень глубоко философский вопрос...

а какая здесь философия? открыл доступ к неконтролируемому изменению внутреннего состояния объекта - получи нарушение инкапсуляции

Смотря что понимать под инкапсуляцией С одной стороны - x и y всё ещё остаются внутри класса, они инкапсулированы

> Т.е. раскрыть детали реализации == нарушить инкапсуляцию ? Нет, не одно и то же

Danya🔥
Нет, они не инкапсулированны

Они будут инкапсулированы даже если их просто поместить в namespace

Kirill 🚜
Они будут инкапсулированы даже если их просто поме...

Ты не понимаешь что такое инкапсуляция кажется

Danya🔥
Ты не понимаешь что такое инкапсуляция кажется

У неё много определений, придерживаться какого-то одного и исключать другие - это неправильно

Ilya Zviagin
Так он может добавить контроль-то...

если он выставляет ссылку, он теряет контроль

Kirill 🚜
У неё много определений, придерживаться какого-то ...

У неё одно определение — сокрытие реализации Здесь реализация не скрывается

Короче подставь const перед int& и не будет проблем

Illia Palkin- Автор вопроса
Kirill Bolshakov
Короче подставь const перед int& и не будет пробле...

Выглядит не лучше обычной ссылки на инт

Illia Palkin
Выглядит не лучше обычной ссылки на инт

лучше - менять нельзя значение под ней

Illia Palkin- Автор вопроса
Kirill Bolshakov
лучше - менять нельзя значение под ней

Ну ссылку на инт уже такое себе возравщать. А если там какой-то класс большой, с помощью которого нужно что-то сделать, то я нарушу таким образом law of demeter

Illia Palkin- Автор вопроса
Kirill Bolshakov
кого нарушишь?

https://en.wikipedia.org/wiki/Law_of_Demeter

Illia Palkin
https://en.wikipedia.org/wiki/Law_of_Demeter

И в чём нарушение, если передавать по const T& большой класс из геттера?

Illia Palkin- Автор вопроса
Kirill Bolshakov
И в чём нарушение, если передавать по const T& бол...

Там есть секция In object-oriented programming. Что непонятного ?

Illia Palkin
Там есть секция In object-oriented programming. Чт...

Как это к твоему геттеру относится? Возврат какого-нибудь std::string это возврат свойства просто

Illia Palkin- Автор вопроса
Illia Palkin
Там есть секция In object-oriented programming. Чт...

Хорошо, а какое отношение это имеет к мультипарадигменному C++?

Похожие вопросы

Обсуждают сегодня

анрей С какой целью зашёл?
КТ315
42
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
15
Я не очень много работал с потоками, тут возник вопрос - если будет одновременный доступ к памяти из двух разных потоков, это само по себе приведет к ошибке?
The Bird of Hermes
25
Слушайте, никак не могу заставить работать сортировку в TClientDataSet! Вроде все делаю правильно, создаю индекс, присваиваю его название ClientDataSet1.IndexName, первый раз...
Ivan Burnatov
7
а вот интересный вопрос появляется: допустим у нас есть приложение с системой модулей. Будет ли считаться система модуль+прога ассемблерной программой если: а) Прога на Си, м...
Mixail Frolov
29
я в заголовке имплементировал функцию. В заголовке стоят гарды. Но я все равно получаю multiple definitions. Как это может происходить?
Павλо 🇺🇦
15
как можно вывести первые 100 символов поля content на странице?
Artem
10
Или у тебя COMChecker ловит только свои сообщения, которые он отправил? Не знаю, как у тебя он работает.
КТ315
11
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Как это? А скрин ошибки хоть есть?
Александр (Rouse_) Багель
14
Карта сайта