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

ما الفرق بين Structure و Class?

بدأه Dena22 في 24 يناير 2009 · 7 رد · 5,147 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أود أن أعرف ما الفرق بين structure و class?

#2

بشكل عام :

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.

#3

لو ممكن توضح لي بمثال واكون شاكرة

#4

الكلاس عبارة عن كونتينر بمعنى

انه مجرد مكان لوضع به مجموعة من الــ 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

#5
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.

#6

حسنا, بقيّ شيء أخير لأقوله عن الفروق وهو كم ذكر الأخ محمد علي سالم, أن الـ 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.

#7

الفرق بي ال struct و class

انه في كل class ممكن يكون struct بس كل class مش ممكن يكون struct

علشان في ال class في خاصية access control

يعني privet , public وهي غير متواجد في ال struct

اذا عرفت متغير في ال class تحت privet تصبح هذه المتغيرات متاحه فقط

لي function الي داخل ال class يعني اي member function فقط

والعكس صحيح مع الpublic

)))منقول)))

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