Форум программистов, компьютерный форум CyberForum.ru

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

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

C++ Типы данных в ООП
C++ Инкапсуляция и сокрытие данных не одно и тоже?
C++ ООП.Разработать структуру элементов данных класса в виде динамической структуры данных
C++ Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять.
Какие SQL запросы нужны для того, чтобы можно было отображать материал базы данных в комбоксе. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
02.06.2010, 22:43     Для чего было придумано сокрытие данных в ООП? #2
читай книжки там все есть
Применение методов доступа позволяет скрыть от пользователя детали хранения данных в обектах и, в то же время, снабжает их методами использования этих данных. изменяя способы хранения и обработки данных в классе не придется изменять его методы
Nazz
WEB-developer
 Аватар для Nazz
895 / 726 / 11
Регистрация: 12.03.2009
Сообщений: 2,802
Записей в блоге: 2
02.06.2010, 22:47     Для чего было придумано сокрытие данных в ООП? #3
например: естли нескольо разных програмистов пишут одну програму по частям, и на зывают переменные однаковыми именами, то естли они огласят их ка паблик, при компиляции программы будут ошыбки, а естли же они огласят их как приват, то никаких ошыбок и збоев программа не даст...
вот такое основное назначение типов скрытости переменных..
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
03.06.2010, 00:27  [ТС]     Для чего было придумано сокрытие данных в ООП? #4
Вот!
Nazz, спасибо!
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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 области ничего подобного сделать не получится. компилятор начнет ругаться.
плюс к этому с помощью функций можно обеспечивать доступ к данным в любом режиме:
- только чтение
- чтение и запись
- только запись!

в общем вдумывайтесь. и действительно читайте книги.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
03.06.2010, 01:39     Для чего было придумано сокрытие данных в ООП? #6
Nazz, написал немного не то.
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?

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

Единственный выигрыш- сокращение кода за счёт перегрузки функций.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.06.2010, 09:02     Для чего было придумано сокрытие данных в ООП? #7
Цитата Сообщение от kravam Посмотреть сообщение
Если несколько программёров пишут прогу, то тогда уж им все переменные придётся объявлять privat, что ли?
я вообще не понимаю, как с помощью классов/структур вы собираетесь защититься от дублирования имен. для этого есть нэймспейсы.
Цитата Сообщение от kravam Посмотреть сообщение
А вообще я уже говорил где-то.
Использование классов и, сооответственно private это блажь
а об этом говорить с вами больше не хочется.
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
04.06.2010, 09:22     Для чего было придумано сокрытие данных в ООП? #8
В реальном мире все большие и сложные системы устроены примерно одинаково. Они состоят из довольно однотипных сложных подсистем, которые обмениваются друг с другом довольно простыми сигналами. Примеры: армия, муравейник, многоклеточный организм.
Когда программные системы стали большими и сложными, они поневоле стали устраиваться так же, потому что иначе не работает.
Объект класса - это сложная подсистема сложной программы, обменивающаяся с другими подсистемами простыми сообщениями в виде интерфейсных функций.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
04.06.2010, 11:25     Для чего было придумано сокрытие данных в ООП? #9
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
04.06.2010, 11:29     Для чего было придумано сокрытие данных в ООП? #10
Цитата Сообщение от kravam Посмотреть сообщение
В принципе согласен, только говорить, что "иначе не работает" неправомерно.
Достаточно большие и достаточно сложные системы иначе не работают.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
04.06.2010, 11:31     Для чего было придумано сокрытие данных в ООП? #11
Сказать всё, что угодно можно...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 19:22     Для чего было придумано сокрытие данных в ООП?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
snake32
 Аватар для snake32
1301 / 944 / 119
Регистрация: 26.02.2009
Сообщений: 3,482
Записей в блоге: 5
15.09.2011, 19:22     Для чего было придумано сокрытие данных в ООП? #12
Цитата Сообщение от kravam Посмотреть сообщение
Сказать всё, что угодно можно...
Это всмысле что достаточно большие и сложные проекты без продуманной архитектуры работают?
Возможно, другое дело КАК работают? Дорабатывать и развивать такой проект очень и очень....и очень и очень сложно. Бесконечные, неочевидные баги (иногда очень примитивные) если внимательно всмотрется хаос кода. Чужим, непосвящёным программистам в баго-архитектуре сложно связать концы с концами. Повторное использование кода невозможно.
В итоге, конкурировать на рынке такой продукт сможет только если цена упадёт в несколько раз.

Не по теме:

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

Yandex
Объявления
15.09.2011, 19:22     Для чего было придумано сокрытие данных в ООП?
Ответ Создать тему
Опции темы

Текущее время: 19:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru