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

ماذا استخدم Member Functions أم ملف خارجي ؟

بدأه Islamic_Empire في 26 أكتوبر 2009 · 2 رد · 563 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

بمعنى أن هذه الدوال تقوم بوظائف عامة و صنفنا Myclass يرسل لها بعض البيانات ويستخدم الناتج في عملياته الخاصة به.

الآن هل أقوم بإضافة هذه الدوال ك Member Functions للصنف Myclass أم أضعه في ملف منفصل وليكن essentials.cpp ومن ثم أقوم بإضافته عند الحاجة إليه

#include "essentials.cpp"

ما الفرق بين الطريقتين ؟

شكرا

#2

هل تقصد الفرق بين وضع تعريف الدوال داخل الكلاس ، أم في تعريفها في ملف منفصل ؟

فاذا كان كذلك ، فالداول التي تعرف داخل الكلاس تعتبر inline functions (الا اذا تجاهل المترجم ذلك) ، أما التي تعرف في الخارج سواء في نفس الملف أم في ملف منفصل .cpp فهي لا تكون inline الا اذا قمت بتوضيح ذلك صراحة.

وبشكل عام ، يفضل الفصل بين الواجهه (تصريح الدوال) عن التطبيق (تعريف الدوال) ، سواء في ملف منفصل أو حتى في نفس الملف ، حتى يسهل معرفة عمل الكلاس بمجرد النظر اليه ،، وعادة في سي++ يتم وضع التعريف في ملف .cpp منفصل ،،

اما اذا كنت تقصد عن الفرق بين وضع الدوال في كلاس member functions أم جعلها دوال عادية ؟

فلا يوجد فرق أيضا ولك الحرية فيما تريد ،، فهناك من يحب وضع أي مجموعه من الدوال الخدمية في كلاس (ويجعلها static) بحيث يستخدمها مباشره من غير كائن ، وهناك من لا يحب استخدام الكلاس الا لغرضه الأساسي moduling و يفضل وضع الدوال في namespace واستخدامها مباشره ، لكن هي في النهايه مجرد أذواق :) .

راجع هذا الموضوع :

Name Space ام Static Class ؟؟

بالتوفيق أخي الكريم،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

لو كنت حتستخدم الدوال دى فى الكلاس دى فقط, فمن اﻷفضل وضعها داخل الكلاس و تبقى private, أما static أو ﻷ فا دا يتوقف على معنى هذه الدوال و هل بتعتمد على كائن خلال عملها وﻻ ﻷ, أما لو كنت حتستخدمها فى كذا حاجة و مع كذا كلاس فمن اﻷفضل عمل كلاس خاصة بها و جعلها static member functions أو namespace كما تكرم اﻷخ وجدى و ذكر.

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