تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثالث عشر : مقدمة إلى الفئات Classes
#1
منقول من المنتدى القديم
كاتب المقال أحمد جمال المشرف العام
تاريخ 11-03-08
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

كما لاحظنا في دروسنا السابقة ، فإن البرنامج المنشأ تحت Console Application يحتوي على فئة واحدة مسماه باسم class Program تحتوي بداخلها على دوال ومتغيرات واجراءات وطرق ... في الواقع فالبنية الاساسية لأي برنامج يطبق مبادئ OOP هو الكلاس Class .

يمكن ان يحتوي البرنامج على عدة كلاسات ، ويمكن ان يحتوي الكلاس ايضاً على عدة كلاسات بداخله ، في حالة رغبتك في عمل Class منفصل يمكنك اضافة New Class من Project .

يتم تعريف الكلاس باستخدام الكلمة المحجوزة Class ومن ثم اسمه ، يتم تعريف مكوناته بين {} في السي شارب أو من بعد جملة التعريف حتى End Class في VB.net ، سنقوم بادراج كلاس جديد ونسميه باسم Person ، سنجد الكود التالي موجوداً بصورة افتراضية :

C#:
كود :
namespace ConsoleApplication4
{
    class Person
    {
    }
}

VB.net:

كود :
Namespace ConsoleApplication4
    Class Person

    End Class
End Namespace

الجزء الأول الذي يحدد ال namespace ضروري ، حيث يعني هذا ان جميع الكلاسات الموجودة تحت نفس ال namespace يمكنها رؤية بعضها الآخر ، لذا سنتمكن من التعامل مع الكلاس الجديد من خلال main الخاصة بنا في الكلاس الاساسي Program .


ابسط مكونات أي كلاس هي المتغيرات ، يمكننا مثلاً اضافة بيانات الاسم الأول والأخير والعمر داخل الكلاس بالشكل التالي :

C#:
كود :
class Person
{
public string FirstName;
public string LastName;
public int Age;
}

VB.net:
كود :
Class Person

    Public FirstName As String
    Public LastName As String
    Public Age As Integer
End Class

الآن يمكن تعريف عدة كائنات Objects من هذا الكلاس بالشكل التالي مثلاً :


C#:

كود :
Person Ahmed = new Person();
            Ahmed.Age = 15;
            Ahmed.FirstName = "Ahmed";
            Ahmed.LastName = "Gamal";
            Person Ali = new Person();
            Ali.Age = 15;
            Ali.FirstName = "Ahmed";
            Ali.LastName = "Gamal";
VB.NET

كود :
Dim Ahmed As New Person()
Ahmed.Age = 15
Ahmed.FirstName = "Ahmed"
Ahmed.LastName = "Gamal"
Dim Ali As New Person()
Ali.Age = 15
Ali.FirstName = "Ahmed"
Ali.LastName = "Gamal"

او يمكن تعريفهم على شكل مصفوفة بالشكل التالي :

c#:
كود :
Person [] MyEmpolyee = new Person[3];
MyEmpolyee[0] = new Person();
            MyEmpolyee[0].FirstName = "Ahmed";
            MyEmpolyee[0].LastName = "Gamal";
            MyEmpolyee[0].Age = 15;

vb.net:

كود :
Dim MyEmpolyee As Person() = New Person(2) {}
MyEmpolyee(0) = New Person()
MyEmpolyee(0).FirstName = "Ahmed"
MyEmpolyee(0).LastName = "Gamal"
MyEmpolyee(0).Age = 15
الرد }}}}
تم الشكر بواسطة:
#2
منقول من المنتدى القديم
كاتب المقال أحمد جمال المشرف العام
تاريخ 11-03-08
كما قلنا في حالة ال Struct ، فإن بامكاننا ايضاً تعريف الدوال داخل الكلاس ، سنقوم ببرمجة دالة تعيد لنا الاسم الكامل لشخص معين ، ستكون بالشكل التالي :


C#:
كود :
public string getFullName()
        {
            return FirstName + LastName;
        }

VB.net:
كود :
Public Function getFullName() As String
    Return FirstName + LastName
End Function
الرد }}}}
تم الشكر بواسطة:
#3
منقول من المنتدى القديم
كاتب المقال أحمد جمال المشرف العام
المشيدات Constructors :

عندما نقوم بتعريف new Person() فإن هذا يعني اننا نقوم بتشغيل الدالة ال Constructor ، وهي الدالة التي تعمل مع تشغيل اي نسخة من البرنامج ، افتراضياً تكون هذه الدالة خالية ويمكننا وضع بعض الاوامر فيها التي نحتاجها وقت انشاء نسخة ، لعرض مثلاً رسالة تخبرنا بانشاء نسخة جديدة من الكلاس ، في السي شارب يتم عمل دالة بنفس اسم الكلاس ، اما في فيجوال بيسك فيتم تسمية الدالة باسم New :

C#:
كود :
public Person()
{
Console.WriteLine("new object");
}

Vb.net:

كود :
Public Sub New()
    Console.WriteLine("new object")
End Sub
يمكن ايضاً ان يستقبل ال Constructor بارميترس ، فمثلاً لجعل ال Constructor يستقبل الاسم الأول مع تعريف الاوبجكت الجديد ، فسيكون ذلك بالشكل التالي :
كود :
public Person(string userfirstname)
        {
            FirstName = userfirstname;
        }

VB.net:

كود :
Public Sub New(ByVal userfirstname As String)
    FirstName = userfirstname
End Sub
ولعمل نسخة جديدة سيتوجب علينا كتابة الكود التالي :

C#:
كود :
Person MyEmpolyee = new Person("ahmed");

VB.net:
كود :
Dim MyEmpolyee As New Person("ahmed")
الرد }}}}
تم الشكر بواسطة:
#4
ال Destructor :

عكس ال Constructor ، يتم اطلاق هذا الحدث مع انهاء استخدام ال Object ، لاصدار صوت Beep مثلاً مع انهاء البرنامج :


C#:
كود :
~Person()
{
Console.Beep();
}

نستفيد من ال Destructor في تنفيذ بعض العمليات قبل تدمير الكائن Object تماماً ، احياناً ما نحتاج إلى مسح جميع المتغيرات المرتبطة به في الذاكرة وهو الاستخدام الاشهر لهذا الحدث ، ايضاً يمكن استخدامه لتغيير العدادات مثلاً والتي تقوم بعد النسخ من كلاس معين .
الرد }}}}
تم الشكر بواسطة:


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

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


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