Skąd pochodzi „metoda” jako specjalny termin w OOP?


13

„Metoda” jest szczególnym terminem w programowaniu obiektowym. Czy ktoś wie, kiedy to słowo zaczęło być używane w tym konkretnym znaczeniu i w związku z jakim językiem programowania lub inną gałęzią nauki ilościowej?

Odpowiedzi:


11

Java i C # otrzymały metodę od C ++, która dostała ją od Simuli .

I Algol prawdopodobnie miał wpływ na Simuli:

Również wersja MIT ALGOL, AED-0, łączyła struktury danych („pleksy” w tym dialekcie) bezpośrednio z procedurami, wstępnie konfigurując to, co później nazwano „komunikatami”, „metodami” i „funkcjami składowymi”


3
IIRC, C ++ zwykle woli „funkcję członka” niż „metodę”.
tdammers

Według tego samego artykułu w Wikipedii umieszcza się monetę tego terminu (związaną z OOP) w pierwszej połowie lat 60.
Tulains Córdova

2

Trudno jest znaleźć jednoznaczną odpowiedź, ale pierwszym językiem, który odnosi się do rzeczy, ponieważ metody wydają się być Simula, chociaż może to być fałszywe lub retroaktywne. Biorąc pod uwagę, że funkcje (z matematyki) i procedury (również z matematyki) pojawiają się w językach programowania, najlepsze, co mogę sobie wyobrazić, to, że „Metoda” jest skrótem od „Metodologii”.

Wszystkie są podprogramami, kawałkami kodu tworzącymi program komputerowy. Wyobrażam sobie, że wybrano „metodę”, ponieważ ideą programowania w stylu OOP jest maksymalne wykorzystanie kodu. Tak więc możesz mieć procedurę, ale metoda wyjaśnia, że ​​jest to nowy styl w pracy. Szczerze mówiąc, byłem znany z wywoływania funkcji metod i słyszałem funkcje nazywane metodami.


6
Obawiam się, że „nieprawidłowo obliczasz” - metoda (proces do osiągnięcia celu) i metodologia (badanie) mają różne znaczenia.
JK

1
Również „metoda” istnieje od bardzo dawna jako angielskie słowo. Nie ma potrzeby szukać dłuższego słowa do zawarcia.
Steve314,

Przy użyciu „funkcji” zamiast „metody” jest to w dużej mierze wina C ++, a ponieważ C nie ma pojęcia „procedury”, zwraca tylko „funkcję” void. Funkcje członka C ++ są bardzo ściśle powiązane ze zwykłymi funkcjami (w przeciwieństwie do Simuli) - posiadanie niejawnego thisparametru i (być może) mechanizm wywoływania środowiska wykonawczego tak naprawdę nie zmienia tego, z czym masz do czynienia. Nie wiem, czy C najpierw traktował funkcje i procedury tak samo, ale Pascal (nowszy język) ma functioni proceduresłowa kluczowe - chociaż IIRC, funkcje Pascala mogą mieć skutki uboczne.
Steve314,

W szczególności metoda jest sposobem na osiągnięcie celu, opisu / wiedzy, a nie samego procesu. Ma to znaczenie w związku z „klasą”, inną abstrakcyjną koncepcją, określającą typ obiektów. Otrzymujesz klasę obiektów i metodę wykonywania X z każdym / dowolnym obiektem, o ile są one tej klasy. Stosujesz ogólną metodę do określonego obiektu i uzyskujesz wyniki specyficzne dla tego obiektu.
SF.

1

Szukałem informacji na ten temat od dziesięcioleci. Do tej pory przypuszczam, że termin ten pojawił się w Simuli ze specjalnego pola obliczeń numerycznych, w którym określony algorytm implementujący funkcję (np. Wartość własna lub cokolwiek innego) jest często nazywany metodą . Jest tak, ponieważ możesz mieć różne metody numeryczne do obliczania tej samej funkcji matematycznej, z różnymi kompromisami. W OOP, ze względu na przesłonięcie metody, możesz mieć tę samą funkcję zaimplementowaną inaczej, niż jest to właściwe dla klasy - np. Obszar zostałby zaimplementowany inaczej dla okręgu i prostokąta , które są oboma kształtami , które mają obszar. Wydaje się to rozsądnym rozszerzeniem tradycyjnej koncepcji metody numerycznej.


0

Nic nie wiem o etymologii tego słowa w historii OOP. Ale wiem, że nie jest to odliczenie ( odliczenie ). Lepszym terminem (bardziej dedukcyjnym lub MDT) może być reakcja lub działanie


2
Jestem całkowicie pewien, że się z tobą nie zgadzam. „Metoda” jest doskonale budzącym grozę słowem określającym to, jak zaczęła się cała sprawa, sposób modelowania różnych rzeczy, przy czym każda „rzecz” należy do klasy, mając metody zmiany jej stanu. W ten sam sposób, w jaki metody zmieniają rzeczy w prawdziwym świecie.
Vatine

Domyślam się, że „metoda” pierwotnie opisywała kod implementacyjny, podobnie jak „procedura” - metoda / procedura / algorytm obliczania wyniku. Używanie go do interfejsu, w którym implementacja nie jest znana, jest trochę dziwne, ale pierwotnie (w Simuli) prawdopodobnie użyto do tego „wiadomości”. Mimo to, wywołując metodę, wywołujesz kod implementacji, nawet jeśli nie wiesz (w witrynie wywoływania), która implementacja.
Steve314,

1
Sądzę, że z trzech słów „funkcja”, „procedura” i „metoda”, „funkcja” ma konotację matematyczną (odwzorowanie danych wejściowych na dane wyjściowe), „procedura” jest niezbędna (wykonaj serię kroków, również używanych w tym samym sens w wojsku); „metoda” nie ma żadnej konotacji i prawdopodobnie dlatego jest preferowana w OOP.
tdammers

@Vatine +1 za „cromulent”
MattDavey

-1

Programiści z PRAWDZIWYMI PODSTAWAMI, VBx i VB.net są świadomi dwóch rodzajów deklaracji metod „FUNKCJE” i „SUB”. Rodzina języków BASIC pozwala zadeklarować funkcję słowem kluczowym „FUNCTION”, a także słowem kluczowym „SUB”. Różnica między nimi polega na tym, że „FUNKCJA” może zwracać lub nie zwracać wartości, gdzie jako „SUB” po prostu wykonuje kod, ale nie zwraca żadnej wartości. Ale wraz z pojawieniem się koncepcji OO, terminy pod i funkcja są używane zamiennie jako metody.


2
To samo dotyczy procedury / funkcji
Pascala

3
VB używa „Funkcji” i „Sub”, w skrócie „Podprogram”, a nie „Metoda”.
Ant

5
Wątpię, czy Alan Kay pomyślał Basic, kiedy wymyślił OOP i Smalltalk
Maglob
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.