أريد معرفة الفرق بين الكائنات(oop) والدوال(functions)

اولاً:

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

ثانياً:

هل هناك فائدة للكائنات غير تنظيم الكود أي تكون اسرع مثلاً

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

سوف أحاول شرح هذه الفكرة لك بطريقة بسيطة.

الدالة Function هي صندوق تُمرر له قيم أو لا تُمرر له قيم ويقوم بوظيفة معينة.

على سبيل المثال، لديك برنامج ويقوم بعرض ناتج ضرب عددين، وتتكرر هذه العملية في الكثير من الأماكن.

لذا يمكن وبكل سهولة كتابة دالة تقوم بهذه الوظيفة عوضاً عن كتابة الكود كل مرة من جديد، وبمجرد تمرير القيم لها يتم حساب ناتج الضرب.

الآن نأتي للكائنات، الكائنات دعنا نقول أنها الخزانة التي يتم فيها وضع الصناديق :) يعني هي خزانة تحتوي على مجموعة من الصناديق، طيب مافائدة هذه الخزانة ؟ يمكنك كتابة ملف يحتوي على الصناديق مباشرةً دون الخوض في وضعهم في خزانة وهو أمر ممكن ولايوجد أي مشاكل، ولكن أيضاً في البرامج الكبيرة تحتاج إلى ترتيب هذه النصاديق ضمن خزانة لكي لاتتوه.

يعني برنامج يتعامل مع قواعد البيانات ويقوم بعمليات رياضية، من الأفضل أن يتم وضع صناديق التعامل مع قواعد البيانات في خزانة ولنسميها SQL وصناديق الحسابات الرياضية يتم وضعها في خزانة Math وبالتالي لن تتوه عند الاستخدام أو التعديل.

طبعاً هذه الفكرة العامة :) إن كنت تريد شرح تقني أكثر يمكنني مساعدتك :)

هلا فصلت اكثر من فضلك لأن حسب ما فهمته أن الأوبجكت هي مجرد طريقة لحفظ الدوال فإنه بنفس الطريقة أستطيع حفظها في ملفات

بالطبع تحتاج إلى حفظ الكائنات أو الدوال في ملف في النهاية، ولكن المقصد أنك كمبرمج تُصبح عملية التطوير عليك أسهل.

يعني تخيل معي أنك كتبت كود يقوم بطباعة ناتج ضرب عددين، واستخدمت هذا الكود في ١٠ صفحات، في حال كان هناك حاجة للتتغيير فأنت تحتاج إلى فتح ١٠ ملفات وتغيير الكود.

ولكن مع استخدام الدوال أن تكتب الدالة مرة واحدة، وتستخدمها في ١٠ ملفات، في حال قررت تغيير أي شيء في كود الدالة فأنت تحتاج إلى تغييره مرة واحدة داخل الدالة.

أتمنى أن يكون كلامي فيما سبق واضح.

الآن نأتي لمفهوم الكائنات OOP، انت صنعت دالة لتقوم بعرض ناتج ضرب صحيح ؟ طيب وماذا عن دالة ثانية لحساب الحجم، المساحة، القطر، نصف القطر، طول الضلع وما إلى ذلك ؟

كتبت أنت هذه الدوال وحفظتها في ملف، ماذا عن بعض العمليات التي تُريدها أن تتم بين هذه الدوال ولكن بطريقة سريّة ولايمكن لأحد العبث فيها ؟؟

هنا تأتي أحد مهام الكائنات. حيث يمكن مثلاً استخدام متغييرات تكون داخلية Local مسموح استخدامها على مستوى الصف Class نفسه ولايمكن لأي أحد الوصول إليها من الخارج إلا المبرمج.

من خلال الكائنات يمكن أيضاً إعطاء قيم افتراضية لاستخدامها في البرنامج في حال لم يقم المستخدم بتزويد قيم افتراضية، تخيل أن يقوم المستخدم باستخدام دالة حساب المساحة وقام بإدخال رقم سالب ! هنا يمكنك الاستفادة من شيء يُدعى الباني Constructor والذي من خلاله يتم بناء الصف Class بقيم أولية.

يمكن أيضاً حذف القيم من الذاكرة لتوفير المزيد من المساحة بعد الإنتهاء من تنفيذ البرنامج من خلال الهادم destructor.

يعني هناك ميزات هائلة لاستخدام الكائنات ولكن في النهاية الدالة داخل الكائنات تُسمي Method وليس Function.

يعني الكائن يفيد أيضاً من نواحي أخرى غير التنظيم وأعتذر عن الإطالة عليك

للبرمجة بالكائنات فوائد عظيمة، أهمها قابلية صيانة المنتج البرمجي وتطويره لاحقاً، وبالتالي تسريع وتيرة العمل البرمجي.

فالمخططات البرمجية Diagrams التي توضع قبل كتابة الكود هي أشبه بالنموذج المصغر (الماكيت) الذي يستخدمه المهندسون المعماريون، فهو يساعدك على التفاهم والتواصل مع كافة أطراف المشروع، من زبائن ومهندسين ومتعهدين.

يعد أن بدأت بكتابة الجواب وعندما وجدته أصبح كبيرا قمت بتحويله إلى موضوع مستقل ليكون بمثابة مصدر عام بدل أن يغيب في رد موضوع آخر

وهنا أضع بدلا من تكرار الموضوع رابط الموضوع ليكون بمثابة إجابة

بهذا أصبح الموضوع للعموم

وبنفس الوقت لم نلغي الإجابة هنا