![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Syltan |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Вот, вроде прочитал что такое инкапсуляция, но до конца не могу понять. Вот определение Википедии.
-----------------------------------------------------------------------
ВОПРОС: Инкапсуляция - это,когда я создал объект в закрытом разделе класса в функции мэин? То есть например я объявил в привате функцию
А затем:
Это называется инкапсуляция? Это сообщение отредактировал(а) Syltan - 7.10.2009, 22:17 |
||||||||
|
|||||||||
NightmareZ |
|
|||
![]() [хакер] ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 10.8.2006 Репутация: 0 Всего: 13 |
Убейте меня тапком
![]() ![]() ![]() ![]() ![]() -------------------- NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш Ely-Art.ru - наша маленькая домашняя арт-студия mugcraft.ru - кружки на любой вкус |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
FortMax |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 2.10.2006 Где: Россия, г. Бироби джан ЕАО Репутация: нет Всего: 5 |
Syltan, инкапсуляция подразумевает разделение програмистов на разработчиков классов(те кто их разрабатывает) и пользователей(те кто используют эти классы: их методы и свойства). Так вот инкопсуляция это когда, пользователю не надо вникать, что "внутри" класса и как он раюотает, он просто использует документированный интерфейс этого класса, т.е. разработчик класса регламентирует какие свойства и методы что делают, а пользователь их просто использует ...
если приводить аналогию с реальной жизнью, то можно для примера взять телевизор(класс), есть разработчик и конечный пользователь, и есть инструкция как им пользоваться(документация) и есть пользовательский интерфейс(наприметр пульт ду), так вот мы хотим включить телевизор(применить метод), для этого нам не надо разбираться что при этом будет происходить внутри телевизора!!! мы просто берем пульт ду и жмем кнопку(применяем метод) примерно так ![]() Это сообщение отредактировал(а) FortMax - 8.10.2009, 08:10 -------------------- ![]() |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
интересно будет посмотреть на полиморфизм и наследование в исполнении Syltan ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Аналогию, наверное надо проводить так: Разработка микросхем (каждая представляет собой класс) - далее разработчик телевизора (состоит из микросхем). А вот чел, которых жамкает на пульте кнопки - это наш конечный пользователь собственно программы. Ему воообще обсалютно все по барабану - и микросхемы и узлы - ему нужна картинка и звук. Прсто многих сбивает с толку фраза "скрыто от пользователей". Пользователем в данном случае считается такой же программер, но следующего этапа - когда из более элементарных классов собирается нечто с более расширенным функционалом. Такому "пользователю" не должно быть интересно как устроен класс, которым он пользуется. Если бы еще на практике так всегда было - чтобы классы, которыми пользуешься, так хорошо работали, чтобы было не нужно в них ковыряться. ![]() |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Это называется Compile Error (попытка обратится к private методу). Заинкапсулировали, понимаешь, сову Юру по самое нехочу ![]() |
||||||
|
|||||||
Syltan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
То есть, получается, что любой объект, созданный именем класса, является инкапсулированный? И не важно, этот объект создаётся, обратившись к закрытому разделу класса или открытому. Правильно?
Это сообщение отредактировал(а) Syltan - 8.10.2009, 12:05 |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
cutwater |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Syltan, сначала научитесь формулировать мысли и излагать их на русском языке. Тогда отпадет необходимость в вопросе. То что вы пишете - несвязный бред. Определение Вам дали выше, попытайтесь все таки разобраться хотя бы в терминологии и тогда уже задать корректный вопрос. // у меня складывается ощущение что человек видит язык второй раз и сразу полез в ООП. постановка вопроса как бы намекает. Это сообщение отредактировал(а) cutwater - 8.10.2009, 12:33 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Не спешите возмущаться, мы еще до полиморфизма не дошли. ![]() Интерсено, какую картинку zim22 на эту тему пришлет? ![]() |
|||
|
||||
Syltan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Извиняюсь просто писал сразу, без формулировки.
Обращение объектов именно к закрытому полю privat,через функции-членны класса, есть инкапсуляция, или к открытому тоже? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
Syltan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
То есть,всё что описано в закрытом и открытом разделе класса, есть инкапсуляция. А когда мы создаём экземпляр класса, тоесть объект, он является инкапсулированный. Может так?
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Инкапсуляция - один из механизмов сокрытия информации (сокрытия деталей реализации). Механизм этот работает на уровне классов. В нормальных языках программирования существует ещё качественный механизм сокрытия информации на уровне модулей. Но в С++ нет модулей...
![]() Полезной аналогией будет модель клиент-сервер. Есть некий модуль/класс, уже написанный Вами или третьим лицом. Будем называть его серверным. Код, который Вы пишете в данный момент будем называть клиентским. ![]() Сокрытие деталей реализации - квинтэссенция неимоверно важного принципа, используемого при проектировании (и не только ПО) - принципа абстракции. Серверный класс/модуль представляет из себя ничто иное, как "чёрный ящик". Механизм его работы не важен при написании клиентского кода. Важно лишь знать что нужно получить "на выходе" и что для этого нужно подать "на вход". При этом зависимость результатов от входных данных известна. Именно её и описывает интерфейс. Именно перечисленные в нём экспортируемые элементы и есть "входы" и "выходы". Только через них мы может "общаться" с нашим "чёрным ящикок". Как то так... -------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |