تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس العاشر : التراكيب :) Structure
#1
منقول من المنتدى القديم
كاتب المقال احمد جمال المشرف العام
بتاريخ 27-02-08

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


ال Structure او Structs هي انواع مخصصة من البيانات يمكنك انشاءها تستطيع حمل اي خصائص على شكل متغيرات او حتى دوال وخلافه ، ابسط مثال على Struct هو مثال السيارة ، لكل سيارة نجد موديل الصنع واسم الماركة ورقم اللوحة مثلاً ، يمكننا كتابة ال Struct بالشكل التالي مثلاً :

C#:
كود :
struct Car
{
public int carNumber;
public int year;
public string factory;
};

VB.net:
كود :
Structure Car
    
    
    Public carNumber As Integer
    
    Public year As Integer
    
    Public factory As String
    
End Structure

والآن عندما نريد تعريف نسخة من (سيارة) فإننا نقوم بتعيين خصائصها بالشكل التالي :

C#:
كود :
Car ahmedcar = new Car();
ahmedcar.carNumber = 1000;
ahmedcar.factory = "Nissan";
ahmedcar.year = 2007;

VB.net:

كود :
Dim ahmedcar As New Car()
ahmedcar.carNumber = 1000
ahmedcar.factory = "Nissan"
ahmedcar.year = 2007

يمكن ان يحتوي ال Struct على عنصر هو الآخر بدوره Struct ، لو افترضنا Struct لرخصة السير يحتوي على اسم المستخدم والسنوات المتبقية لانتهاء الرخصة مثلاً ، فسيكون ذلك بالشكل التالي :

C#:
كود :
[CODE]


struct Licence
{
public string UserName;
public int yearsToFinish;
[/CODE]

VB.net:
كود :
Structure Licence
    
    
    Public UserName As String
    
    Public yearsToFinish As Integer
    
End Structure

والآن لو اردنا ان نجعل رخصة السير جزء من خصائص السيارة ، فسيتم ذلك بالشكل التالي :

C#:

كود :
struct Car
{
public int carNumber;
public int year;
public string factory;
public Licence carLicence;
};
VB.net:
كود :
Structure Car
    
    
    Public carNumber As Integer
    
    Public year As Integer
    
    Public factory As String
    
    Public carLicence As Licence

ولتحديد خصائص اي سيارة سنكتب كود بالشكل التالي :

C#:
كود :
Car ahmedcar = new Car();
ahmedcar.carNumber = 1000;
ahmedcar.factory = "Nissan";
ahmedcar.year = 2007;
ahmedcar.carLicence.UserName = "Ahmed Gamal";
ahmedcar.carLicence.yearsToFinish = 3;

VB.net

كود :
Dim ahmedcar As New Car()
ahmedcar.carNumber = 1000
ahmedcar.factory = "Nissan"
ahmedcar.year = 2007
ahmedcar.carLicence.UserName = "Ahmed Gamal"
ahmedcar.carLicence.yearsToFinish = 3
الرد }}}}
تم الشكر بواسطة:
#2
منقول من المنتدى القديم
كاتب المقال احمد جمال المشرف العام
انشاء الدوال داخل ال Struct :

يمكننا في داخل اي Struct انشاء دالة لتقوم ببعض العمليات على هذا ال Struct ، ابسط مثال على ذلك لو اردنا عمل دالة renew لتجديد رخصة السير ، يمكن في هذه الحالة كتابة ال Struct بالشكل التالي :

C#:
كود :
struct Licence
{
public string UserName;
public int yearsToFinish;
public void renew(int periode)
{
yearsToFinish += periode;
}

VB.net:

كود :
Structure Licence
    
    
    Public UserName As String
    
    Public yearsToFinish As Integer
    
    Public Sub renew(ByVal periode As Integer)
    
        
        yearsToFinish += periode
        
    End Sub
    
End Structure

وهكذا يمكننا تجديد فترة الرخصة عن طريق الوصول إلى هذه الدالة مباشرة .

في التطبيقات الفعلية في العادة لا يسمح لك بالوصول إلى العناصر مباشرة إلا عن طريق دالة وذلك لمنع ادخال بيانات مغلوطة مثلاً . يمكن عمل دالة Create لانشاء ال Struct مثلاً ، وبعد انشاء نسخة من ال Struct يتم استدعاء هذه الدالة لملئ البيانات حيث لن يسمح لك برؤية باقي المتغيرات .

هناك حل آخر باستخدام Constructor او المشيد ، حيث يمكنك وقت انشاء نسخة من ال Struct تمرير البيانات المطلوبة ، يتم كتابة المشيد بالشكل التالي :

C#:
كود :
struct Car
{
private int carNumber;
private int year;
private string factory;
private Licence carLicence;
public Car(int p_carNumber, int p_year, string p_factory,Licence p_carLicence)
{
carNumber = p_carNumber;
factory = p_factory;
year = p_year;
carLicence = p_carLicence;
}
};

VB.net:

كود :
Structure Car
    
    
    Private carNumber As Integer
    
    Private year As Integer
    
    Private factory As String
    
    Private carLicence As Licence
    
    Public Sub New(ByVal p_carNumber As Integer, ByVal p_year As Integer, ByVal p_factory As String, ByVal p_carLicence As Licence)
        
        
        carNumber = p_carNumber
        
        factory = p_factory
        
        year = p_year


End Sub

End Structure

لاحظ اننا حولنا الوصول إلى المتغيرات ليكون private بحيث لا يمكن الوصول له خارج ال Struct ، معرفات الوصول ستكون احد مواضيعنا حينما ندخل في عالم ال OOP لذا لا تتعجل ولكن يكفي ان تعلم ان public تجعل قابلية الوصول من اي مكان إلى المتغير او الدالة ، اما private فلا يمكن الوصول لها إلا من داخل ال Struct .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الأول : تحميل .net 2008 ومميزات استخدامه oneyemenweb2 1 669 07-03-13, 02:04 AM
آخر رد: abdoojh
  اعلان - انتهاء الدورة - الدرس التاسع والسبعون -) RaggiTech 0 598 14-10-12, 11:23 PM
آخر رد: RaggiTech
  الدرس الثامن والسبعون - Ajax RaggiTech 2 868 14-10-12, 11:22 PM
آخر رد: RaggiTech
  الدرس السابع والسبعون - ASP.net وقواعد البيانات RaggiTech 2 906 14-10-12, 11:19 PM
آخر رد: RaggiTech
  الدرس السادس والسبعون - ASP.net - الجزء الثالث RaggiTech 7 1,144 14-10-12, 11:14 PM
آخر رد: RaggiTech
  الدرس الخامس والسبعون - ASP.net - الجزء الثاني RaggiTech 5 1,309 14-10-12, 11:07 PM
آخر رد: RaggiTech
  الدرس الرابع والسبعون - ASP.net RaggiTech 6 1,083 14-10-12, 10:58 PM
آخر رد: RaggiTech
  الدرس الثالث والسبعون - مقدمة إلى تطوير المواقع RaggiTech 4 842 14-10-12, 10:44 PM
آخر رد: RaggiTech
  الدرس الثاني والسبعون - مقدمة إلى Mono RaggiTech 0 594 14-10-12, 10:37 PM
آخر رد: RaggiTech
  الدرس الواحد والسبعون - XML Commenting RaggiTech 2 793 14-10-12, 10:35 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم