![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Это относится не только к классам. Строго говоря инкапсуляция не свойство ООП, а свойство структурного программирования. Когда данные принадлежат опредленным структурным единицам (классы, процедуры, функции) и доступ к ним осуществляется только с помощью механизмов самой структурной единицы.
Аналогично, к локальной переменной процедуры нельзя полуить прямой доступ не из данной процедуры. Вот такая вот загогулина.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#12 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#13 |
Заблокирован
Регистрация: 27.08.2009
Сообщений: 569
|
![]()
То есть,всё что описано в закрытом и открытом разделе класса, есть инкапсуляция. А когда мы создаём экземпляр класса, тоесть объект, он является инкапсулированный.Может так?
Последний раз редактировалось Syltan; 08.10.2009 в 14:05. |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
"Сынок, я дал тебе пять яблок..." :D
Инкапсуляция - это общее понятие, концепция такая. Нельзя сказать "вот тут у нас еще инкапсуляция, а вот тут она уже закончилась". |
![]() |
![]() |
![]() |
#15 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#16 |
Заблокирован
Регистрация: 27.08.2009
Сообщений: 569
|
![]() Код:
Данные - это переменные, описанные в самом классе, а не в функциях. Инкапсуляция - это использование экземпляра класса, то есть объекта, который мы получили из-за объеденения даных и код в класс и скрываем реализацию этого объекта? А так правильно? Последний раз редактировалось Syltan; 08.10.2009 в 14:39. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Не правильно. См. пост #11. Выкинь из головы классы. Инкапсуляция это намеренное сокрытие данных. Знаешь как у американских военных? Если тебе для выполнения задания не нужна эта информация, то ты ее знать НЕ ДОЛЖЕН. Вот это и есть принцип, разделяй и властвуй. Создал экземпляр класса и все его внутренние данные доступны только ему (если специально не укзано что-то другое). Второй экземпляр этого же класса не сможет использовать данные первого, если это специально не предусмотрено. Если твои данные и код содержатся не в классе, а в функции это не значит, что инкапсуляция на нее не распрастраняется. Функция имеет определенные интерфейс - обозначение, количество, порядок следования и тип параметров, а также тип возвращаемого результата. А каким образом она достигает результат остальных функций волновать не должно и они не знают о том, какие структуры данных использует для этого данная функция и более того знать им этого не полагается.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 08.10.2009 в 14:49. |
![]() |
![]() |
![]() |
#18 |
Заблокирован
Регистрация: 27.08.2009
Сообщений: 569
|
![]()
1)
Код:
2) Инкапсуляция - скрытие всех, полей, которые использовались для создания этого объекта? |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Икапсуляция - это не только скрытие полей. Отбросьте вы уже классы! Это более общее понятие и рассматривать его следует вне зависимости от ООП. инкапсуляция - это сокрытие механизма работы участка кода от остальных. Речь идет не только о переменных, но и об внутреннем устройстве объекта (опять же не только экземпляра класса). Иными словами чтобы использовать объект Вам нужно только знать его интерфейс и НЕ БОЛЕЕ ТОГО. Я не знаю как работают API-функции, но мне не мешает это их использовать. Ясно? Мне по-барабану - функция ли перед мной, обертка над другой функцией, или это чей-то метод. Я знаю как ее использовать и этого достаточно для получения результата.
Аналогично и в жизни. Я знаю общие принципы работы компьютера, но использую его гораздо эффективней очень большого количества людей, потому что для его использования не требуется его полное описание. Достаточно описать функции устройства и способы управления. Это и называется инкапсуляцией.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 08.10.2009 в 16:24. |
![]() |
![]() |
![]() |
#20 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Инкапсуляция | 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 |