Откуда происходит «метод» как особый термин в ООП?


13

«Метод» - это специальный термин в объектно-ориентированном программировании. Кто-нибудь знает, когда слово стало использоваться в этом конкретном смысле, и в связи с каким языком программирования или другой отраслью количественного обучения?

Ответы:


11

Java и C # получили метод от C ++, который получил его от Simula .

И Алгол, вероятно, оказал влияние на Симулу:

Кроме того, версия MIT ALGOL, AED-0, связывала структуры данных («сплетения» на этом диалекте) напрямую с процедурами, предварительно настроив то, что позже было названо «сообщениями», «методами» и «функциями-членами».


3
IIRC, C ++ обычно предпочитает «функцию-член», а не «метод».
tdammers

Согласно той же статье в Википедии, которая помещает чеканку термина (относящегося к ООП) в первую половину 60-х годов.
Тулаинс Кордова

2

Трудно найти определенный ответ там, но первым языком, который ссылается на вещи как методы, кажется, был Simula, хотя это вполне может быть ложным или задним числом. Учитывая, что функции (из математики) и процедуры (также из математики) отображаются в языках программирования, лучшее, что я могу понять, это то, что «Метод» - это краткая форма для «Методологии».

Все это подпрограммы, фрагменты кода, составляющие компьютерную программу. Я полагаю, «Метод» был выбран, потому что идея программирования в стиле ООП состоит в том, чтобы максимально использовать код. Таким образом, вы можете иметь процедуру, но метод проясняет, что это новый стиль в работе. Честно говоря, я знаю, что вызывает методы методов, и я слышал, что функции называются методами.


6
Боюсь, что вы «фигурируете» неправильно - метод (процесс достижения цели) и методология (исследование) имеют разные значения.
JK

1
Кроме того, «метод» существует как английское слово в течение очень долгого времени. Нет необходимости искать более длинное слово для контракта.
Steve314

Использование «функции» вместо «метода» во многом является ошибкой C ++, и из-за того, что в C нет понятия «процедура», только возвращаемая «функция» void. Функции-члены C ++ очень тесно связаны с обычными функциями (в отличие от Simula) - наличие неявного thisпараметра и (возможно) механизма диспетчеризации во время выполнения не меняет того, с чем вы имеете дело. Я не знаю , если C был первым , чтобы рассматривать функции и процедуры , как то же самое, но Паскаль (новее язык) есть functionи procedureключевые слова - хотя IIRC, Pascal функция может иметь побочные эффекты.
Steve314

В частности, метод - это способ достижения цели, описание / знание, а не сам процесс. Это имеет значение в связи с «классом», другим абстрактным понятием, определяющим тип объектов. Вы получаете класс объектов и метод выполнения X с каждым / любым из объектов, если они принадлежат этому классу. Вы применяете универсальный метод к определенному объекту и получаете результаты, специфичные для этого объекта.
SF.

1

Я искал информацию об этом на протяжении десятилетий. До сих пор я предполагаю, что термин пришел в Simula из специального подполя числовых вычислений, где конкретный алгоритм для реализации функции (например, собственное значение или что-то еще) часто называют методом . Это потому, что у вас могут быть различные численные методы для вычисления одной и той же математической функции с различными компромиссами. В ООП из-за переопределения метода у вас может быть «одна и та же» функция, реализованная по-разному в зависимости от класса - например, область будет реализована по-разному для Circle и Rectangle , которые являются Shapes , которые имеют площадь, Это кажется разумным продолжением традиционной концепции численного метода.


0

Я ничего не знаю об этимологии этого слова в истории ООП. Но я знаю , что это не deductional (deducable). Лучшим термином (более дедукционным термином или MDT) для него может быть реакция или действие


2
Я полностью уверен, что не согласен с вами. «Метод» - это совершенно смутное слово для обозначения того, с чего все началось, как способ моделирования различных вещей, когда каждая «вещь» принадлежит к классу, имея методы, позволяющие изменить ее. Точно так же, как методы меняют вещи в реальном мире, как.
Ватин

Я предполагаю, что «метод» первоначально описывал код реализации, похожий на «процедуру» - метод / процедуру / алгоритм для вычисления результата. Использование его для интерфейса, где реализация неизвестна, немного странно, но первоначально (в Simula) для этого, вероятно, использовалось «message». Тем не менее, когда вы вызываете метод, вы вызываете код реализации, даже если вы не можете знать (на сайте вызова), какую реализацию.
Steve314

1
Я предполагаю, что из трех слов «функция», «процедура» и «метод», «функция» имеет математическую коннотацию (отображает входные данные в выходные), «процедура» является обязательной (выполните серию шагов, также используемых в том же смысл в военном деле); «Метод» не имеет никакого значения, поэтому, вероятно, он предпочтителен в ООП.
tdammers

@Vatine +1 для "cromulent"
MattDavey

-1

Программисты с фоном REAL BASIC, VBx и VB.net знают о двух типах объявлений методов: «FUNCTION» и «SUB». Семейство языков BASIC позволяет объявлять функцию как с ключевым словом «FUNCTION», так и с ключевым словом «SUB». Разница между этими двумя заключается в том, что «FUNCTION» может или не будет возвращать значение, тогда как «SUB» просто выполняет код, но не возвращает никакого значения. Но с появлением концепций ОО термины «суб» и «функция» стали взаимозаменяемыми в качестве методов.


2
То же самое касается процедуры / функции
Паскаля

3
VB использует «Function» и «Sub», сокращение от «Subroutine», а не «Method».
Муравей

5
Я сомневаюсь, что Алан Кей думал о Basic, когда придумывал ООП и Smalltalk
Маглоб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.