![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
namespace - это вроде контейнера, а publc - разрешает доступ как из других namespase-ов, так и внутри того, где объявлен?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
mes, такой вариант: поддержка ООП. То есть:
инкапсуляция -- private наследование -- protected public -- вроде "побочного эффекта", т.к. оба модификатора в той или иной степени запретительные |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не понял мысли.. Добавлено через 1 минуту и 30 секунд П.С. namespace это не class |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
mes, я сейчас action script3 изучаю, там вместо ns - package и есть еще один модификатор доступа internal - для доступа только внутри пакета. появились вопросы о смысле модификаторов доступа. Сейчас в голове сложилась такая вот схема. Вроде логично объясняет смысл модификаторов (кроме internal - на это, видимо, есть нюанс виртуальной машины flash'a).
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
класс предоставляет клиенту набор услуг. этот набор содержится в его public части |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
ага, упустил из виду. Не знаю, как у Старуструпа, но в вики нашел определение, что это не только сокрытие, но и предоставление интерфейса. Тогда получается, что инкапсуляцию обеспечивают private и public. Прямо как инь и янь А наследование -- protected. |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
Gunslinger, я не понимаю о чём ты говоришь. давай разбираться.
"это" - это что?
каким образом public обеспечивает инкапсуляцию? |
||||
|
|||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
zim22, про инкапсуляцию говорю. Вот: "Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта." У с++ по умолчанию private, поэтому нужно еще обеспечить доступ - вот тебе public.
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Проблема в том, что я знаю ООП не зная его. Такое неосознанное незнание. На днях столкнулся с модификаторами доступа в другом языке и понял это. Теперь только осознаю смысл модификаторов. А запостил тему, чтобы окончательно закрепить новую информацию.
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
такого не бывает. почитай книги по "объектно-ориентированному анализу/проектированию". я сейчас читаю "Объектно-ориентированный анализ и проектирование с примерами приложений." 3 издание. Гради Буч. но я очень не рекомендую повторять мою ошибку. русский перевод просто кишит неточностями/ошибками перевода. есть смысл подождать исправленную версию. след.книгу, которую я буду читать называется "Применение UML и шаблонов проектирования". Ларман. её и рекомендую |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
в С++, в отличие от более поздних языков, нет модификаторов доступа для неймспесов, только для классов
то есть ты не можешь с помощью какого-то ключевого слова открыть функцию класса только для классов из данного неймспейса |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ни private ни public и ни protected не имеют отношения ни к инкапсуляции ни к наследованию. (Хотя public/private еще можно к инкапсуляции за уши притянуть, но лучше не надо - ушей жалко |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Ощущение такое, как-будто чел знает какой-то язык, и пытается провести параллель. Или еще что-то...
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Gunslinger |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
т.е. они - не следствие введения ООП, а следствие увеличения ошибок в коде из-за усложняющихся проектов?
это тоже есть. Добавлено через 2 минуты и 41 секунду
ок. повтыкаю как время будет |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Они - особенности реализации языка С++. Имеют отдаленное отношение к инкапсуляции (позволяют скрыть детали реализации от пользователя класса) Возможны и другие методы реализации инкапсуляции |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
xvr, что значит особенности? "Мы так захотели" или "На то были причины"?
|
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Я об этом же. В результате напоминания zim22 пришел к выводу, что модификаторы доступа - не часть ООП, а следствие ООП, так сказать его поддержка. Т.е. эволюционный процесс: программы разрастались, взаимосвязи усложнялись. В итоге придумали ООП. Разрабатывать и писать стало проще, однако человеческий фактор никуда не делся: изменение значений переменных чужих объектов, в результате - их некорректная работа. Так же с доступами к чужим наследникам и наследников друг к другу. Это сообщение отредактировал(а) Gunslinger - 30.9.2009, 18:17 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
mes, я не пойму, я непонятно написал перед твоим постом или ты не читал?
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Скорее 'так получилось' |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
читал, и именно поэтому написал ниже пост. Пост писался, не для уточнения того, что модификаторы относятся к реализации, а то что реализации "одного и того же" ООП могут очень сильно различаться. Это связано как с особенностями самого языка, так и со взглядом авторов на ООП, быть может есть еще и другие причины.
Я так понял, что Вы говорите, что вначале внедрили ООП в язык, а потом, вследствии людского фактора, добавили туда модификаторы доступа. хотя в принципе и отражает реальность, но мне кажется потеряна суть происходившего. имхо лучше так : было известно что надо добиться инкапсуляции объекта, но в связи с особенностями C++ решили для достижения этой и некоторых других целей, использовать модификаторы доступа. Вполне могли поступить по-другому, например, считать все содержимое класса приватным, а доступность открывалась бы через интерфейсы. P.S. вышесказанное приведено в грубом упрощении. Это сообщение отредактировал(а) mes - 30.9.2009, 20:51 |
||||
|
|||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Да, именно так. Далее вы привели еще один вариант. В итоге получилось 2 хронологических варианта: 1. Модификаторы ввели после ООП, для уменьшения ошибок доступа. 2. Модификаторы ввели вместе с ООП. Как я понял по вашему предположению - для поддержки реализации ООП. Во втором варианте мне непонятно, было ли введение модификаторов "теоретической" причиной (ООП - на бумаге и дальнейшие размышления) или "практической" (наблюдение за разработкой ПО и фиксация ошибок, вызванных использованием ООП), или и то, и другое. Может быть это уже такой тонкий нюанс, который не нужен для интуитивного понимания модификаторов и ООП, но почитать об этом было бы любопытно. Мне по крайней мере. Интересно, есть ли вообще подобная "стенография" развития ООП. Это сообщение отредактировал(а) Gunslinger - 1.10.2009, 08:24 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Есть еще третий вариант, модификаторы появились до того, как язык получил более менее полную подержку ООП
Бьерн Страуструп - Дизайн и Эволюция C++ |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Ну смотря что именно подразумевать под этим вопросом- там в общих чертах, расказывается почему выбрана такая модель защиты.. Ну а если интересует именно хронология, то если мне не изменяет память, модель защиты появилась в языке изначально, т.е за 3 года до появления виртуальных функций (после включения подержки которых и было заявлено о поддержке языком ООП) и первого употребления названия "C++" для этого языка.. Это сообщение отредактировал(а) mes - 1.10.2009, 11:33 |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
То есть модификаторы все-таки не следствие ООП (вариант 1)? Вы про предшественник с++ говорите? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Да, прообразом "C++" послужил "С с классами" нет, так получилось, что они его предшественники более того вначале люди поняли что, в частности, инкапсуляция это хорошо, а уж потом сформировали постулаты ООП. ну и главное то, что модификаторы доступа вообще не имеют прямой связи с ООП, как может быть ООП без этих модификаторов, так и модификаторы без ООП. Это сообщение отредактировал(а) mes - 2.10.2009, 11:55 |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
mes, теперь понятно. Спасибо.
Всем спасибо, вопрос решен. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |