|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
||||||
Свойства класов - зачем помещать свойство в приват01.04.2012, 18:23. Показов 7397. Ответов 54
Метки нет (Все метки)
Очень часто встречал такие классы
PS. тут ещё мысля возникла, если в Си (не C++, а простой Си) небыло оператора new то получается небыло утечек памяти?
0
|
||||||
| 01.04.2012, 18:23 | |
|
Ответы с готовыми решениями:
54
Зачем нужно свойство @property (assign)
|
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
| 01.04.2012, 22:47 | |
|
0
|
|
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
||
| 01.04.2012, 23:17 [ТС] | ||
|
0
|
||
| 01.04.2012, 23:24 | |||||||||||
Вопрос в поддержке и расширяемости.
0
|
|||||||||||
| 01.04.2012, 23:27 | |
|
0
|
|
| 01.04.2012, 23:30 | |
|
2
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||
| 01.04.2012, 23:35 | ||
|
0
|
||
|
|
|||||||
| 01.04.2012, 23:37 | |||||||
0
|
|||||||
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 01.04.2012, 23:39 | |
|
0
|
|
|
|
|
| 01.04.2012, 23:43 | |
|
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 01.04.2012, 23:47 | |
|
0
|
|
| 01.04.2012, 23:52 | ||||||
|
а везде и не надо совать.
В той же std есть pair, который структура а вот такой вариант
Тут же TC спрашивал о вариантах, где это полезно может быть, нет разве?
1
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 01.04.2012, 23:55 | |
Сообщение было отмечено как решение
Решение
Kuzia domovenok, ну, если не учитывать, что мои геттеры/сеттеры так не выглядят, потому что список инициализации можно использовать только в конструкторе, то довольно редко. Потому что у меня классы обычно представляют поведение, а не данные, как и должно быть. Сами классы могут пользоваться несколько более высокоуровневыми данными, чем сырые данные стандартных типов, но такие данные я оборачиваю в структуры, описанные внутри классов, в приватной области. Если класс состоит из одних данных и методов доступа, т.е. представляет данные, то надо пересмотреть надобность использования класса.
4
|
|
|
0 / 0 / 0
Регистрация: 21.06.2014
Сообщений: 5
|
|
| 02.04.2012, 00:25 | |
|
Скрытие определённых полей класса(инкапсуляция) - базовый принцип объектно-ориентированного программирования.
для справки: Инкапсуляция (пакетирование) представляет собой механизм, связывающий вместе данные и код, обрабатывающий эти данные, и сохраняющий их от внешнего воздействия и ошибочного использования. Инкапсуляция позволяет создавать объект, являющийся логическим целым, включающим данные и код для работы с этими данными. Объект обеспечивает защиту против случайной или несанкционированной модификации частных (private) составляющих его членов. Закрытые данные или коды (методы) доступны только для других частей этого объекта и недоступны вне его. Открытая часть объекта предназначена для обеспечения контролируемого интерфейса его закрытой части. проще говоря, это нужно для обеспечения защиты данных, которые не должны быть доступны пользователю на прямую. Например, телевизор: мы нажимаем только на определённые кнопки, которые выполняют те или иные функции. Мы же не имеем доступа ко внутренним компонентам телевизора, которые принимают участие в реализации команды. Ибо если мы будем иметь прямой доступ к важным частям телевизора, мы можем что-нибудь изменить и телевизор не будет работать. Так и с программой. Пользователя не должна волновать реализация. Главное, чтобы выполнялись его команды. А программист всегда получит доступ к защищённым данным, если ему нужно исправить неисправность или добавить какую-нибудь функцию. Вот как-то так
0
|
|
| 02.04.2012, 01:28 | |
|
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 02.04.2012, 01:29 | |
|
kravam, нет, если принять, что геттер написан верно и не пропустит неправильные данные. Отладка классов - отдельная история, мы говорим о законченном рабочем коде.
0
|
|
|
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
|
|
| 02.04.2012, 02:50 | |
|
ИМХО, сокрытие в первую очередь нужно, чтобы упростить отладку программы. Например, при моделировании органайзера, мы должны быть твёрдо уверены, что встреча, намеченная в декабре, может проходить только в числах от 1 до 31. В то же время инкапсуляция позволяет делать программы более масштабируемыми. Например, если мы грамотно напишем обобщенный интерфейс доступа к базе данных, то в случае изменения самого сервера( или библиотеки ) БД нам придётся изменить код только в интерфейсе
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 02.04.2012, 02:54 | ||
|
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||
| 02.04.2012, 03:07 | ||
|
И сразу же вопрос- большая ли разница чем ошибочно изменять поля класса- подобными вызовами геттеров или непосредственно обращаясь к полю, сделав его public? Разницы никакой, что так плохо, что эдак. Так что следите, что называется за руками, а не за уровнем доступа к полю.
0
|
||
|
Модератор
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
|
||
| 02.04.2012, 03:23 | ||
|
А меня аргумент "потому, что так правильно" вполне устраивает, если произнесён кем-то сведующим в вопросе. Причины, по которым "так надо", станут понятны по мере приобретения опыта. Читаю книжку Perl Cookbook Тома Кристиансена и Натана Торкингтона (по мере прочтения проникся искренним уважением к авторам, к тому же в самой документации perl сплошь и рядом ссылки на эту книгу). В perl поддержка ООП вообще весьма своеобразно сделана. В частности нет стандартных средств языка для ограничения доступа к данным класса (что, в прочем не мешает истинным параноикам запрятать данные так, что захочешь - не доберёшься), но вот, что пишут авторы по этому поводу:
2
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 02.04.2012, 10:16 | |
|
kravam, Крайне интересно, это каким же макаром, вызов геттера может изменить нечто в классе? Геттер обязан быть константным методом, геттер обязан ничего не менять в классе. И тогда не будет таких проблем, которые вы описываете.
А вот сеттером изменить можешь.
0
|
|
| 02.04.2012, 10:16 | |
|
Зачем всегда инкапсулировать переменные в свойства Зачем нужны автоматически реализуемые свойства?
Зачем использовать поля, если есть свойства? Как назначить свойства блоку div через свойство SetAttribute? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последнея моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|