OOP'de özel bir terim olarak “yöntem” nereden geliyor?


13

"Yöntem", Nesneye Yönelik Programlamada kullanılan özel bir terimdir. Sözcüğün bu anlamda ne zaman kullanılmaya başladığını ve hangi programlama dili veya nicel öğrenmenin diğer dalıyla bağlantılı olarak bilen var mı?

Yanıtlar:


11

Java ve C # , C ++ 'dan Simula'dan alan bir yöntem aldı .

Ve Algol muhtemelen vardı etkisini Simula tarih:

Ayrıca, bir MIT ALGOL sürümü, AED-0, daha sonra "mesajlar", "yöntemler" ve "üye işlevleri" olarak adlandırılanları önceden yapılandırarak, veri yapılarını (o lehçedeki "pleksler") doğrudan prosedürlere bağladı


3
IIRC, C ++ genellikle 'üye fonksiyonunu' 'yöntem' yerine 'tercih eder.
tdammers

Aynı Wikipedia makalesine göre, terimin parasını (OOP ile ilgili) 60'ların ilk yarısına yerleştiriyor.
Tulains Córdova

2

Orada kesin bir cevap bulmak zordur, ancak yöntem olarak şeylere atıfta bulunmanın ilk dili Simula gibi görünmektedir, ancak bu yanlış veya geriye dönük olabilir. Fonksiyonlar (matematikten) ve prosedürler (matematikten de) programlama dillerinde görüldüğü göz önüne alındığında, anlayabileceğim en iyi şey "Yöntem" in "Metodoloji" için kısa bir form olmasıdır.

Bunların tümü, bir bilgisayar programını oluşturan kodlar ve alt rutinlerdir. OOP tarzı programlama arkasındaki fikir mümkün olduğunca kodu yeniden kullanmak olduğu için "Yöntem" seçildi hayal ediyorum. Böylece, bir prosedürünüz olabilir, ancak bir yöntem işte yeni bir stil olduğunu daha açık hale getirir. Dürüst olmak gerekirse, yöntem işlevlerini çağırdığım biliniyordu ve yöntem adı verilen işlevleri duydum.


6
Korkarım yanlış 'şekil' edersiniz - yöntem (hedefe ulaşmak için bir süreç) ve metodoloji (çalışma) farklı anlamlara sahiptir.
JK

1
Ayrıca, "yöntem" çok uzun zamandır İngilizce bir kelime olarak var olmuştur. Sözleşme yapmak için daha uzun bir kelime aramanıza gerek yoktur.
Steve314

"Yöntem" yerine "işlev" kullanıldığında, bu büyük ölçüde C ++ hatasıdır ve C'nin "yordam" kavramına sahip olmaması nedeniyle, yalnızca geri dönen bir "işlev" vardır void. C ++ üye işlevleri, sıradan işlevlerle (Simula'nın aksine) çok yakından ilişkilidir - örtük bir thisparametreye sahip olmak ve (muhtemelen) bir çalışma zamanı gönderme mekanizması, uğraştığınız şeyi gerçekten değiştirmez. C'nin ilk olarak fonksiyonları ve prosedürleri aynı şey olarak tedavi edip etmediğini bilmiyorum, ancak Pascal (daha yeni bir dil) functionve procedureanahtar kelimeleri var - IIRC olsa da Pascal işlevlerinin yan etkileri olabilir.
Steve314

Özellikle, yöntem bir hedefin, bir tanımın / bilginin, sürecin kendisinin değil bir yoludur. Bunun bir tür nesne tanımlayan başka bir soyut kavram olan "sınıf" ile bağlantılı bir önemi vardır. Bir sınıf nesnesi ve bu sınıfta oldukları sürece, nesnelerin her biri / herhangi biri ile X yapmak için bir yöntem alırsınız. Belirli bir nesneye genel bir yöntem uygular ve o nesneye özgü sonuçlar alırsınız.
SF.

1

Onlarca yıldır bu konuda bilgi arıyordum. Şimdiye kadar tahminim, terimin sayısal fonksiyonun özel alt alanından Simula'ya geldiği, burada bir işlevi uygulamak için belirli algoritmaya (örneğin, bir özdeğer veya herhangi bir şey) genellikle bir yöntem denir . Bunun nedeni , aynı matematiksel işlevi hesaplamak için çeşitli farklı sayısal yöntemlere sahip olmanızdır . OOP'de, yöntem geçersiz kılma nedeniyle, "aynı" işlevi sınıfa uygun şekilde farklı şekilde uygulanmış olabilir - ör. Alan , her ikisi de bir alanı olan Şekiller olan Daire ve Dikdörtgen için farklı şekilde uygulanır. Bu, geleneksel sayısal yöntem kavramının makul bir uzantısı gibi görünmektedir.


0

OOP tarihinde bu kelimenin etimolojisi hakkında hiçbir şey bilmiyorum. Ama kesinti olmadığını biliyorum (tümden çıkarılabilir). Bunun için daha iyi bir terim (Daha Kesinti Dönemi veya MDT) reaksiyon veya hareket olabilir


2
Seninle aynı fikirde olmadığımdan tamamen eminim. "Yöntem", her şeyin başladığı şey için mükemmel bir karalama kelimesidir, çeşitli şeyleri modellemenin bir yolu, her bir 'şey' bir sınıf olmak, şeyin nasıl olduğunu değiştirmek için yöntemler kullanmaktır. Aynı şekilde, yöntemler gerçek dünyadaki şeyleri değiştirir.
Vatine

Ben "yöntem" aslında "yordamı" benzer - uygulama yöntemi / prosedürü / sonucu hesaplamak için algoritma açıkladı tahmin ediyorum. Uygulamanın bilinmediği bir arayüz için kullanılması biraz garip, ancak başlangıçta (Simula'da) "mesaj" muhtemelen bunun için kullanıldı. Yine de, bir yöntemi çağırdığınızda, hangi uygulamayı bilemeseniz bile (çağrı sitesinde) uygulama kodunu çağırırsınız.
Steve314

1
Sanırım üç işlev 'işlev', 'yordam' ve 'yöntem', 'işlev' matematiksel bir çağrışım (harita girdileri çıktılara), 'yordam' zorunludur (aynı zamanda kullanılan bir dizi adım gerçekleştirin) askerî anlamda); 'yöntem' her iki çağrışımı da içermez, bu yüzden OOP'de tercih edilir.
tdammers

@Romatent için @Vatine +1
MattDavey

-1

REAL BASIC, VBx ve VB.net arka planına sahip programcılar "FUNCTION" ve "SUB" yöntem bildirimlerinin iki türünün farkındadır. BASIC dil ailesi, "FUNCTION" anahtar kelimesi ve "SUB" anahtar kelimesi ile bir işlev bildirmeye izin verir. Bu ikisi arasındaki fark, bir "FUNCTION" öğesinin, "SUB" olarak yalnızca kodu yürüttüğü ancak herhangi bir değer döndürmeyeceği bir değer döndürüp döndürmeyeceğidir. Ancak OO kavramlarının ortaya çıkmasıyla, alt ve fonksiyon terimleri birbirinin yerine yöntem olarak kullanılmaya başlanır.


2
Pascal'ın prosedürü / işlevi için de aynı şey geçerli
Mchl

3
VB, "Yöntem" değil, "Alt yordam" için kısa olan "İşlev" ve "Alt" kullanır.
Ant

5
Alan Kay'ın OOP ve Smalltalk ile gelince Temel düşündüğünden şüpheliyim
Maglob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.