Di mana "metode" sebagai istilah khusus dalam OOP berasal?


13

"Metode" adalah istilah khusus dalam Pemrograman Berorientasi Objek. Adakah yang tahu kapan kata itu mulai digunakan dalam pengertian khusus ini, dan sehubungan dengan bahasa pemrograman apa atau cabang pembelajaran kuantitatif lainnya?

Jawaban:


11

Java dan C # mendapatkan metode dari C ++, yang mendapatkannya dari Simula .

Dan Algol mungkin memiliki pengaruh pada Simula:

Juga, versi ALGOL MIT, AED-0, menautkan struktur data ("pleks", dalam dialek itu) secara langsung dengan prosedur, memperkirakan apa yang kemudian disebut "pesan", "metode" dan "fungsi anggota"


3
IIRC, C ++ biasanya lebih suka 'fungsi anggota' daripada 'metode'.
tdammers

Menurut artikel Wikipedia yang sama, yang menempatkan mata uang istilah (terkait dengan OOP) dalam paruh pertama tahun 60-an.
Tulains Córdova

2

Sulit untuk menemukan jawaban yang pasti di luar sana tetapi bahasa pertama yang merujuk pada hal-hal sebagai metode tampaknya Simula meskipun ini mungkin salah atau berlaku surut. Mengingat bahwa fungsi (dari matematika) dan prosedur (juga dari matematika) muncul dalam bahasa pemrograman, yang terbaik yang dapat saya pikirkan adalah bahwa "Metode" adalah bentuk pendek untuk "Metodologi".

Semua ini adalah Subrutin, bit kode yang membentuk program komputer. Saya membayangkan "Metode" dipilih karena ide di balik pemrograman gaya OOP adalah menggunakan kembali kode sebanyak mungkin. Dengan demikian, Anda bisa memiliki prosedur tetapi metode membuatnya lebih jelas bahwa itu adalah gaya baru di tempat kerja. Jujur, saya sudah dikenal memanggil fungsi metode dan saya pernah mendengar fungsi yang disebut metode.


6
Saya khawatir Anda 'salah menilai ' - metode (proses untuk mencapai tujuan) dan metodologi (studi) memiliki makna yang berbeda.
JK

1
Juga, "metode" telah ada sebagai kata bahasa Inggris untuk waktu yang sangat lama. Tidak perlu mencari kata yang lebih panjang untuk dikontrak.
Steve314

Saat menggunakan "fungsi" alih-alih "metode", itu sebagian besar kesalahan C ++, dan karena fakta bahwa C tidak memiliki konsep "prosedur", hanya "fungsi" yang mengembalikan void. Fungsi anggota C ++ sangat erat hubungannya dengan fungsi biasa (tidak seperti di Simula) - memiliki thisparameter implisit dan (mungkin) mekanisme pengiriman runtime tidak benar-benar mengubah apa yang Anda hadapi. Saya tidak tahu apakah C pertama kali memperlakukan fungsi dan prosedur sebagai hal yang sama, tetapi Pascal (bahasa yang lebih baru) memiliki functiondan procedurekata kunci - meskipun IIRC, fungsi Pascal dapat memiliki efek samping.
Steve314

Secara khusus, metode adalah cara untuk mencapai tujuan, deskripsi / pengetahuan, bukan proses itu sendiri. Ini memiliki signifikansi dalam kaitannya dengan "kelas", konsep abstrak lain, yang mendefinisikan jenis objek. Anda mendapatkan kelas objek dan metode melakukan X dengan masing-masing / salah satu objek, selama mereka dari kelas itu. Anda menerapkan metode generik ke objek tertentu dan mendapatkan hasil yang spesifik untuk objek itu.
SF.

1

Saya telah mencari informasi tentang ini selama beberapa dekade. Dugaan saya sejauh ini adalah bahwa istilah datang ke Simula dari subbidang khusus perhitungan numerik, di mana algoritma spesifik untuk mengimplementasikan suatu fungsi (misalnya, nilai eigen atau apa pun) sering disebut metode . Ini karena Anda mungkin memiliki berbagai metode numerik yang berbeda untuk menghitung fungsi matematika yang sama, dengan berbagai pengorbanan. Dalam OOP, karena metode menimpa, Anda mungkin memiliki fungsi "sama" diimplementasikan secara berbeda sesuai untuk kelas - misalnya, area akan diimplementasikan secara berbeda untuk Circle dan Rectangle , yang keduanya adalah Bentuk , yang memiliki area. Ini tampaknya merupakan perluasan yang wajar dari konsep tradisional metode numerik.


0

Saya tidak tahu apa-apa tentang etimologi kata ini dalam sejarah OOP. Tapi saya tahu itu bukan deductional (deducable). Istilah yang lebih baik (Istilah yang Lebih Deduktif atau MDT) untuknya bisa berupa reaksi atau tindakan


2
Saya sepenuhnya yakin bahwa saya tidak setuju dengan Anda. "Metode" adalah kata yang benar-benar cromulen untuk apa semuanya dimulai sebagai, cara memodelkan berbagai hal, dengan masing-masing 'hal' menjadi kelas, memiliki metode untuk mengubah bagaimana hal itu. Dengan cara yang sama metode mengubah hal-hal di dunia nyata, seperti.
Vatine

Saya kira "metode" awalnya menggambarkan kode implementasi, mirip dengan "prosedur" - metode / prosedur / algoritma untuk menghitung hasilnya. Menggunakannya untuk antarmuka di mana implementasi tidak diketahui adalah anak laki-laki aneh, tetapi awalnya (dalam Simula) "pesan" mungkin digunakan untuk itu. Meski begitu, ketika Anda memanggil metode, Anda memohon kode implementasi, bahkan jika Anda tidak bisa tahu (di situs panggilan) implementasi mana.
Steve314

1
Saya kira dari tiga kata 'fungsi', 'prosedur', dan 'metode', 'fungsi' memiliki konotasi matematika (memetakan input ke output), 'prosedur' sangat penting (melakukan serangkaian langkah, juga digunakan dalam akal dalam militer); 'metode' tidak memiliki konotasi, yang mungkin mengapa itu lebih disukai di OOP.
tammmer

@Vatine +1 untuk "cromulent"
MattDavey

-1

Programmer dengan latar belakang NYATA, VBx dan VB.net menyadari dua jenis deklarasi metode "FUNGSI" & "SUB". Rangkaian bahasa BASIC memungkinkan untuk mendeklarasikan suatu fungsi dengan kata kunci "FUNGSI" serta kata kunci "SUB". Perbedaan antara keduanya adalah bahwa "FUNGSI" dapat atau tidak akan mengembalikan nilai di mana sebagai "SUB", hanya mengeksekusi kode tetapi tidak akan mengembalikan nilai apa pun. Tetapi dengan munculnya konsep OO, istilah sub dan fungsi mulai digunakan secara bergantian sebagai metode.


2
Hal yang sama berlaku untuk prosedur / fungsi
Pascal

3
VB menggunakan "Function" dan "Sub", kependekan dari "Subroutine", bukan "Method".
Semut

5
Saya ragu Alan Kay sedang berpikir Basic ketika datang dengan OOP dan Smalltalk
Maglob
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.