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 ответов

8 просмотров

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

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

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

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++?

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

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

А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
3
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Подскажите, почему в правом коде с1 дополняется до 8байт, а не до 4?
Sergey
8
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
reply = (struct pam_response *)malloc(sizeof(struct pam_response)); reply[0].resp = strdup(password); Это так можно ображаться к структуре за указателем, помимо (*reply)...
Юлиан🦉 Колессиков ⛵️
14
#delphi кто-нибудь встречал официальное описание директивы {$ALIGN ON} (подчеркиваю - официальное, а не левый источник)? какой именно режим выравнивания включится? будут ли в...
Viktor Akselrod
14
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Карта сайта