فيديو 50-51
تتكون الكائنات الموجههة من ثلاث اشياء :
تتكون الكائنات الموجههة من ثلاث اشياء :
1- Inheritance التوارث
2- Polytheism
3- Encapsulation========================================================
1- Inheritance التوارث
الكلاس الابن بيوخد بعض صفات واشكال من الكلاس الاب ،
- يعني لو عندي مثال في كلاسين واحد دائرة وواحدة مستطيل ، الدائرة هي ابن المستطيل ، وعملت كائنات منهم في الكلاس الرئيسية (المين) ، واجيت استخدمت الكائن تبع الدائرة راح تطلع عندي المتغيرات والميثود تبع كلاس الدائرة وكمان الكلاس تبع المستطيل ، وهاد بسبب التوارث
static void Main (string[] args)
{
rectangle r= new rectangle();
circle c=new circle();
c.....;}
class circle : rectangle {
// circle هي الكلاس الابن من الكلاس الاب rectangle
int x ;
int y ;
// هون المتغيرات من نوع private
public void area() {}
}
}
class rectangle {
public int z;
}
- Access modified types // public , private, protected
=================================================================
فيديو 52-53
- لو بدي اعمل الكلاسات عن طريق الويزارد ، من خلال solution explorer ;
- اختار New class diagram
- وبعدين من ال ToolBox اسحب الكلاس واسميها point واحدد الاسم point ونوع الوصول الها public ، واوك .
- راح يطلع فيها اربع اشياء ، حاختار الfields واضيف واحد جديد وليكن x, y من نوع int والوصول اليه private
- عشان احط ال properties K أحدد ال fields اللي اسمه x ومن زر اليمين عليه ، راح اختار Refactor - Encapsulate Field ، واكتب اسم الproperty =X و , واعملي كمان ل Y ... بهاي الحركة عملت ال properties تبع x, y و صارت x, y من نوع public بقدر اوصل الها .
- ونفس الاشي احدد اسم الmethod وليكن areaمن نوع void وpublic ، ولو ضغطت عليها مرتين بقدر ادخل واكتب الكود مثلا return 20.
- هلأ نفس الاشي راح اعمل كلاس تانية للدائرة اسمها circle
- عشان اعمل توارث بين الدائرة والنقطة عن طريق الويزارد ، يعني الدائرة تورث من النقطة، راح ادخل على ال ToolBox الموجود على اليسار ، واختار ال inheritance .
- واسحب خط من الدائرة الى النقطة .
- هلأ لو دخلت على ال circle من ال solution explorer ودخلت على الكود راح اشوف عملية التوارث .
- اكتبي في الميثود تبعها اسم area وخليها return 10.
- هلأ بكود المين main اعملي object من نوع circle ونادي الميثود area ، واعملي طباعة ، راح تطلع القيمة 10.
- لو حذفت الميثود area في ال circle ، وناديت عليها في المين main راح ينفذ الميثود الموجودة في الاب وتساوي 20.
static void Main (string[] args)
{
circle c =new circle();
int u=c.area();
Console.writeLine(u);
}
{
circle c =new circle();
int u=c.area();
Console.writeLine(u);
}
class circle : point {
public int area() {
return 20; }
return 20; }
}
class point {
public new int area() {
return 10; }
}
انتهى
No comments:
Post a Comment