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

متي نستخدم override وماذا تعني ايضا وماهي الخواص

بدأه sidi100 في 8 ديسمبر 2009 · 6 رد · 2,610 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف حالكم فقط عايز أسأل اذا فيه احديمكن يشرح لي الميثود override ,,وماذا تعني ؟ وماهي الخواص set ,get ,,ومالفائدة من استخدامها ؟

وهل يمكن ان اجد امثلة تووضيحية لان ما فهمت الدر س لذي كان حول )(member defintion :

defininig field ,defining methode ,.defining properties

وجزاكم الله خير

#2

بالنسبة لـ Override

لما يكون عندك Class

والـ Class دى فيها كام Method

والمفترض ان فى Classes تانية هتورث الـ Class دى

ومن ضمن الـ Method اللى فى الـ Class دى فى واحدة عايزين الـ Classes الى هتورثها تقدر تغيرها

هنفترض ان الـ Class دى اسمها Person

وان الـ Method اللى عايزينها تبئى قابلة للتغير اسمها GetName

وان الـ Classes اللى هتورثها اسمها Client و Supplier

فى الـ Class اللى اسمها Client

عايزين الـ Method اللى اسمها GetName انها تروح لقاعدة البيانات وتجيب الأسم من جدول Client

وفى الـ Class اللى اسمها Supplier

عايزين الـ Method اللى اسمها GetName انها تروح لقاعدة البيانات وتجيب الأسم من جدول Supplier

وخلى بالك الـ Method اللى اسمها GetName لازم تبئى فى الـ Class الأصلية اللى اسمها Person

فى الحالة دى الـ Method اللى اسمها GetName

لازم نعرفها على إنها Method قابلة للتحور Polymorphism

ودى بتتعرف بننا بنضيف كلمة Virtual فى سطر تعريف الـ Method

يعنى هتبئى بالشكل ده

public virtual string GetName()
{
    return "";
}

وخد بالك اننا هنا رجعنا نص فاضى

حلو

نيجى بئى للمهم

هنعمل الـ Class اللى اسمها Client

وهنخليها تورث الـ Class اللى اسمها Person

وهنيجى بئى للنقطة الأهم

اننا نغير فى الـ Method اللى اسمها GetName

وده بئى بيتم عن طريق اننا نعرف الـ Method تانى جوة الـ Class الحالية

لكن المرة دى هنكتب كلمة Override بدل من كلمة Virtual اللى كتبناها فى الـ Class الأصلية

يعنى المنظر هيبئى كده

public override string GetName()
{
    // Get Client Name
}

مش عارف ممكن نقول حاجة تانى ولا كفاية ده

اعتقد كفاية

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#3
python كتب:

بالنسبة لـ Override

لما يكون عندك Class

والـ Class دى فيها كام Method

والمفترض ان فى Classes تانية هتورث الـ Class دى

ومن ضمن الـ Method اللى فى الـ Class دى فى واحدة عايزين الـ Classes الى هتورثها تقدر تغيرها

هنفترض ان الـ Class دى اسمها Person

وان الـ Method اللى عايزينها تبئى قابلة للتغير اسمها GetName

وان الـ Classes اللى هتورثها اسمها Client و Supplier

فى الـ Class اللى اسمها Client

عايزين الـ Method اللى اسمها GetName انها تروح لقاعدة البيانات وتجيب الأسم من جدول Client

وفى الـ Class اللى اسمها Supplier

عايزين الـ Method اللى اسمها GetName انها تروح لقاعدة البيانات وتجيب الأسم من جدول Supplier

وخلى بالك الـ Method اللى اسمها GetName لازم تبئى فى الـ Class الأصلية اللى اسمها Person

فى الحالة دى الـ Method اللى اسمها GetName

لازم نعرفها على إنها Method قابلة للتحور Polymorphism

ودى بتتعرف بننا بنضيف كلمة Virtual فى سطر تعريف الـ Method

يعنى هتبئى بالشكل ده

public virtual string GetName()
{
    return "";
}

وخد بالك اننا هنا رجعنا نص فاضى

حلو

نيجى بئى للمهم

هنعمل الـ Class اللى اسمها Client

وهنخليها تورث الـ Class اللى اسمها Person

وهنيجى بئى للنقطة الأهم

اننا نغير فى الـ Method اللى اسمها GetName

وده بئى بيتم عن طريق اننا نعرف الـ Method تانى جوة الـ Class الحالية

لكن المرة دى هنكتب كلمة Override بدل من كلمة Virtual اللى كتبناها فى الـ Class الأصلية

يعنى المنظر هيبئى كده

public override string GetName()
{
    // Get Client Name
}

مش عارف ممكن نقول حاجة تانى ولا كفاية ده

اعتقد كفاية

شكــــــــــــــــــــرا ياباشا اذن مالفرق بين overloading و overriding

#5
اقتباس
شكــــــــــــــــــــرا ياباشا اذن مالفرق بين overloading و overriding

العفو يا باشا

اولاً ماتربطش الأتنين ببعض

الـ Overloading مالهوش اى علاقة بالـ Overriding

ده موضوع وده موضوع

ومن غير كلام كتير

الـ Overloading

هو انك تعمل اكتر من Method فى نفس الـ Class لكن بنفس الأسم

طبعاً ماينفعش ان يبئى فى تكرار للأسماء داخل اى Class

علشان كده لازم الـ Method دى تكون مختلفة فى الـ Parameters اللى بتاخدها

مثال

public string GetAddress(int ClientID)
{
    // Get Address
}
public string GetAddress(string ClientName)
{
    // Get Address
}

public string GetAddress(int ClientID, string ClientName)
{
    // Get Address
}

تم تعديل هذه المشاركة بواسطة python في 9 ديسمبر 2009 في 14:10

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#6
python كتب:

العفو يا باشا

اولاً ماتربطش الأتنين ببعض

الـ Overloading مالهوش اى علاقة بالـ Overriding

ده موضوع وده موضوع

ومن غير كلام كتير

الـ Overloading

هو انك تعمل اكتر من Method فى نفس الـ Class لكن بنفس الأسم

طبعاً ماينفعش ان يبئى فى تكرار للأسماء داخل اى Class

علشان كده لازم الـ Method دى تكون مختلفة فى الـ Parameters اللى بتاخدها

مثال

public string GetAddress(int ClientID)
{
    // Get Address
}
public string GetAddress(string ClientName)
{
    // Get Address
}

public string GetAddress(int ClientID, string ClientName)
{
    // Get Address
}

بحثت وجدت تعاريف

Overriding - same method names with same arguments and same return types associated in a class and its subclass.

Overriding لها نفس اسم التوابع او الميثود مع نفس الوسائط وترجع نفس نوع الكلاس مع مشتقاته (اجزائه)

Example

:

class CSuper 

{ 

null print ( string _name) 


{ 

print "Hello" + _name; 

} 

}; 





class CDerived 

{ 

null print ( string _name) 


{ 

print "Hello" + _name + "from Derived"; 

} 

};

Overloading - same method name with different arguments, may or may not be same return type written in the same class itself.

:-Overloading اسم نفس الأسلوب مع وسائط مختلفة ، قدترجع أو لا ترجع نفس النوع مكتوبة في نفس الفئة نفسها.

Example:

class CClass 


{ 

string print( int i); 

string print(int i, char c); 

};

علي كل شكرا لك موضوع معقد قليلا :

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

يوجد احد انواع الوصولية يسمي بنوع المحمي حيث يمكن فقط للاصناف المشتقة ان تصل الي الاعضاء المحية في الصنف الاساسي

وهناك ايضا ما يعرف باسلوك الوراثة لهذه الا عضاء فيمكن

وهذا مثال حول حساب مساحة بعض الا شكال الهندسية

using System;
class TestClass
{اسم  الكلاس  الاساسي  
    public class Dimensions
    {ديفولت  البناء  هذا السللوك  يحمل  نفس اسم الصنف  اوالكلاس  

  public const double PI = Math.PI;
عضو عام  يمكن الوصول اليه  الانه عام  
       اعضاء محمية    هدفنا  الوصول اليها  // protected double x, y;
        public Dimensions()
        {
        }ديفولت  البناء  هذا السللوك  يحمل  نفس اسم الصنف  اوالكلاس  
        public Dimensions(double x, double y)
        {
            this.x = x;
            this.y = y;
   سلوك  مزود ببراميترات   واستخدام  ال  تدل علي ان البرمترات لنفس الميثود      


 }




 public virtual double Area()

هنا  مربط الفرص  هنا عرفنا  ميثود  من النوع الظاهري  تحتاج  لشر ح  اكثر   
حسب  فهمي  والله اعلم  انها  من اجل تسهيل حساب المساحة  نعرف ان  كل شكل هندسي 
يمتلك  مساحة  الدائرة الا سطونة الخ  ...ونعرف ان تلك المساحة يمكن حسابها لكن تختلف وسائطها  

طيب نقوم بتعريف  الميثود  public virtual double Area()للوصل ال المشتقات  
  {




            return x * y;
        }
    }

    public class Circle : Dimensions
  ورثنا  من لكلاس الاساسي  صح  

  {
        public Circle(double r) : base(r, 0)
        {
        }

        public override double Area()
   \\ هنا ايضا مربط  الفرص  ؟  يحتاج  توسع  اكثر   لها علاقة ب 
  public virtual double Area()\\\

 {
            return PI * x * x;
        }
    }

    class Sphere : Dimensions
    {
        public Sphere(double r) : base(r, 0)
        {
        }

        public override double Area()
         \\لها علاقة ب 
  public virtual double Area()\\


 {
            return 4 * PI * x * x;
        }
    }

    class Cylinder : Dimensions
    {
        public Cylinder(double r, double h) : base(r, h)
        {
        }

        public override double Area()
       \\ لها علاقة ب 
  public virtual double Area()\\


  {
            return 2 * PI * x * x + 2 * PI * x * y;
        }
    }

    static void Main()
    {الدالة الرشيسية  وقد تم استدعاء جميع الدوال الجزئية داخلها   مع  انشاء كائنات جديدة من نفس الاصناف لتي تخضع لها  تلك  الدوال الجزئية  وتلك ميزة في البرمجة الشيئية   
        double r = 3.0, h = 5.0;
        Dimensions c = new Circle(r);
        Dimensions s = new Sphere(r);
        Dimensions l = new Cylinder(r, h);
        // Display results:
        Console.WriteLine("Area of Circle   = {0:F2}", c.Area());
        Console.WriteLine("Area of Sphere   = {0:F2}", s.Area());
        Console.WriteLine("Area of Cylinder = {0:F2}", l.Area());
    }
}

محاولة للفهم لا أكثـــــــــــــــــــــــــــتتتتر

#7
اقتباس

Overriding - same method names with same arguments and same return types associated in a class and its subclass.

Overriding لها نفس اسم التوابع او الميثود مع نفس الوسائط وترجع نفس نوع الكلاس مع مشتقاته (اجزائه)

مش عارف ليه مش مستريح للكلام ده

انت فهمت حاجة من التعريف ده ؟!

انا عن نفسى مافهمتش :huh:

سؤال ...انت عايز صيغة تعريف ولا عايز تفهم التكنيك ؟

سيبك من التعاريف الغريبة دى وجرب تشتغل وتنفذ التكنيك بنفسك احسن

1

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…