Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/39: Рейтинг темы: голосов - 39, средняя оценка - 4.51
8 / 8 / 0
Регистрация: 17.04.2010
Сообщений: 112

Для чего было придумано сокрытие данных в ООП?

02.06.2010, 22:14. Показов 7329. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто может понятно объяснить это? Т.е. для чего мы объявляем поля класса как private , почему обычно не объявляют их как public ? для чего было придумано сокрытие данных, каково его предназначение и в чем смысл?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2010, 22:14
Ответы с готовыми решениями:

Очистка полей ввода данных и сокрытие группы объектов набора данных
Добавьте в обработчик button2 очистку полей ввода данных и сокрытие группы объектов набора данных, как это сделано в обработчике button3....

Потоки и сокрытие данных
Всем доброго времени суток. Появился вопрос, касающийся потоков. Есть класс, в котором имеются функции для вывода внутренних данных в...

Сокрытие повторяющихся данных при постороении
Здравствуйте уважаемые! Моя проблема проста, но тупиковая. А может и наоборот. Значит, есть данные из БД. На их основе формируется...

11
31 / 30 / 19
Регистрация: 18.01.2010
Сообщений: 123
02.06.2010, 22:43
читай книжки там все есть
Применение методов доступа позволяет скрыть от пользователя детали хранения данных в обектах и, в то же время, снабжает их методами использования этих данных. изменяя способы хранения и обработки данных в классе не придется изменять его методы
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
02.06.2010, 22:47
например: естли нескольо разных програмистов пишут одну програму по частям, и на зывают переменные однаковыми именами, то естли они огласят их ка паблик, при компиляции программы будут ошыбки, а естли же они огласят их как приват, то никаких ошыбок и збоев программа не даст...
вот такое основное назначение типов скрытости переменных..
2
8 / 8 / 0
Регистрация: 17.04.2010
Сообщений: 112
03.06.2010, 00:27  [ТС]
Вот!
Nazz, спасибо!
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
03.06.2010, 00:44
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Nazz Посмотреть сообщение
например: естли нескольо разных програмистов пишут одну програму по частям, и на зывают переменные однаковыми именами, то естли они огласят их ка паблик, при компиляции программы будут ошыбки, а естли же они огласят их как приват, то никаких ошыбок и збоев программа не даст...
вот такое основное назначение типов скрытости переменных..
бред какой...
допустим есть класс, описывающий целочисленный массив. в нем есть собственно указатель на данные и переменная хранящая размер. в нормальной реализации эти данные естественно будут объявлены как private, либо protected. есть так же метод, который допустим сортирует этот массив.
C++
1
2
3
4
5
6
7
8
class array
{
public:
   void sort();
private:
   size_t size;
   int * ptr;
};
допустим их объявили как public.
C++
1
2
3
4
5
6
7
class array
{
public:
   void sort();
   int * ptr;
   size_t size;
};
все мы знаем, что для сортировки массива необходимо знать его размер. а так как размер этого класса определен и автоматически корректируется, то метод sort можно вызывать без дополнительных данных.
так как сейчас доступ к переменной size открыт, пользователь класса может безнаказанно ее изменять.
C++
1
2
array a;
a.size = 15;
после чего при выполнении сортировки программа "успешно рушится", например по причине выхода за пределы массива.
так же и сами данные (ptr) лежат в открытом виде. что также позволяет провести такие операции как например.
C++
1
delete [] a.ptr
что вообще освобождает память.
если данные лежат в private области ничего подобного сделать не получится. компилятор начнет ругаться.
плюс к этому с помощью функций можно обеспечивать доступ к данным в любом режиме:
- только чтение
- чтение и запись
- только запись!

в общем вдумывайтесь. и действительно читайте книги.
5
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
03.06.2010, 01:39
Nazz, написал немного не то.
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?

А вообще я уже говорил где-то.
Использование классов и, сооответственно private это блажь

Единственный выигрыш- сокращение кода за счёт перегрузки функций.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
03.06.2010, 09:02
Цитата Сообщение от kravam Посмотреть сообщение
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?
я вообще не понимаю, как с помощью классов/структур вы собираетесь защититься от дублирования имен. для этого есть нэймспейсы.
Цитата Сообщение от kravam Посмотреть сообщение
А вообще я уже говорил где-то.
Использование классов и, сооответственно private это блажь
а об этом говорить с вами больше не хочется.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
04.06.2010, 09:22
В реальном мире все большие и сложные системы устроены примерно одинаково. Они состоят из довольно однотипных сложных подсистем, которые обмениваются друг с другом довольно простыми сигналами. Примеры: армия, муравейник, многоклеточный организм.
Когда программные системы стали большими и сложными, они поневоле стали устраиваться так же, потому что иначе не работает.
Объект класса - это сложная подсистема сложной программы, обменивающаяся с другими подсистемами простыми сообщениями в виде интерфейсных функций.
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
04.06.2010, 11:25
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
04.06.2010, 11:29
Цитата Сообщение от kravam Посмотреть сообщение
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
Достаточно большие и достаточно сложные системы иначе не работают.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
04.06.2010, 11:31
Сказать всё, что угодно можно...
0
 Аватар для snake32
3511 / 1694 / 236
Регистрация: 26.02.2009
Сообщений: 8,471
Записей в блоге: 6
15.09.2011, 19:22
Цитата Сообщение от kravam Посмотреть сообщение
Сказать всё, что угодно можно...
Это всмысле что достаточно большие и сложные проекты без продуманной архитектуры работают?
Возможно, другое дело КАК работают? Дорабатывать и развивать такой проект очень и очень....и очень и очень сложно. Бесконечные, неочевидные баги (иногда очень примитивные) если внимательно всмотрется хаос кода. Чужим, непосвящёным программистам в баго-архитектуре сложно связать концы с концами. Повторное использование кода невозможно.
В итоге, конкурировать на рынке такой продукт сможет только если цена упадёт в несколько раз.

Не по теме:

Если мне вдруг повезёт, и я открою свою софтверную компанию, то первым делом всех программеров... ну не то что бы заставлю.... это условие будет при приёме на работу) прочитать Чистый код. Далее, продумать архитектуру проекта. И только после чательного продумывания программировать. А не наоборот.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2011, 19:22
Помогаю со студенческими работами здесь

Инкапсуляция и сокрытие данных не одно и тоже?
Вопрос:защита данных от несанкционированного доступа другими функциями называется?я ответил инкапсуляция,а в ответе сокрытие данных.Это не...

Это и есть так называемое сокрытие данных?
#include <iostream> using namespace std; class myclass { int a; public: int &geta(); } myclass1;

ООП, БД для хранения данных о сотрудниках предприятия
Написать программу с помощью объектно ориентированного программирования, которая создаст базу данных для хранения информации о сотрудниках...

Не знаю с чего начать в ООП
Народ, вообщем дело такое, вроде бы прочел не одну книгу по ооп на php теоритически вроде все знаю, но не знаю как начать писать сайт....

Такое уже придумано или еще нет?
Не знаю в какой раздел пихнуть чтобы найти того кто хоть чего то знает У меня несколько работающих экранов - 3 компа, 3 экрана, 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru