الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Accessor methods?

مغلق
بدأه M.A.K. في 23 فبراير 2007 · 7 رد · 785 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته ،

هل يمكن لأحد أن يشرح لي Accessor Methods مع مثال بسيط ؟

و ما أهميتها في البرنامج ؟

لأنني الصراحة عانيت في محاولة فهمها و لم تأت بنتيجة..

و جزاكم الله خيرا

==================================================

( اللهم إني أسألك علما نافعا ورزقا طيبا وعملا متقبلا )

I'm not an expert programmer but I will do my best to be

غدًا سنكون أفضل منهم .... إنها مسألة إرادة و وقت

#2

السلام عليكم...

حسب ما فهمت من سؤالك فأنت تسال عن Accessor Methods لأي Class أو ADT بشكل عام..

الفكرة من وراء هذه الدوال ( Methods ) هو تمكين الوصول إلى خصائص ( Class Private Variables ) عن طريق هذه الدوال دون تمكين الوصول المباشر لهذه الخصائص..

قد لا تفهم الفائدة من وراء إرغام المستخدم ( Class User ) على استخدام هذه الدوال بدل من اسناد القيم مباشرة إلى المتغيرات ( الخصائص ) .. و لكن هذه الطريقة تعطينا تحكم غير محدود و إمكانية فحص القيم دون تدخل المستخدم..

هناك الكثير من الفوائد حقيقة .. و لأنه موضوع كبير جداً فأنت تحتاج إلى قرائة القليل حول OOP أو البرمجة الكائنية التوجه..

تحياتي.

#3

شكرا أخي على الرد ، :D

في الحقيقة لقد صادفني الموضوع أثناء قراءتي في OOP ....

و تعذر علي فهمه جيدا ..

و لذلك فإنني أتعشم منك في مثال لتوضيح الفكرة ،،

أو تدلني على مكان أجد الإجابة أيسر فهمًا فيه !

و جزاك الله خيراً !

==================================================

( اللهم إني أسألك علما نافعا ورزقا طيبا وعملا متقبلا )

I'm not an expert programmer but I will do my best to be

غدًا سنكون أفضل منهم .... إنها مسألة إرادة و وقت

#4

السلام عليكم ..

مرحبا من جديد .. (h)

الحقيقة أني لم أكتب مثالاً و ذلك لكسلي .. :lol:

الحقيقة فكرت قليلاً قبل قبل وضع مثال يوضح ما تستفيده من البرمجة الكائنية بشكل عام و من ضمنها accessor methods ..

كنت أفكر في وضع مثال من أحد الكتب و شرحه و لكنه سيكون مثالاً بدائياً جداً بحيث لا تفهم المغزى من هذه الأسلوب في البرمجة ..

لذلك سأطرح عليك سؤالاً :

هل تعاملت مع النصوص strings من قبل ؟

هذا مثال بسيط يوضح ما أعنيه :

#include <iostream>
#include <string>

using namespace std;


int main(){

	string text = "This is a string sample.";

	string temp = "This is a temporary text.";

	// First Operation.
	text += " " + temp;

	cout << text;
	cout << '\t' << text.size();

	return 0;
}

في هذه السطور القليلة قمنا باستخدام كائنين من نوع string و قمنا بالتعامل معهما بكل سهولة و يسر من خلال استخدام معامل الجمع + لوصل النصين ببعض.

هنا السؤال الآن ؟

كثير من العمليات تم عملها في داخل الكائن من حجز للذاكرة إلى الاهتمام بالأمور الأخرى للمؤشرات .. و امكانية ارجاع حجم النص بدون أن نتدخل مباشرة في تصميم الفئة نفسها من حيث تعاملها مع الذاكرة و الخوارزميات المستخدمة ..

مثال على ذلك .. بأنه لا يهمني كمستخدم للفئة أي طريقة استخدمها من برمج الفئة لحساب حجم النص.

حقيقة كل ما يهمني هو النتيجة أو ما أريده بكل وضوح و هو عدد صحيح يبين حجم النص الحالي أو عدد الحروف في هذا النص..

إذا كان هناك أي استفسار فلا تتردد..

تحياتي

#5

مشكور أخي الكريم على المثال .. ;)

و لكن حسب اطلاعي فإن ما كنت تتكلم عنه هو خاصية Encapsulation في OOP

وأيضًا فإن accessor methods هي عبارة عن public functions تتعامل مع private data members

و بذلك فعندما تحتاج أن تغير في تعامل ال function نفسها لا تحتاج إعادة كتابة اسمها مرات عديدة

( يعني تغير في المحتوى بدون أن تحتاج أن تغير العنوان ) :wacko:

و سؤالي بتحديد أكثر هو :

1-( هل ما قلته فوق صحيح ؟!! )

2- هل يوجد ما فاتني أم أن هذا هو القدر الكافي من المعلومة ؟!! :s

و شكرا مقدمًا!!

==================================================

( اللهم إني أسألك علما نافعا ورزقا طيبا وعملا متقبلا )

I'm not an expert programmer but I will do my best to be

غدًا سنكون أفضل منهم .... إنها مسألة إرادة و وقت

#6

السلام عليكم

اقتباس
و لكن حسب اطلاعي فإن ما كنت تتكلم عنه هو خاصية Encapsulation في OOP
هذا صحيح و Encapsulation تعني تغيلف أو ( كبسلة ) و بسبب هذا التغليف للكود الذي تكتبه فأنت تحدد كيفية الوصول إليه عن طريق Accessor Methods .
اقتباس
وأيضًا فإن accessor methods هي عبارة عن public functions تتعامل مع private data members

و بذلك فعندما تحتاج أن تغير في تعامل ال function نفسها لا تحتاج إعادة كتابة اسمها مرات عديدة

( يعني تغير في المحتوى بدون أن تحتاج أن تغير العنوان )

كلام سليم 100 % و لكنه ليس خاصاً بالـ OOP أو البرمجة الكائنية التوجه .. فمثلاً دوال Windows API قد تعدل الخوارزمية المستخدمة مع بقاء نفس الاسم.. على الرغم من أن هذه الدوال مكتوبة بالـ C.

تحياتي

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 2 مارس 2007 في 07:21

#7

شكرا على الإفادة... :)

أعرف أني أتعبتك!

جزاك الله كل خير! :)

==================================================

( اللهم إني أسألك علما نافعا ورزقا طيبا وعملا متقبلا )

I'm not an expert programmer but I will do my best to be

غدًا سنكون أفضل منهم .... إنها مسألة إرادة و وقت

#8

أهلاً أخ M.A.K.

لا داعي للشكر :rolleyes:

إن شاء الله تكون فهمت المقصود و خصوصاً أن الموضوع ليس بالهين كي يتم استيعابه ..

تحياتي ..

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…