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

ما الفرق بين Classes و namespaces?

مغلق
بدأه AHMAD FATHY في 26 أغسطس 2005 · 22 رد · 2,443 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ما الفرق بين Classes و namespaces?

AlexCard.gif

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

#2

غيش جاب لجاب

ال namespace عبارة عن تنظيم لوضع ال classes داخل المشاريع البرمجية. وأتت الحاجة إليها من تكرار الأسماء في المشاريع.

مثلاُ: لو عندك class معين له اسم عام مثل Connection وكنت تريد إستخدام نفس هذا الإسم لبناء class آخر في نفس المشروع. ولا يلزم نفس المشروع ولكن المكتبات المستخدمة في نفس المشروع. فمكتبة .net سلكت هذا المسلك لوضع ال class التي تدعم وجهة معينة في namespace معين. مثل Form, button, lable في System.Windows.Form

أما ال class فهي الكتل التنفيذية.

#3

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

جزاك الله خيراً يا سيدى الفاضل

اعذرنى لم افهم جيداً فربما هو سوء استيعاب منى :(

و لكن ما توصلت اليه من مضمون كلامك ان الNamespace هو التصنيف .. فمثلا System.Windows

فإن windows هو namespace ... و هكذا

AlexCard.gif

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

#4

System.Windows هو Namespace يحتوي على مجموعة Classes أو Namespaces

مثلاُ

System.Windows.Forms هو Namespace داخل System.Windows

و

System.Winows.Forms.Form هو Class داخل هذا الـNamespace

#5

اولا ازيك يا احمد عامل ايه ..

ثانيا بعد اذن اخى الفاضل 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

#6

باختصار اخي الكريم

ال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

#7

آسف إذا أنا تاخرت عليكم إذا فية إشكال أبلغني

#8

بكل بساطة كما أن الكلاس هو مجموعة من ال Methods و ال Functions و ال Properties و ال Variables فال NameSpace هو مجموعة من الكلاسات

#9

يمكنك ان تلقى نظرة على المقالة الموجودة بالمرفقات

كل ما تحتاج معرفته عن فضاءات الاسماء Namespaces.rar

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#10

بالاضافة الى ذلك يمكن ان يحتوي ال namespace على متغيرات ايضا

namespace air
{
int o2;
}

وهو مساعد في حالة ضرورة كتابة نفس الاسم في نفس الدالة مثلا وهذه كانت عملية صعبة ولذلك تسهل عملية ال namespace  ذلك فبذلك يمكنك كتابة هذه القيم في نفس الدالة او الملف وكل منها له قيم مختلقة عن الاخر

Variable::a;
var::a;

تم تعديل هذه المشاركة بواسطة ahmed_3d في 7 سبتمبر 2005 في 22:57

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#11
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

#12

هذا هو المصدر للمعلومة

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

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#13

ماشي بس ده في ال ++C مش في الdot net

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#14
اقتباس
ماشي بس ده في ال ++C مش في الdot net

Managed c++ الل تستخدم في الدوت نت

:)

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#15

هذه الخاصية موجودة فقط في ال 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

#16

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

م.محمد.. لاحظ الكود المكتوب تجد أنه يحتوي "::" أي أنه كود ++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

#17

لا داعي للإعتذار فأنا أعرف منذ البداية أن الكود كان ++C من كلمة pragma في أول سطر و كنت أتكلم منذ البداية عن هذا و كنت فقط أحاول أن أُؤكِد أن الdot net في مفهومه العام لا يسمح بالvariables داخل الnamespaces و لكن ال++C دائما خارج الحدود لأنها ++C

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#18

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

حتى لا يحدث بلبلة للأعضاء فقط يا م.محمد 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

#19

حتى pragma لطشوها من الC :lol:

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#20
اقتباس
الكود كان ++C من كلمة pragma

يتم استخدام ال preprocessor pragmaفي ال Managed c++ ايضا

تم تعديل هذه المشاركة بواسطة bashmohandes في 10 سبتمبر 2005 في 02:29

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#21

مش ال Managed C++ دي في الآخر ++C برضه... يبقى أكيد فيها pragma

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#22
اقتباس
يعني هي الManaged C++ دي مش ++C برضه

توجد فروقات كثيرة بين الاثنين

انا فقط اردت ان ابين انه لا تستخدم في السي++ كما ذكرت في ردك فقط ولكن ايضا في ال managed c++ والتي هي مهمة في برمجة الدوت نت وركيزة اساسية في ال vc++.net واردت ان ابين بعض اساسيات ال managed c++ عند التعامل مع ال namespace

يعني اللخبطة اللي حاصلة اني اتكلم عن ال managed c++ وانت تتكلم عن ال c++ وتوجد فروقات بين الاثنين

ارجوا الا تكون قد غضبت لاني لم اقصد الا الخير في ردي وانا استغربت عند قيامك بأضافة هذه الاسطر في ردي وانا لم اقلها

اقتباس
يعني هي الManaged C++ دي مش ++C برضه

يبقى أكيد فيها pragma

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#23

أنا أسف جداً فلم أقصد اضافتها في ردك :lol: كنت أقصد الرد عليك و يبدو أنني بدلاً من ان اضغط على تعقيب ضغطت على تحرير و لهذا لم أجد الماشركة بعد أن كتبتها :lol: فاضفتها مرة أخرى

أنا آسف مرة أخرى

Sr. Software Development Engineer
Hulu, LLC
My Blogs

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

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