Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2009, 13:38   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Это относится не только к классам. Строго говоря инкапсуляция не свойство ООП, а свойство структурного программирования. Когда данные принадлежат опредленным структурным единицам (классы, процедуры, функции) и доступ к ним осуществляется только с помощью механизмов самой структурной единицы.
Аналогично, к локальной переменной процедуры нельзя полуить прямой доступ не из данной процедуры. Вот такая вот загогулина.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.10.2009, 13:55   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Обращение объектов именно к закрытому полю privat,через функции-членны класса, есть инкапсуляция, или к открытому тоже?
Причем тут обращение? Инкапсуляция это всего лишь способ помещения кода и данных в одной области
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2009, 14:02   #13
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

То есть,всё что описано в закрытом и открытом разделе класса, есть инкапсуляция. А когда мы создаём экземпляр класса, тоесть объект, он является инкапсулированный.Может так?

Последний раз редактировалось Syltan; 08.10.2009 в 14:05.
Syltan вне форума Ответить с цитированием
Старый 08.10.2009, 14:07   #14
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

"Сынок, я дал тебе пять яблок..." :D

Инкапсуляция - это общее понятие, концепция такая. Нельзя сказать "вот тут у нас еще инкапсуляция, а вот тут она уже закончилась".
ds.Dante вне форума Ответить с цитированием
Старый 08.10.2009, 14:21   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может так?
Нет. Ты почитай еще раз мою аналогию с пакетом и автомобилем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2009, 14:34   #16
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Код:
Инкапсуляция это всего лишь способ помещения кода и данных в одной области
Код - это функции-члены класса, в которых описан код.
Данные - это переменные, описанные в самом классе, а не в функциях.
Инкапсуляция - это использование экземпляра класса, то есть объекта, который мы получили из-за объеденения даных и код в класс и скрываем реализацию этого объекта?
А так правильно?

Последний раз редактировалось Syltan; 08.10.2009 в 14:39.
Syltan вне форума Ответить с цитированием
Старый 08.10.2009, 14:41   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не правильно. См. пост #11. Выкинь из головы классы. Инкапсуляция это намеренное сокрытие данных. Знаешь как у американских военных? Если тебе для выполнения задания не нужна эта информация, то ты ее знать НЕ ДОЛЖЕН. Вот это и есть принцип, разделяй и властвуй. Создал экземпляр класса и все его внутренние данные доступны только ему (если специально не укзано что-то другое). Второй экземпляр этого же класса не сможет использовать данные первого, если это специально не предусмотрено. Если твои данные и код содержатся не в классе, а в функции это не значит, что инкапсуляция на нее не распрастраняется. Функция имеет определенные интерфейс - обозначение, количество, порядок следования и тип параметров, а также тип возвращаемого результата. А каким образом она достигает результат остальных функций волновать не должно и они не знают о том, какие структуры данных использует для этого данная функция и более того знать им этого не полагается.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.10.2009 в 14:49.
Utkin вне форума Ответить с цитированием
Старый 08.10.2009, 15:41   #18
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

1)
Код:

Код - это функции-члены класса, в которых описан код.
Данные - это переменные, описанные в самом классе, а не в функциях.
Это определение верно?

2) Инкапсуляция - скрытие всех, полей, которые использовались для создания этого объекта?
Syltan вне форума Ответить с цитированием
Старый 08.10.2009, 16:21   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Икапсуляция - это не только скрытие полей. Отбросьте вы уже классы! Это более общее понятие и рассматривать его следует вне зависимости от ООП. инкапсуляция - это сокрытие механизма работы участка кода от остальных. Речь идет не только о переменных, но и об внутреннем устройстве объекта (опять же не только экземпляра класса). Иными словами чтобы использовать объект Вам нужно только знать его интерфейс и НЕ БОЛЕЕ ТОГО. Я не знаю как работают API-функции, но мне не мешает это их использовать. Ясно? Мне по-барабану - функция ли перед мной, обертка над другой функцией, или это чей-то метод. Я знаю как ее использовать и этого достаточно для получения результата.
Аналогично и в жизни. Я знаю общие принципы работы компьютера, но использую его гораздо эффективней очень большого количества людей, потому что для его использования не требуется его полное описание. Достаточно описать функции устройства и способы управления. Это и называется инкапсуляцией.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 08.10.2009 в 16:24.
Utkin вне форума Ответить с цитированием
Старый 08.10.2009, 16:26   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Инкапсуляция - скрытие всех, полей, которые использовались для создания этого объекта?
Я бы так не сказал. Это все равно что ранетку назвать пепенкой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инкапсуляция psycho-coder Общие вопросы Delphi 4 14.08.2009 13:04
Инкапсуляция пакетов TCP/IP bumerung Общие вопросы C/C++ 2 06.06.2009 23:19
ООП инкапсуляция albatros Общие вопросы Delphi 2 03.02.2009 08:28
Инкапсуляция Lyxor Общие вопросы Delphi 0 29.06.2008 13:06