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

بعض الاسئلة حول Structs و Class و الواجهات

مغلق
بدأه أحمد حمادة في 6 نوفمبر 2005 · 9 رد · 1,268 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اولا : كل عام وانتم بخير

ثانيا : مجموعة من الاسئلة أرغب بان اجد الاجابة عليها خاصة ب Struct,Class an Interfaces ؟؟!

الاسئلة الخاصة بالاصناف و السجلات؟

- هل Struct هو من reference or a value type ?

- ما هو الفرق بين Struct و بين Class و متى يفضّل استخدام Struct بدلا من Class

- بماذا تتقيد structs ؟

السؤال الخاص بالواجهات ؟

الصراحة حتى الان لا اجد لها اي اهمية ابدا في سي شارب

من بعد اذنكم اذا كان هنالك استخدام لمثال عملي في البرمجة و ليس مثال لكيفية استخدامه (يعني استخداماته بكتابة البرامج الفعلية) فليذكرها لي؟

و اذا قام احدكم بتطبيق واجهات و كان مستخدمها في اجزاء من اكواده فالرجاء بان يضع لي الفكرة اي متى قام باستخدامها و متى احتاجها؟

ملاحظة : هذه الاسئلة قد خطرت لي اثناء قراءة كتاب الكتروني قمت بتحميله من المنتدى اسمه Structs and Interfaces فقد من اجل تجاوز رد "اقرا هذا الكتاب فيه كل اسئلتك"

لاني اريد اجوبة عملية

و لكم جزيل الشكر

#2

وعليكم السلام ورحمة الله وبركاته ,, وانت طيب.

الـ Struct طبعا Value Type أى يتم تخزينه وكل أعضائه في الـ Stack ... الا اذا كان يحتوي على عضو مثلا Reference Type فيتم وضع عنوان لهذا العضو في الـ Stack وقيمته تكون في الـ Heap. ولكن على كل الحال الـ Struct هو Value Type وهذا أكبر اختلاف بينه وبين الـ Classes.

الـ Struct من عيوبها أنها لا تدعم الوراثه .. وعموما لا يوجد فرق كبير جدا بينها وبين الـ Classes في الاستخدام ( في السي شارب ) فيوجد الكثير من الكلاسات ان قمت باستبدال كلمة Class ووضعت كلمة Struct مكانها لن يحدث شئ وسيظل كل شئ يعمل كما هو , ولكن الـ Struct ينصح باستخدامه في احدى الحالات منها اذا كنت لا تنوي أن تضع الكثير من الـ Members فيه لأنه كما ذكرت هو Value Type وعند تمريره بين الدوال سيتم عمل نسخه منه ولذلك ستستهلك ذاكره كبيره. ستقول لي اذا كان كبير فسنقوم باستخدام ref حتى نمرر عنوانه بدلا من تمرير نسخه منه لأنه كبير ؟! .. سأرد .. وما فائدة عمل ذلك كله فاذا كان الأمر كذلك فريح دماغك واجعله كلاس أفضل والكلاس Reference Type ومخصص الـ User Defined Types الكبيره ويدعم الوراثه ... أما اذا كان User Defined Type بتاعك صغير وليس من خطتك أن تستخدم معه أشكال الوراثه المختلفه فااجعله Struct بدلا من Class.

الـ Struct تتقيد بأشياء ليست كثيره جدا ( ارجع للـ MSDN أفضل ) من هذه الأشياء هى الوراثه , والـ Constructor الذي ليس له Parameters ... ولكنه مازال يستطيع أن يستمتع بما يتمتع به الكلاس من Properties و Operator Overloading والخ.

أما موضوع الـ Interface فيتكرر السؤال عنها كثيرا .. ابحث في المنتدى فيوجد أكثر من مشاركه بها معلومات عنه , اذا لم تستطع فهمها جيدا اخبرني وسأحاول شرحها لوحدها لأنه تكثر الأسئله عنها.

تم تعديل هذه المشاركة بواسطة معتز شمس في 6 نوفمبر 2005 في 08:36

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#4
اريد شرح الInterface

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

حاول الابتعاد قدر الإمكان عن structs إلا إذا اضطررت إليه..

#6

السلام عليكم

الرجاء اعذروني على تاخري بالرد .

المهم بالنسبة لشرحك اخ معتز كان ممتاز و كان قريب من شرح MSDN للرابط الى عطانا ياه اخ Asm جزاه الله خيرا.

بالنسبة للاخ الباش مهندس صدقني اني دورت على شرح الInterface في المنتدى ولقيت الرابط الي كتبته بس انا قبل ما اسئل سؤالي قرات الموضوع كله و حملت الكتاب الي قام abdelwahed بارفاقه بس انا الي بدي ياه هو شرح لتطبيق عملي عن الواجهات و ليس كمثال !!؟

بالنسبة للاخ ابو مازن مشكور على رده

فالرجاء اذا كان موجود تطبيق لمثال عملي عن الواجهات فالرجاء ان يقوم احد الاعضاء بوضعه و اكون شاكرا له.

والسلام عليكم

#7

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

موضوع 1

موضوع 2

ولو لسه في أي مشاكل في تفهم الموضوع قول وأنا إن شاء الله نحاول مع بعض لحد ما ييسر الله أمرة

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#8

أما بالنسبة للـ Struct

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

مثال تخيلي : لو عندك بيانات يتم تمريرها لدالة فرعية وهذه البيانات إرسالها ثابت أي أن

يتم إرسال كل مرة ( إسم الأول ، الإسم الأوسط ، الإسم الأخير ، رقم التليفون ، كود الشخص )

فهل كل مرة تقوم بإرسال بيان بيان مثل ذلك

SubFunction(firstname, MidName, LastName, Phone, Code);

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

SubFunction(PersonalData);

فبالطبع الموضوع أصغر من ذلك أو أكبر

فلذلك يتم تعريف Struct وبه البيانات السابقة

ويمكنك القول أنه Table متحرك فأسماء البيانات فهي Columns والبيانات الموجودة بها Rows

وذلك في حالة عمل مصفوفة من Struct

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#9

دروس في البرمجة الشيئية

/index.php?showtopic=49569

توجد عدة أمثلة تطبيقية في نهاية الموضوع..

بالتوفيق!

#10

السلام عليكم

رح احاول ادور اكتر و اكتر لبين ما افهم الموضوع .

سلمت يداكم

و جعلها الله في ميزان اعمالكم و لكم جزيل الشكر

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

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