Звідки походить "метод" як спеціальний термін в ООП?


13

"Метод" - це спеціальний термін в об'єктно-орієнтованому програмуванні. Хтось знає, коли слово почали вживати саме в цьому конкретному значенні та у зв’язку з якою мовою програмування чи іншою галуззю кількісного навчання?

Відповіді:


11

Java та C # отримали метод від C ++, який отримав його від Simula .

І Алгол, ймовірно, мав вплив на Симулу:

Також версія MIT ALGOL, AED-0, зв'язувала структури даних ("плекси" на цьому діалекті) безпосередньо з процедурами, попередньо налаштовуючи те, що пізніше називали "повідомленнями", "методами" та "членами"


3
IIRC, C ++ зазвичай віддає перевагу методу 'член' над методом '.
tdammers

Згідно з тією ж статтею Вікіпедії, що розміщення терміна (пов'язаного з ООП) знаходиться в першій половині 60-х років.
Tulains Córdova

2

Важко знайти певну відповідь там, але першою мовою, що стосується речей як методів, здається, була симула, хоча це цілком може бути помилковим чи зворотним. Зважаючи на те, що функції (з математики) та процедури (також з математики) з'являються в мовах програмування, найкраще, що я можу зрозуміти, це те, що "Метод" є короткою формою для "Методологія".

Все це - підпрограми, біти коду, що складають комп'ютерну програму. Я думаю, що "Метод" був обраний тому, що ідея програмування стилю OOP полягає в тому, щоб якомога більше використовувати код. Таким чином, у вас може бути процедура, але метод робить більш зрозумілим, що це новий стиль на роботі. Чесно кажучи, я, як відомо, називав функції методів і чув функції, що називаються методами.


6
Я боюся, ви неправильно "зрозуміли" - метод (процес досягнення мети) та методологія (дослідження) мають різні значення.
JK

1
Також "метод" існує як англійське слово дуже давно. Немає необхідності шукати довше слово для укладання контракту.
Steve314

У використанні "функції" замість "методу", це значною мірою помилка C ++, і через те, що C не має поняття "процедура", а лише "функція", яка повертається void. Функції члена C ++ дуже тісно пов'язані зі звичайними функціями (на відміну від Simula) - наявність неявного thisпараметра та (можливо) механізму відправки по виконанню насправді не змінює те, з чим ви маєте справу. Я не знаю, чи вперше C ставився до функцій і процедур як до одного і того ж, але у Pascal (новітня мова) є functionі procedureключові слова - хоча IIRC, функції Pascal можуть мати побічні ефекти.
Steve314

Зокрема, метод - це спосіб досягнення мети, опису / знання, а не сам процес. Це має значення у зв’язку з "класом", іншим абстрактним поняттям, що визначає тип об'єктів. Ви отримуєте клас об'єктів і метод виконання X з кожним / будь-яким об'єктом, якщо вони є з цього класу. Ви застосовуєте загальний метод до конкретного об'єкта і отримуєте конкретні результати для цього об'єкта.
СФ.

1

Я шукав інформацію про це десятиліттями. На сьогоднішній день я здогадуюсь, що термін прийшов у Simula зі спеціального підполя чисельних обчислень, де конкретний алгоритм для реалізації функції (наприклад, власне значення або інше) часто називають методом . Це тому, що у вас можуть бути різні різні числові методи для обчислення однієї і тієї ж математичної функції з різними компромісами. В OOP через переосмислення методу у вас може бути функція "той самий", що реалізується інакше, як це підходить для класу - наприклад, область буде реалізована по-різному для Circle and Rectangle , що є обома Shapes , які мають площу. Це здається розумним продовженням традиційної концепції числового методу.


0

Я нічого не знаю про етимологію цього слова в історії ООП. Але я знаю, що це не дедукційна (виводима). Кращим терміном (Більше вивідний термін або МДТ) для нього може бути реакція чи дія


2
Я цілком впевнений, що не згоден з вами. "Метод" - це досконало кромулентне слово для того, з чого починалася вся річ, спосіб моделювання різних речей, причому кожна "річ" є класом, маючи методи змінити те, як ця річ була. Так само, як методи змінюють речі в реальному світі, як.
Ватін

Я б здогадався, що "метод" спочатку описав код реалізації, аналогічно "процедурі" - метод / процедура / алгоритм для обчислення результату. Використання його для інтерфейсу, де реалізація не відома, є tad wierd, але спочатку (в Simula) для цього, ймовірно, використовувалося "повідомлення". Тим не менш, коли ви викликаєте метод, ви викликаєте код реалізації, навіть якщо ви не можете знати (на сайті виклику), яка саме реалізація.
Steve314

1
Я здогадуюсь, що з трьох слів «функція», «процедура» та «метод», «функція» є математична конотація (карта вводить у виходи), «процедура» є обов'язковою (виконайте ряд кроків, також використовуваних у тому ж самому сенс у військових); "метод" не має ані конотації, тому, ймовірно, тому він є кращим в OOP.
tdammers

@Vatine +1 для "cromulent"
MattDavey

-1

Програмісти з REAL BASIC, VBx та VB.net фоном знають про два типи декларацій методів "FUNCTION" та "SUB". Сімейство мов BASIC дозволяє оголосити функцію за допомогою ключового слова "FUNCTION", а також ключового слова "SUB". Різниця між цими двома полягає в тому, що "ФУНКЦІЯ" може або не поверне значення там, де "SUB" просто виконує код, але не поверне жодного значення. Але з появою понять OO терміни sub і function починають використовуватися взаємозамінно як методи.


2
Те саме стосується процедури / функції
Паскаля

3
VB використовує "Функція" та "Під", скорочення "Підпрограма", а не "Метод".
Ant Ant

5
Я сумніваюся, що Алан Кей думав про базові, коли збирався з OOP та Smalltalk
Maglob
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.