السلام عليكم و رحمه الله و بركاته
ما الفرق بين Classes و namespaces?
السلام عليكم و رحمه الله و بركاته
ما الفرق بين Classes و namespaces?

Business Card
Ahmad Fathy Ahmad
Computer and Systems Department
Faculty of Engineering, Alexandria University
Cellular: +2 010 1461154
E-mail: midoalx@hotmail.com
ICQ: 148481391
غيش جاب لجاب
ال namespace عبارة عن تنظيم لوضع ال classes داخل المشاريع البرمجية. وأتت الحاجة إليها من تكرار الأسماء في المشاريع.
مثلاُ: لو عندك class معين له اسم عام مثل Connection وكنت تريد إستخدام نفس هذا الإسم لبناء class آخر في نفس المشروع. ولا يلزم نفس المشروع ولكن المكتبات المستخدمة في نفس المشروع. فمكتبة .net سلكت هذا المسلك لوضع ال class التي تدعم وجهة معينة في namespace معين. مثل Form, button, lable في System.Windows.Form
أما ال class فهي الكتل التنفيذية.
السلام عليكم و رحمه الله و بركاته
جزاك الله خيراً يا سيدى الفاضل
اعذرنى لم افهم جيداً فربما هو سوء استيعاب منى :(
و لكن ما توصلت اليه من مضمون كلامك ان الNamespace هو التصنيف .. فمثلا System.Windows
فإن windows هو namespace ... و هكذا

Business Card
Ahmad Fathy Ahmad
Computer and Systems Department
Faculty of Engineering, Alexandria University
Cellular: +2 010 1461154
E-mail: midoalx@hotmail.com
ICQ: 148481391
System.Windows هو Namespace يحتوي على مجموعة Classes أو Namespaces
مثلاُ
System.Windows.Forms هو Namespace داخل System.Windows
و
System.Winows.Forms.Form هو Class داخل هذا الـNamespace
اولا ازيك يا احمد عامل ايه ..
ثانيا بعد اذن اخى الفاضل mossa طبعا :rolleyes:
تعقيبا على الكلام وبمنتهى البساطه ان ال namespace ما هو الى مجموعه من الclasses يتبعو حاجه معينه وهى عمليه تنظيميه لك :) ..
قولى بقى "اعذرنى لم افهم جيداً فربما هو سوء استيعاب منى " B) B)
بسم الله الرحمن الرحيم
إِنَّ الَّذِينَ آمَنُوا وَعَمِلُوا الصَّالِحَاتِ إِنَّا لَا نُضِيعُ أَجْرَ مَنْ أَحْسَنَ عَمَلاً
صدق الله العظيم
=================
Belal Mahmoud Younes
Solution Developer
Link Development a LINKdotNET subsidiary
Mobile : 010 89 69 772
E-mail : belalyounes@hotmail.com
باختصار اخي الكريم
الNamespace هو عبارة عن نطاق توجد فيه مجموعة من الاصناف و ربما تحتوي على namespace اخر.
كل Class صنف تنتمي إلى نطاق تتواجد فيه Namespace مثال على ذلك الفورم System.windows.Forms فهذا يعني وجود كلاس او صنف Class اسمه فورمز Forms يوجد في النطاق System.windows
فائدة Namespace هو انشاء مرجع إلى النطاقات المستخدمة في المشروع
على سبيل المثال
using System.Windows.Forms; يمكن كتابة التالي اذا كان السطر الأعلى موجودا Button btn =new Button; اذا لم يكن موجودا استخدم التالي كاملا System.Windows.Forms.Button btn =new System.Windows.Forms.Button;
لاحظ انها اختصرت كتابة المسار كاملا... وهذه الفائدة
تم تعديل هذه المشاركة بواسطة خالد العبدلله في 28 أغسطس 2005 في 12:15
آسف إذا أنا تاخرت عليكم إذا فية إشكال أبلغني
بكل بساطة كما أن الكلاس هو مجموعة من ال Methods و ال Functions و ال Properties و ال Variables فال NameSpace هو مجموعة من الكلاسات
يمكنك ان تلقى نظرة على المقالة الموجودة بالمرفقات
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
بالاضافة الى ذلك يمكن ان يحتوي ال namespace على متغيرات ايضا
namespace air
{
int o2;
}وهو مساعد في حالة ضرورة كتابة نفس الاسم في نفس الدالة مثلا وهذه كانت عملية صعبة ولذلك تسهل عملية ال namespace ذلك فبذلك يمكنك كتابة هذه القيم في نفس الدالة او الملف وكل منها له قيم مختلقة عن الاخر
Variable::a; var::a;
تم تعديل هذه المشاركة بواسطة ahmed_3d في 7 سبتمبر 2005 في 22:57
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
ahmed_3d كتب:بالاضافة الى ذلك يمكن ان يحتوي ال namespace على متغيرات ايضاnamespace air { int o2; }وهو مساعد في حالة ضرورة كتابة نفس الاسم في نفس الدالة مثلا وهذه كانت عملية صعبة ولذلك تسهل عملية ال namespace ذلك فبذلك يمكنك كتابة هذه القيم في نفس الدالة او الملف وكل منها له قيم مختلقة عن الاخر
Variable::a; var::a;
لا يمكن أن تحتوي الnamespace على متغيرات فقط classes أو structs أو delegates لكن لا يمكن أن تحتوي على متغيرات من نوع int مثلاً
Sr. Software Development Engineer
Hulu, LLC
My Blogs
هذا هو المصدر للمعلومة
http://www.functionx.com/managedcpp/Lesson08.htm
اقتباسAs mentioned for the header file, there is no strict rule as to what goes in a namespace, as long as it is appropriately set. This means that, besides classes, you can declare variables in a namespace. Here is an example:#pragma once
namespace FlatShapes
{
struct CSquare
{
double Side;
double Perimeter;
double Area;
};
int number;
}
تم تعديل هذه المشاركة بواسطة ahmed_3d في 7 سبتمبر 2005 في 23:40
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
اقتباسماشي بس ده في ال ++C مش في الdot net
Managed c++ الل تستخدم في الدوت نت
:)
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
هذه الخاصية موجودة فقط في ال Managed C++ و لكنها غير موجودة في ال #C أو ال#J أو الVB.net و هذا لأن ال++C طول عمرها كده و لازم يكون فيه backword comptability و كمان ال++C لا تعتبر من لغات الdotnet الأساسية لأنها مازالت يمكنها انشاء برامج خارج اطار الdot net و لكن عموما الnamespace لا تحوي سوى Types فقط و ليس variables لأن جميع اللغات الFull OO لا تسمح بالGlobal Variables و هذا من مبادئ الdot net الأساسية أن يكون النظام نفسه Full OO
Sr. Software Development Engineer
Hulu, LLC
My Blogs
السلام عليكم.
م.محمد.. لاحظ الكود المكتوب تجد أنه يحتوي "::" أي أنه كود ++C. و في ++C (سواء unmanaged او with managed extensions في إصدارة VC++2003 أو VC++2005 المسماة CLI) يمكن أن يحتوي الـ namespace على variables كما و لابد أنك تعلم.
و لكن شخصيا أرى أن هذا تتسم به ++C فقط كجزء من الفلسفة العامة للغة من حيث عدم وضع أي قيد على المبرمج، و هو ما قد لا أفضله في بعض الأحيان. لذا أفضل منظور الـ #C من حيث قصر الـ namespace على كونه حاوي للأنواع (classes, structs, eums, etc....) و بالطبع للـ namespaces الأخرى بغرض المزيد من التنظيم في الاسماء؛ بهدف هام هو تنظيم الأسماء بشكل منطفي (طبعا هذا يعتمد على استخدام المبرمج في النهاية) و منع تكرار أسماء الأنواع في أكثر من مكان. من خلال توفير اسم كامل مختلف لكل منهم. فمثلا تخيل لو أنني using أستخدم System.Windows.Forms namespace و System.Web.UI namespace و حاولت نداء الـ Class المسماة Control! هنا يوجد Class بنفس الاسم في كلا الـ namespaces و لن يفهم الـ compiler هذا او يسمح به أصلا. لذا علي أن أحدد أيتها التي أريد ثم أناديها باسمها الكامل. الوضع هنا مطابق تماما اذا لم يكن هناك namespaces (لم يكن الـ compiler ليسمح بوجودهم أيضا في ملف واحد لكن هما فعلا في ملفين مستقلين قد يحدث [بغرض تعمد اختلاق هذا الوضع مثلا!!] أن أقوم بعمل reference لكليهما ). مع وجودهما في namespaces يمكنني ببساطة الخروج من المأزق بأن أنادي التي أريدها باسمها الكمل (و هي غالبا System.Web.UI.Control لأن أغلب عملي Web) و هذا هو الـ namespace و عمله كما بين الإخوة مشكورين.
بالمناسبة: يمكن أيضا في ++C و #C أن توجد الأنواع بدون أن تكون داخل namespace!!
******* معذرة يا م. محمد... بدأت ردي قبل أن تضع ردك الأخير، و يبدو أنني أنهيته بعد أن وضعته - أكرر اعتذاري *******
السلام عليكم
تم تعديل هذه المشاركة بواسطة Mohamed Ahmed Meligy في 8 سبتمبر 2005 في 00:06
,Regards
Mohamed Ahmed Meligy
Senior Software Engineer
SilverKey Tech - Egypt Branch
Computer Engineering Student
High Institute of Engineering, Culture and Science City
E-mail: Eng.Meligy@Gmail.com
Weblog: http://GeeksWithBlogs.NET/Mohamed
Mobile: +20 10 603 3013
لا داعي للإعتذار فأنا أعرف منذ البداية أن الكود كان ++C من كلمة pragma في أول سطر و كنت أتكلم منذ البداية عن هذا و كنت فقط أحاول أن أُؤكِد أن الdot net في مفهومه العام لا يسمح بالvariables داخل الnamespaces و لكن ال++C دائما خارج الحدود لأنها ++C
Sr. Software Development Engineer
Hulu, LLC
My Blogs
السلام عليكم.
حتى لا يحدث بلبلة للأعضاء فقط يا م.محمد 8-)
استخددام الـ Preprocessor Directive المسمى prgma# في C# 2.0 أو 2005
و شكرا على سعة صدرك :)
السلام عليكم
تم تعديل هذه المشاركة بواسطة Mohamed Ahmed Meligy في 8 سبتمبر 2005 في 18:44
,Regards
Mohamed Ahmed Meligy
Senior Software Engineer
SilverKey Tech - Egypt Branch
Computer Engineering Student
High Institute of Engineering, Culture and Science City
E-mail: Eng.Meligy@Gmail.com
Weblog: http://GeeksWithBlogs.NET/Mohamed
Mobile: +20 10 603 3013
اقتباسالكود كان ++C من كلمة pragma
يتم استخدام ال preprocessor pragmaفي ال Managed c++ ايضا
تم تعديل هذه المشاركة بواسطة bashmohandes في 10 سبتمبر 2005 في 02:29
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
اقتباسيعني هي الManaged C++ دي مش ++C برضه
توجد فروقات كثيرة بين الاثنين
انا فقط اردت ان ابين انه لا تستخدم في السي++ كما ذكرت في ردك فقط ولكن ايضا في ال managed c++ والتي هي مهمة في برمجة الدوت نت وركيزة اساسية في ال vc++.net واردت ان ابين بعض اساسيات ال managed c++ عند التعامل مع ال namespace
يعني اللخبطة اللي حاصلة اني اتكلم عن ال managed c++ وانت تتكلم عن ال c++ وتوجد فروقات بين الاثنين
ارجوا الا تكون قد غضبت لاني لم اقصد الا الخير في ردي وانا استغربت عند قيامك بأضافة هذه الاسطر في ردي وانا لم اقلها
اقتباسيعني هي الManaged C++ دي مش ++C برضهيبقى أكيد فيها pragma
"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد
احمد عبد الحميد ابوغرارة
هذا الموضوع مغلق.