История модификаторов контроля доступа, таких как public / private / protected - PullRequest
18 голосов
/ 26 августа 2009

Как эти ключевые слова и концепции ожили? Какие силы и проблемы заставили их появиться? На каком языке они были первыми?

На самом деле, речь идет не только о public / private / protected, а о целом диапазоне ключевых слов, которые обеспечивают соблюдение некоторых правил (abstract, final, internal).

Но, пожалуйста, не принимайте вещи. Ответьте, если знаете хотя бы часть ответа, или ответьте, прожили ли вы эти моменты. Ссылки с благодарностью.

Ответы [ 4 ]

8 голосов
/ 26 августа 2009

Simula (1967) , который считается первым языком OO, имеет модификаторы, названные protected и hidden . Я предполагаю, что публикация по умолчанию, я не могу вспомнить. Он также использует virtual .

И, благодаря Павлу, Симула представил самые важные ключевые слова (и концепции) class , this , new , downcasting и ссылочных типов.

Smalltalk (1980) , более поздний, но гораздо более фундаментальный язык ОО, дал нам Методы , отвечающие на Сообщения . По сути, это та же функциональность, что и виртуальные функции. Сообщения и классы были позже имитированы в C (не-OO), чтобы придать Windows API полиморфное поведение. Но все еще нужны уродливые операторы switch и указатели на функции для замены наследования.

Первое использование Properties было, насколько мне известно, в Delphi (Object Pascal, <1994). </p>

2 голосов
/ 26 августа 2009

публичные, приватные и защищенные модификаторы доступа взяты из C ++. Кажется , что публичное и частное уже существовало в "C с классами", недолговечном предшественнике C ++. Это, вероятно, подробно описано в Дизайн и Эволюция C ++ .

Я думаю, абстрактные и окончательные исходят из Java, а внутренние из C #.

0 голосов
/ 26 августа 2009

Для C ++ источники частной и публичной защиты происходят от экспериментов Страуструпа с C с классами, но еще от более старой системы - компьютера Cambridge CAP. Это описано в разделе 2.10 «Разработка и развитие C ++».

Что касается защищенных, у которых было мрачное прошлое, и у меня нет хороших ссылок на это.

0 голосов
/ 26 августа 2009

Подобные вещи начинаются с того, что дизайнеры с несколькими языками спрашивают: «Какое простое логическое название для этой концепции»? затем со временем некоторые имена становятся популярными (иногда потому, что это хорошие имена, иногда просто потому, что). добавьте 20 лет, и большинство людей в конечном итоге выбирают одни и те же имена, основываясь на том, что они видели.

Подобный вопрос, возможно, к вопросу о том, как новые слова добавляются (скажем) в английский язык.

...