اذهب إلى المحتوى

السؤال

نشر

أسمع في كثير من الأحيان المصطلحين function و method، ولكني لا أفهم الفرق بينهما.

هل يمكن لأي شخص تقديم شرح بسيط للفرق بين الدالة function والتابع method في البرمجة الكائنية OOP؟

Recommended Posts

  • 1
نشر

تعريف كلًا من الدالة Function والتابع Method

هذه مجرد مصطلحات لوصف جزء معين من الكود، وهنا تعريف بسيط لكلٍ منهما:

  • الدالة Function: تسمى أيضًا "وظيفة"، هي كتلة من الكود (مجموعة من الأسطر البرمجية) لها اسم معين، ويمكن تمرير بعض المدخلات لها لتغير سلوك الدالة أو نتيجتها (تسمى هذه المدخلات بـ Parameters)، وأيضًا يمكن للدالة إرجاع قيمة return بشكل إختياري، ويمكن إنشائها ضمن أي مجال namespace.
  • التابع Method: تسمى أيضًا "طريقة"، وهي كذلك كتلة من الأكواد لها اسم معين، ولكن يكون التابع موجودًا ضمن كائن Object معين، ولها نفس خواص الدالة من حيث المدخلات التي يمكن تمريرها إليها وإرجاع قيمة كذلك. في بعض اللغات مثل ++C يطلق على التوابع "دوال أعضاء Member Functions"، ويمكن فقط إنشائها ضمن أصناف Classes.

بناءً على التعريف السابق، يمكننا القول أن كل التوابع Methods عبارة عن دوال functions، ولكن ليس كل الدوال functions عبارة عن توابع Methods.

الإختلافات بين الدالة Function والتابع Method

تكمن الإختلافات بين الدالة Function والتابع Method في أن التابع له بعض المميزات الإضافية، مثل:

  • عند إستدعاء تابع Method يتم الإشارة صراحة إلى الكائن الذي يحتويه.
  • يمكن للتابع أيضًا الوصول لخواص الكائن Object والتوابع الأخرى الموجودة فيه (أو أي خواص وتوابع موروثة من صنف أب).

مثال بلغة JavaScript عن الفرق بين التابع Method والدالة Function:

class User {
  
  // getFullName عبارة عن تابع لأنه ضمن صنف Class
  getFullName() {
    // ...
  }
}

// sum هنا عبارة عن دالة لأنها ضمن المجال العام وليست ضمن صنف معين
function sum(x, y) {
  return x + y;
}

مثال بلغة PHP:

<?php

class User {
  // getFullName عبارة عن تابع لأنه ضمن صنف Class
  public function getFullName() {
    // ...
  }
}

// sum هنا عبارة عن دالة لأنها ضمن المجال العام وليست ضمن صنف معين
function sum($x, $y) {
	return $x + $y;
}

ملاحظة: بعض اللغات مثل Java و#C لا تحتويان على دوال Functions لأن اللغة بأكملها تستعمل البرمجة الكائنية OOP، وبالتالي يمكن عمل توابع Methods فقط، على الجانب الآخر لغات مثل C لا تحتوي على أصناف Class وبالتالي لا يمكن عمل توابع Methods فيها وتحتوي فقط على دوال Functions.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...