طريقة (برمجة حاسوب)  الطريقة (Method) أوالنهج في البرمجة الكائنية (OOP) هي إجراء مرتبط برسالة وكائن. يتكون الكائن من البيانات والسلوك. تشتمل البيانات والسلوك على واجهة بينية، تحدد كيفية استخدام الكائن من قبل أي من المستهلكين المختلفين للكائن.  يتم تمثيل البيانات على أنها خصائص الكائن ويتم تمثيل السلوكيات كطرق للكائن. على سبيل المثال، يمكن أن يحتوي كائن النافذة codice_1 على طرق مثل افتح codice_2و أغلق codice_3، في حين أن حالته (سواء تم فتحه أو إغلاقه في أي نقطة زمنية) ستكون خاصية.  في البرمجة القائمة على الصنف، يتم تعريف الطرق في صنف، والكائنات هي أمثال لصنف معين. أحد أهم القدرات التي توفرها الطريقة هي تجاوز الطريقة. يمكن استخدام نفس الاسم (على سبيل المثال، المساحة codice_4) لأنواع متعددة من الأصناف المختلفة. يسمح هذا للكائنات المرسلة باستدعاء السلوكيات وتفويض تنفيذ هذه السلوكيات إلى الكائن المتلقي. تعيَّن الطريقة في برمجة جافا سلوك كائن صنف. على سبيل المثال، يمكن للكائن إرسال رسالة مساحة codice_4 إلى كائن آخر ويتم استدعاء الصيغة المناسبة سواء كان الكائن المستلم مستطيل codice_6 أو دائرة codice_7 أومثلث codice_8، إلخ.  توفر الطرق أيضًا الواجهة البينية التي تستخدمها الأصناف الأخرى للوصول إلى خصائص بيانات الكائن وتعديلها. يُعرف هذا بالتغليف. التغليف والتجاوز هما السمتان المميزتان الأساسيتان بين الطرق واستدعاء الإجراءات.  يعد تجاوز الطريقة والتحميل الزائد من أهم الطرق التي تختلف بها الطريقة عن الإجراء التقليدي أو استدعاء الدالة. يشير تجاوز الطريقة إلى صنف فرعي يعيد تعريف تنفيذ طريقة الصنف الأصل الخاصة بها. على سبيل المثال، قد يكون أوجد-المساحة codice_9 طريقة معرفة في صنف الشكل shape class. الأصناف الفرعية المختلفة: codice_6مستطيل، codice_7دائرة، مثلث codice_8، إلخ، ستعرّف كل منها الصيغة الرياضية المناسبة لحساب مساحتها. والفكرة هي النظر إلى الكائنات على أنها «صناديق سوداء (»black boxes")" بحيث يمكن إجراء التغييرات على الأجزاء الداخلية للكائن بأقل تأثير على الكائنات الأخرى التي تستخدمها. يُعرف هذا بالتغليف ويهدف إلى تسهيل صيانة الكود وإعادة استخدامه.  من ناحية أخرى، يشير التحميل الزائد للطريقة إلى التمييز بين الكود المستخدم للتعامل مع رسالة بناءً على معلمات الطريقة. إذا نظر المرء إلى كائن الاستلام كمعلمة أولى في أي طريقة، فإن تجاوز الطريقة هو مجرد حالة خاصة من التحميل الزائد حيث يعتمد التحديد فقط على القيمة الأولى. يوضح مثال جافا البسيط التالي الاختلاف:  class Class1 { class Class2 extends Class1 { يتم استخدام طرق الموصّل لقراءة قيم بيانات الكائن. يتم استخدام طرق (الحوّر) لتعديل بيانات كائن. تُستخدم أساليب المدير لتهيئة وتدمير كائنات من صنف، مثل المُنشِّئين والمدمِّرين.  توفر هذه الطرق طبقة تجريد تسهل التغليف والنمطية. على سبيل المثال، إذا كانت صنف الحساب المصرفي bank-account class يقدم طريقة (احصل على الموازنة)codice_13 لاسترداد الرصيد الحالي (بدلاً من الوصول مباشرةً إلى حقول بيانات الرصيد)، عندئذٍ يمكن للمراجعات اللاحقة لنفس الكود تنفيذ آلية أكثر تعقيدًا لاسترداد الرصيد (على سبيل المثال، إحضار قاعدة البيانات)، دون الحاجة إلى تغيير الكود التابع. ليست مفاهيم التغليف والنمطية فريدة بالنسبة للبرمجة الكائنية. في الواقع، من نواح عديدة، فإن النهج الموجه للكائنات هو ببساطة الامتداد المنطقي للنماذج السابقة مثل أنواع البيانات المجردة والبرمجة الهيكلية.  "المنشئ" () هو طريقة يتم استدعاؤها في بداية عمر الكائن لإنشاء الكائن وتهيئته، وهي عملية تسمى الإنشاء (أو "إنشاء مثيل"). قد تتضمن التهيئة الحصول على الموارد. قد يكون للمُنشئين معلمات ولكن لا تُرجع عادةً قيم في معظم اللغات. انظر المثال التالي في جافا:  public class Main {  "المدمرة" ("") هي طريقة يتم استدعاؤها تلقائيًا في نهاية عمر الكائن، وهي عملية تسمى التدمير. التدمير في معظم اللغات لا يُسمح بقيم للمعلمات في طريقة التدمير أو قيم للإرجاع. يمكن تنفيذ التدمير من أجل القيام بأعمال التنظيف والمهام الأخرى عند تدمير الكائن.  في اللغات التي يتم جمع القمامة بها، مثل جافا وسي شارب وبايثون، تُعرف "المدمرات" بالمُنهيات Finalizers (أدوات "الإنهاء"). لديهن نفس غرض ووظيفة المدمرات، ولكن بسبب الاختلافات بين اللغات التي تستخدم جمع القمامة واللغات ذي الذاكرة يدوية الإدارة، فإن تسلسل استدعاء تلك الطرق مختلف.  "الطريقة المجردة" ("abstract method") هي "طريقة" ذات توقيع فقط وليس لها جسم تنفيذ. غالبًا ما يتم استخدامه لتحديد أنه يجب على الصنف الفرعي توفير تنفيذ الطريقة. تُستخدم الطرق المجردة لتحديد الواجهات في بعض لغات البرمجة.  يعرض كود جافا التالي صنف مجرد يحتاج إلى توسيع: abstract class Shape {  يوسّع (extends) الصنف الفرعي التالي الصنف الرئيسي:  public class Rectangle extends Shape { // يوسّع صنف المستطيل صنف الشكل (صنف الشكل هو الصنف الأصل و المستطيل هو الصنف الفرع) طرق الصنف (Class methods) هي طرق يتم استدعاؤها على صنف بدلاً من مثيل. وعادة ما يتم استخدامها كجزء من نموذج تعريف كائن. أي لكل صنف، يعرّف مثيل كائن من صنف فهو مُنشأ في نموذج الوصف. تسمح بروتوكولات نموذج التعريف بإنشاء الأصناف وحذفها. وبهذا المعنى، فإنها توفر وظيفية مشابهة مثل المُنشئات والمدمرات الموصوفات أعلاه. ولكن في بعض اللغات مثل نظام كائن ليسب العام (CLOS)، يسمح النموذج التعريفي للمطور بتغيير نموذج الكائن ديناميكيًا في وقت التشغيل: على سبيل المثال، لإنشاء أصناف جديدة، وإعادة تعريف التسلسل الهرمي للصنف، وتعديل الخصائص، وما إلى ذلك.  الطرق الخاصة (Special methods) هي طرق خاصة جداً باللغة المستخدمة وقد لا تدعم اللغة أيًا أو بعضًا أو كل الطرق الخاصة المعرفة هنا. قد يقوم مجمع اللغة تلقائيًا بإنشاء طرق خاصة افتراضية أو قد يُسمح للمبرمج بتعريف طرق خاصة بشكل اختياري. لا يمكن استدعاء معظم الطرق الخاصة مباشرة، بل يقوم المجمّع بإنشاء كود لاستدعائها في الأوقات المناسبة.  يُقصد بالطرق الثابتة (Static methods) أن تكون ذات صلة بجميع مثيلات الصنف بدلاً من أي مثيل محدد. وهي تشبه المتغيرات الثابتة بهذا المعنى. كمثال على ذلك؛ طريقة ثابتة لجمع قيم كل المتغيرات في كل مثيل صنف. على سبيل المثال، إذا كانت هناك صنف (المنتج) codice_14، فقد يكون لديه طريقة ثابتة لحساب متوسط سعر جميع المنتجات.  في جافا، يوجد طريقة ثابتة شائعة الاستخدام وهي.  Math.max(double a, double b)  يمكن استدعاء الطريقة الثابتة حتى ولو لم يوجد أمثال للصنف حتى الآن. تسمى الطرق الثابتة «ثابتة» لأنها يتم تحليلها في وقت التجميع بناءاً على الصنف الذي استدعاها وليس بشكل ديناميكي كما هو الحال مع طرق المثيل، والتي يتم تحليلها بأسلوب متعدد الأشكال استنادًا إلى نوع وقت تشغيل الكائن.  عوامل تعيين النسخ (Copy-assignment operators) تعرّف الإجراءات التي يتعين على المجمّع تنفيذها عندما يتم تعيين كائن صنف لكائن صنف أخر من نفس النوع.  طرق العامل Operator methods تُعرّف أو تعيد تعريف رموز العامل، كما تعرّف العمليات التي سيتم إجراؤها باستخدام الرمز ومعلمات الطريقة المرتبطة. مثال بلغة سي ++:   class Data {  تم توسيع بعض اللغات الإجرائية بقدرات موجهة للكائنات للاستفادة من مجموعات المهارات الكبيرة والكود القديم لتلك اللغات وأيضاً توفير مزايا التطوير ذي التتوجيه الكائني. ولعل المثال الأكثر شهرة هو سي++، وهو امتداد كائني التوجه للغة البرمجة سي نظرًا لمتطلبات التصميم لإضافة النموذج الموجه للكائنات إلى لغة إجرائية موجودة مسبقاً، فإن تمرير الرسائل في سي++ لديه بعض القدرات والمصطلحات الفريدة. على سبيل المثال، في سي++ تُعرف الطريقة "بدالة عضو (member function)". تحتوي سي++ أيضًا على مفهوم الدوال الافتراضية () وهي دوال عضوية التي يمكن تجاوزها في الأصناف المشتقة وتسمح بالإرسال الديناميكي.  "الدوال الافتراضية" "" هي الوسيلة التي يمكن من خلالها لصنف سي++ تحقيق سلوك متعدد الأشكال. "الدوال العضوية غير الافتراضية"، أو "الطرق العادية"، هي تلك التي لا تشارك في تعدد الأشكال.  مثال سي++ :  class Super {  class Sub : public Super {  int main() {