السلام عليكــم ورحمـة الله وبركاتــه
أود أن أعرف ما الفرق بين structure و class?
السلام عليكــم ورحمـة الله وبركاتــه
أود أن أعرف ما الفرق بين structure و class?
بشكل عام :
Classes = Reference Types ( أنواع مرجعية )
Structures = Value Types ( أنواع قيمِة )
المزيد من الشرح ؟
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
لو ممكن توضح لي بمثال واكون شاكرة
الكلاس عبارة عن كونتينر بمعنى
انه مجرد مكان لوضع به مجموعة من الــ Functions والــ Sub
ويتم استخدامه من اي مكان في المشروع عن طريق عمل متغير جديد باسمه
Dim x as new class1
ومن ثم اذا اردتي ان تتعاملي مع Function معين او sub معين بداخل هذا الكلاس
فقط قومي بوضع دوت بجانب الــ x
x.Myfunction
وهاكذا
دعيني اشرحلك الــStructures
وهي عبارة عن بناء تبنيه ليكون شئ معين
على سبيل المثال
عندنا في الشقة كذا باب
وعاوزين ننشئ هذه الأبواب
الباب من صفاته
الطول
العرض
نوع الخشب
اللون
فهنا نعمل Structure اسمه Door على سبيل المثال
Structure Door Dim length As Double Dim width As Double Dim WoodType As String Dim Color As Color End Structure
ومن ثم نسطيع ان ننشئ متغيرات من نوع هذا البناء
وليكن نريد ان ننشئ باب المطبخ على سبيل المثال فنقول
Dim kitchenDoor as Door kitchenDoor.length = 130 kitchenDoor.width = 50 kitchenDoor.WoodType = "Zan" kitchenDoor.Color = Color.Blue
وهكذا اذا اردنا ان ننشئ باب غرفة النوم
Dim BedRoomDoor as Door BedRoomDoor .length = 130 BedRoomDoor .width = 50 BedRoomDoor .WoodType = "Zan" BedRoomDoor .Color = Color.Blue
وهاكذا
وهناك ايضا حاجة اسمها Structures Within Structures
وهي عبارة عن بناء بداخل بناء
بمعنى
اذا اردنا نزود الأكرة بتاعة الباب للأبواب اللي احنا لسة عاملنها
والأكرة دي لها خصائص مستقلة بذاتها
مثلا
لونها
شكلها
المادة المصنعة
حجمها
فنعمل بناء خاص بهذه الأكرة هكذا
Structure Okra Dim Frame As String Dim Material As String Dim Size As String Dim Color As Color End Structure
ومن ثم نضيف في الــStructure بتاع الباب الجزء بتاع الأكرة هكذا
Structure Door Dim length As Double Dim width As Double Dim WoodType As String Dim Color As Color Dim Okra As Okra End Structure
ومن ثم بعد ما قمنا بتعريف متغير لباب المطبخ اللي عملناه من قبل نسطيع ان ننده على الأكرة لوضع قيم لها هكذا
Dim kitchenDoor As Door kitchenDoor.length = 130 kitchenDoor.width = 50 kitchenDoor.WoodType = "Zan" kitchenDoor.Color = Color.Blue kitchenDoor.Okra.Color = Color.Aqua kitchenDoor.Okra.Frame = "circularity" kitchenDoor.Okra.Material = "gold" kitchenDoor.Okra.Size = "Normal"
بس خلاص
لو عاوزة توضيح لحاجة انت مش فهماها في اللي انا قلته قولي
Mohamed Ali Salim
0.1..0...4....7.....6......2.......7........4.........8
Dena22 كتب:لو ممكن توضح لي بمثال واكون شاكرة
مرحباً أختي الكريمة ..
الفرق بين الـ Sturcture والـ Class .
الـ Structure لا تمكنك من وضع قيم إفتراضية لمتغيّرتها, وأيضاً لاتمكنك من جعلها ترث أي شيء لذلك تستخدم كمعامل له خصائص كما ذكر الأخ محمد علي سالم .
هي بإختصار نوع تحددين اي شيء داخلها كنوع من أنواع أخرى .
مثال :
Public Class Form1 Private ListOfBooks As New List( Of Book ) Private Structure Book Dim TitleAs String Dim Author As String Dim Copyright As String Dim PagesCount As Integer Dim Subject As String Public Sub New( Byval BTitle, Byval BAuthor, Byval BCopyrights, _ Byval BPagesCount, Byval BSubject ) Title= BTitle : Author = BAuthor : Copyright = BCopyrights PagesCount = BPagesCount : Subject = BSubject End Sub End Structure Private Sub BtnAdd_Click( Byval Sender As System.Object, _ E As System.EventArgs ) Handles BtnAdd.Click ListOfBooks.Add( New Book( "Title", "Author", "Copyrights", 500, "Subject" ) ) End Sub End Class
ويمكنك إستخدامه بدون تعريفه على شكل جديد :
سأعود لأشرح هذه الفكرة .......
أما الـ Class فيسمح لك فعل ماتريدين بمتغيّراته, خصائصه, أي شيء, وحتى يسمح لك أن تجعليه يرث صف من الصفوف الأخرى أو تجعليه موروثاً في صفوف أخرى .
مثال :
Public Class Form1 Private ListOfBooks As New List( Of Book ) Private Clase Book Dim TitleAs String = String.Empty Dim Author As String = String.Empty Dim Copyright As String = String.Empty Dim PagesCount As Integer = 500 Dim Subject As String = String.Empty Public Sub New( Byval BTitle, Byval BAuthor, Byval BCopyrights, _ Byval BPagesCount, Byval BSubject ) Title= BTitle : Author = BAuthor : Copyright = BCopyrights PagesCount = BPagesCount : Subject = BSubject End Sub End Class Private Sub BtnAdd_Click( Byval Sender As System.Object, _ E As System.EventArgs ) Handles BtnAdd.Click ListOfBooks.Add( New Book( "Title", "Author", "Copyrights", 500, "Subject" ) ) End Sub End Class
لمزيد من الأسئلة اكتبي ماتريدين معرفته او شرحاً له .
بالتوفيق
تم تعديل هذه المشاركة بواسطة Bashar Rabat في 25 يناير 2009 في 02:31
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
حسنا, بقيّ شيء أخير لأقوله عن الفروق وهو كم ذكر الأخ محمد علي سالم, أن الـ Class لايمكن استخدامه بشكل مباشر أي ( قبل تصريح كـ Class جديد ), اما الـ Structure فلا تتطلب ذلك أي يمكنك الوصول الى أي خصائصها والتعديل عليهم أيضاً, أمثال :
[color= #000000; font-weight: bold;]Private Structure Word Dim Language [color= #b1b100;]As String Dim Length [color= #b1b100;]As Integer [color= #990000;]End Structure
الإستخدام :
Dim MyWord [color= #b1b100;]As Word With MyWord [color= #339933;].Language [color= #339933;]= Chinese [color= #339933;].Length [color= #339933;]= [color= #cc66cc;]8 [color= #990000;]End With
أما بالنسبة لـ Class, لنستخدم نفس الشكل المذكور :
طبعاً الـ Private يجب أن يكون مضمن بـ Class أخر .
[color= #000000; font-weight: bold;]Private [color= #000000; font-weight: bold;]Class Word Dim Language [color= #b1b100;]As String Dim Length [color= #b1b100;]As Integer [color= #990000;]End [color= #000000; font-weight: bold;]Class
الإستخدام
Dim MyWord [color= #b1b100;]As [color= #000000; font-weight: bold;]New Word With MyWord [color= #339933;].Language [color= #339933;]= Chinese [color= #339933;].Length [color= #339933;]= [color= #cc66cc;]8 [color= #990000;]End With
إذا حاولت استخدام Class على شكل غير جديد, سوف تكونين غير قادرة على الوصول الى أي من خصائص هذا الـ Class أو حتى إستخدامه :S .
إذا أردت استخدام بعض من ( عملياته, متغيّراته ) فعليك تعرفيها على هيئة مشتركة عامة اي ( Public Shared ), لكن لايحبذ إستخدام هذا النوع من التصريح مع هذه الأمور ( المتغيّرات بحد ذاتها ) لأنه لديك خيار أخر وهو الـ Structure .
بالنسبة للعمليات المشتركة, ليس هنالك مشكلة بتصريحها على شكل مشترك عام, طبعاً حسب الإستخدام .
لا تستخدمي الـ Code التالي ( مثال فقط )
[color= #000000; font-weight: bold;]Private [color= #000000; font-weight: bold;]Class Word [color= #000000; font-weight: bold;]Public Shared Language [color= #b1b100;]As String [color= #000000; font-weight: bold;]Public Shared Length [color= #b1b100;]As Integer [color= #990000;]End [color= #000000; font-weight: bold;]Class
الإستخدام :
Dim MyWord [color= #b1b100;]As Word MyWord[color= #339933;].Language [color= #339933;]= [color= #0000ff;]"Chinese" MyWord[color= #339933;].Length [color= #339933;]= [color= #cc66cc;]5
بالتوفيق .
تم تعديل هذه المشاركة بواسطة Bashar Rabat في 25 يناير 2009 في 12:57
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
الفرق بي ال struct و class
انه في كل class ممكن يكون struct بس كل class مش ممكن يكون struct
علشان في ال class في خاصية access control
يعني privet , public وهي غير متواجد في ال struct
اذا عرفت متغير في ال class تحت privet تصبح هذه المتغيرات متاحه فقط
لي function الي داخل ال class يعني اي member function فقط
والعكس صحيح مع الpublic
)))منقول)))
بعد قراءة موضوع في هذا المنتدى قمت بعمل ملف صغير
فهل ما بداخله من معلومات صحيحة؟
حتى الآن لم أستقر على إجابة شافية! هل هناك فرق بينهما أم لا؟!