دورة سي شارب С# Course

Tuesday, August 26, 2014

سي شارب - الدرس الثاني عشر- Inheritance التوارث

فيديو 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);
}

class circle : point 
public int area() {
return 20; } 
}  


class point {
public new int area() {
return 10; }



انتهى

No comments:

Post a Comment