Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/24: Рейтинг темы: голосов - 24, средняя оценка - 4.79
limelight
8 / 8 / 0
Регистрация: 17.04.2010
Сообщений: 112
#1

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

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

Кто может понятно объяснить это? Т.е. для чего мы объявляем поля класса как private , почему обычно не объявляют их как public ? для чего было придумано сокрытие данных, каково его предназначение и в чем смысл?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 22:14
Ответы с готовыми решениями:

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

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

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

Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять.
Для чего нужно писать в int main() в скобках всякие args потом объявлять...

Какие SQL запросы нужны для того, чтобы можно было отображать материал базы данных в комбоксе.
Помогите пожалуйста, какие SQL запросы нужны для того чтобы можно было...

11
Oleg462
31 / 30 / 19
Регистрация: 18.01.2010
Сообщений: 123
02.06.2010, 22:43 #2
читай книжки там все есть
Применение методов доступа позволяет скрыть от пользователя детали хранения данных в обектах и, в то же время, снабжает их методами использования этих данных. изменяя способы хранения и обработки данных в классе не придется изменять его методы
0
Nazz
WEB-developer
897 / 728 / 80
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
02.06.2010, 22:47 #3
например: естли нескольо разных програмистов пишут одну програму по частям, и на зывают переменные однаковыми именами, то естли они огласят их ка паблик, при компиляции программы будут ошыбки, а естли же они огласят их как приват, то никаких ошыбок и збоев программа не даст...
вот такое основное назначение типов скрытости переменных..
2
limelight
8 / 8 / 0
Регистрация: 17.04.2010
Сообщений: 112
03.06.2010, 00:27  [ТС] #4
Вот!
Nazz, спасибо!
0
fasked
Эксперт С++
4981 / 2560 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.06.2010, 00:44 #5
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от 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
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
03.06.2010, 01:39 #6
Nazz, написал немного не то.
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?

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

Единственный выигрыш- сокращение кода за счёт перегрузки функций.
0
fasked
Эксперт С++
4981 / 2560 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.06.2010, 09:02 #7
Цитата Сообщение от kravam Посмотреть сообщение
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?
я вообще не понимаю, как с помощью классов/структур вы собираетесь защититься от дублирования имен. для этого есть нэймспейсы.
Цитата Сообщение от kravam Посмотреть сообщение
А вообще я уже говорил где-то.
Использование классов и, сооответственно private это блажь
а об этом говорить с вами больше не хочется.
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
04.06.2010, 09:22 #8
В реальном мире все большие и сложные системы устроены примерно одинаково. Они состоят из довольно однотипных сложных подсистем, которые обмениваются друг с другом довольно простыми сигналами. Примеры: армия, муравейник, многоклеточный организм.
Когда программные системы стали большими и сложными, они поневоле стали устраиваться так же, потому что иначе не работает.
Объект класса - это сложная подсистема сложной программы, обменивающаяся с другими подсистемами простыми сообщениями в виде интерфейсных функций.
1
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
04.06.2010, 11:25 #9
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
04.06.2010, 11:29 #10
Цитата Сообщение от kravam Посмотреть сообщение
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
Достаточно большие и достаточно сложные системы иначе не работают.
0
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,528
04.06.2010, 11:31 #11
Сказать всё, что угодно можно...
0
snake32
1649 / 1102 / 193
Регистрация: 26.02.2009
Сообщений: 4,088
Записей в блоге: 5
15.09.2011, 19:22 #12
Цитата Сообщение от kravam Посмотреть сообщение
Сказать всё, что угодно можно...
Это всмысле что достаточно большие и сложные проекты без продуманной архитектуры работают?
Возможно, другое дело КАК работают? Дорабатывать и развивать такой проект очень и очень....и очень и очень сложно. Бесконечные, неочевидные баги (иногда очень примитивные) если внимательно всмотрется хаос кода. Чужим, непосвящёным программистам в баго-архитектуре сложно связать концы с концами. Повторное использование кода невозможно.
В итоге, конкурировать на рынке такой продукт сможет только если цена упадёт в несколько раз.

Не по теме:

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

0
15.09.2011, 19:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 19:22

ООП.Разработать структуру элементов данных класса в виде динамической структуры данных
Здравствуйте, получил задание, но немного недопонимаю как это сделать, с чего...

Для чего функции поместили в "тип данных"?
Вопрос про функции. Для чего функции поместили в "тип данных"?

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru