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

البداية مع C# .NET ...درس (8):التغليف Encapsulation

اذهب الى الأسفل

البداية مع C# .NET ...درس (8):التغليف Encapsulation Empty البداية مع C# .NET ...درس (8):التغليف Encapsulation

مُساهمة من طرف السنى الأربعاء ديسمبر 18, 2013 1:23 pm

بسم الله الرحمن الرحيم

اهلا وسهلا بكم درس اليوم عن التغليف Encapsulation حيث تعرف "بأنها عملية تضم عنصر واحد أو أكثر ضمن حزمة أو فئة معينة ليمنع الوصول إلى تفاصيل تلك العناصر من عدمة.

أو بمعنى اخر أن باستخدام عملية التغليف أو الـ Encapsulation ، فأنت تتحكم بذلك فيما يظهر لمستخدم الفئة وفيما لا يظهر من خصائص وطرق وأحداث. وما يظهر فهو يؤدي الوظيفة التي وُجِدَت من أجلها الفئة ( Class ) ، أما ما لا يظهر للمستخدم من أحداث وخصائص وطرق فهو يخدم ما يظهر مما سبق.

_ويتم تنفيذ التغليف باستخدام محددات الوصول access specifiers و الذى يحد الاطار ومدى مجال الرؤية اي الوصول للعنصر المطلوب...... و محددات الوصول المدعومة من سي شارب C#

محدد الوصول العام Public
محدد الوصول الخاص Private
محدد الوصول المحمي Protected
محدد الوصول الداخلي Internal
محدد الوصول الداخلي المحمي Protected internal


أولا : Public access specifier محدد الوصول العام

محدد الوصول العام يسمح للفئة بعرض أو اضهار المتغيرات والدوال للدوال الاخرى والكائنات.أي عضو (الدوال أو المتغيرات )يمكن الوصول اليها من خارج الفئةوهذه يعرف بمدى الرؤية وهو عام.

_مثال على محدد الوصول العام

الكود:
using System;

namespace RectangleApplication
    {
      class Rectangle
       {
          //المتغيرات الاعضاء
          public double length;
         public double width;

        public double GetArea()
       {
         return length * width;
       }
         public void Display()
        {
             Console.WriteLine("Length: {0}", length);
             Console.WriteLine("Width: {0}", width);
             Console.WriteLine("Area: {0}", GetArea());
        }
    }//نهاية الفئة
             class ExecuteRectangle
                {
                    static void Main(string[] args)
                    {
                        //انشاء كائن من الفئة السابقة
                        Rectangle r = new Rectangle();
   في حال كائن محدد الوصول للمتغير length خاص فان الكائن المنشاء لن يرى هذا  المتغير كما في المثال هذا //
                            r.length = 4.5;
                            r.width = 3.5;
                            r.Display();
                            Console.ReadLine();
                    }
               }
}

الناتج

الكود:
Length: 4.5
Width: 3.5
Area: 15.75


ثانيا :private access specifier محدد الوصول الخاص

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

مثال على محدد الوصول الخاص

الكود:
using System;
namespace RectangleApplication
     {
        class Rectangle
         {

            //المتغيرات
              private double length;
              private double width;

              public void Acceptdetails()
               {
                        Console.WriteLine("Enter Length: ");
                        length = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Enter Width: ");
                        width = Convert.ToDouble(Console.ReadLine());
               }
             public double GetArea()
               {
                  return length * width;

               }
              public void Display()
              {
                   Console.WriteLine("Length: {0}", length);
                   Console.WriteLine("Width: {0}", width);
                   Console.WriteLine("Area: {0}", GetArea());
              }
   }//end class Rectangle
class ExecuteRectangle
  {
       static void Main(string[] args)
              {
                   Rectangle r = new Rectangle();
                   r.Acceptdetails();
                   r.Display();
                  Console.ReadLine();
              }
    }
}


الناتج


الكود:
Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

ثالثا :محدد الوصول المحمي Protected Access Specifier

يسمح هذا المحدد لفئات الابناء child class بالوصول للمتغيرات والدوال الموجودة في الفئة الاساسية أو فئة الاب سيتم الشرح عن هذا المحدد عن الوصول لدرس الوراثة.

ربعا :محدد الوصول الداخلي Internal Access Specifier

يسمح محدد الوصول الداخلي للفئات الاخرى التي داخل الاسمبلي نفسه بالوصول للدوال والمتغيرات التي تستخدم هذا المحدد
مثال على محدد الوصول الداخلي

الكود:
using System;
namespace RectangleApplication
{
    class Rectangle
      {
          //member variables
          internal double length;
          internal double width;

          double GetArea()
           {
                return length * width;
           }
              public void Display()
               {
                   Console.WriteLine("Length: {0}", length);
                   Console.WriteLine("Width: {0}", width);
                   Console.WriteLine("Area: {0}", GetArea());
              }
  }//end class Rectang
  class ExecuteRectangle
   {
                static void Main(string[] args)
                       {
                                  Rectangle r = new Rectangle();
                                  r.length = 4.5;
                                  r.width = 3.5;
                                  r.Display();
                                 Console.ReadLine();
                       }
   }
}


الناتج

الكود:
Length: 4.5
Width: 3.5
Area: 15.75


خامسا: محدد الوصول الداخلي المحمي Protected Internal Access Specifier

يستخدم محدد الوصول الداخلي المحمي فقط من خلال فئات الابناء بحيث يكون فئة الاساسية وفئة الموروثة الابناء في نفس الاسمبلي
السنى
السنى
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 249
النقاط : 464
التقيم : 25
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى