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

А теперь возникает другой вопрос. Зачем они используются, если ломают

инкапсуляцию?

41 ответов

22 просмотра

а как?

Кто они?

Азамат- Автор вопроса
Anatoly Shirokov
а как?

Ну так, инкапсуляция же не даёт доступ к членам класса другим классам. Разве нет?

Они как раз дополняют инкапсуляцию, а не ломают ее. Увеличивают ее возможности без нарушения принципов.

Азамат
Ну так, инкапсуляция же не даёт доступ к членам кл...

так, со мной это редко, но ты меня запутал.

Так выше уже об этом говорили

Азамат- Автор вопроса
Sergey Anisimov
Они как раз дополняют инкапсуляцию, а не ломают ее...

Ну, может, я не правильно понял значение инкапсуляции.

Азамат
Ну так, инкапсуляция же не даёт доступ к членам кл...

Инкапсуляция (англ. encapsulation, от лат. in capsula) — в информатике размещение в одном компоненте данных и методов, которые с ними работают.

Азамат
Ну так, инкапсуляция же не даёт доступ к членам кл...

инкапсуляция не дает тебе менять данные объекта класса безконтрольно.

Азамат
Ну так, инкапсуляция же не даёт доступ к членам кл...

Инкапсуляция - обобщенная парадигма, в рамках которой семантически сцепленные компоненты помещаются в некоторую готовую к их содержанию сущность. Эта сущность берет на себя ответственность за предоставление доступа к своему содержимому.

Азамат- Автор вопроса
Anatoly Shirokov
инкапсуляция не дает тебе менять данные объекта кл...

А, я то думал, что инкапсуляция вообще запрещает изменять данные вне класса.

Азамат
А, я то думал, что инкапсуляция вообще запрещает и...

ну, тогда бы это был мир функционального программирования :) там все объекты иммутабельны

Азамат- Автор вопроса
Ilya Zviagin
Ну , в общем так, да, проблема-то в чём?

Проблемы нет, просто, задумался.

Ilya Zviagin
Ну , в общем так, да, проблема-то в чём?

Так нет же, в этом и идея. Мы как раз пытаемся демонстрировать, что дает, просто в строго заданном порядке.

Азамат
Я тоже не догоняю.

Вот мне что не понятно, так это то, ЧТО ТАМ ВООБЩЕ может быть непонятно.

Азамат- Автор вопроса
Ilya Zviagin
Вот мне что не понятно, так это то, ЧТО ТАМ ВООБЩЕ...

Проблема моего непонимания заключалась в том, что я думал, что инкапсуляция ПОЛНОСТЬЮ запрещает доступ к члена класса из вне.

Азамат
Я тоже не догоняю.

public - доступ всем protected - доступ только МНЕ и наследникам private - доступ только МНЕ! Всё

Ilya Zviagin
Что кто даёт? Я запутался.

Инкапсуляция не обязана отрезать сущность от внешнего контекста - достаточно только ограничить множество их взаимодействий. В этом и была основная идея, поскольку искомый товарищ упорствует и желает рассматривать инкапсуляцию только с т.з. полной изоляции.

Да

Азамат- Автор вопроса
Ilya Zviagin
ДА, ТАК И ЕСТЬ, ПОЛНОСТЬЮ ЗАПРЕЩАЕТ!

Так если инкапсуляция ПОЛНОСТЬЮ запрещает, тогда зачем на геттеры и сеттеры? Они же ломают само понятие инкапсуляции.

Азамат- Автор вопроса
Ilya Zviagin
Нихера они не ломают, с чего бы?

Если инкапсуляция подразумевает ПОЛНЫЙ запрет на взаимодействие с членами класса, а сеттеры позволяют ВЗАИМОДЕЙСТВОВАТЬ с членами класса, тогда тут несостыковочка.

Азамат
Проблема моего непонимания заключалась в том, что ...

А это потому что Вы отождествляете приватность некоторой сущности и факт ее инкапсулированности. Сущность может оставаться инкапсулированной даже если она доступна из внешнего контекста, пока таковой доступ опосредован и контролируется разделяющей средой (ака классом).

Азамат
Так если инкапсуляция ПОЛНОСТЬЮ запрещает, тогда з...

С какого перепоя ты решил, что ломают? Сеттер -- это же не значит, что есть доступ к мемберу. (его вообще нет), ты можешь только вызывать метод.

Азамат
Если инкапсуляция подразумевает ПОЛНЫЙ запрет на в...

Ну сеттер если тоже будет в привате, то и к ниму ты не обратишься

Азамат
Если инкапсуляция подразумевает ПОЛНЫЙ запрет на в...

Так и есть, полное взаимодействие с ЧЛЕНАМИ ДАННЫХ и запрещается, а ты МЕТОД вызываешь. Если метод приватный, то ты его НЕ ВЫЗОВЕШЬ, если публичный -- вызывай сколько хочешь.

Азамат- Автор вопроса
Ilya Zviagin
Так и есть, полное взаимодействие с ЧЛЕНАМИ ДАННЫХ...

Ну так сеттер - это метод, который позволяет изменять значение члену класса.

Азамат
Ну так сеттер - это метод, который позволяет измен...

Давай начнём с того, что выясним, с чего ты вообще решил что он что-то меняет -- этот метод. На нём написано?

Азамат
Ну так сеттер - это метод, который позволяет измен...

Сеттер же -- член этого класса, часть класса. Ему можно, вот он и меняет.

Азамат
Если инкапсуляция подразумевает ПОЛНЫЙ запрет на в...

ты можешь всех обмануть: void set(int value) { connection.builder().from("юстас").to("алекс").build().send("они вызвали меня с новым значением " + value + "шеф, все пропало"); }

Anatoly Shirokov
ты можешь всех обмануть: void set(int value) { ...

как видишь, никто даже не узнал, что ты написал шпионское ПО

Азамат
Ну так сеттер - это метод, который позволяет измен...

Ты же должен как-то данные менять, в этом и состоит суть программы. Она берёт данные и обрабатывает. Если она ничего не будет менять, она бесполезна.

Азамат
Ну так сеттер - это метод, который позволяет измен...

Имея сеттер, ты даже не обязан иметь соответствующий член данных. Так что что он там меняет -- это внутреннее дело класса. Это и есть инкапсуляция.

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Карта сайта