برنامه نویسی شیئی گرا - اینترفیس چیست؟

Sarp

مدیر بازنشسته
اینترفیس مجموعه ای از متدهای abstract است که برنامه ای داخلشان نوشته نشده است و در برنامه های دیگر کدهای داخل این متدها نوشته میشود. بنابراین، فقط مشخصات متدها یکبار در اینترفیس تعریف میشود و هر جا که لازم باشد برنامه داخل متدها نوشته میشود.
بدین ترتیب با استفاده از اینترفیس میتوان وراثت چندگانه داشت. با استفاده از اینترفیس، کد سی شارپ قابلیت بهتری در نگهداری، انعطاف و بازمصرفی پیدا میکند.


به مثال زیر که تعریفی از محاسبه مساحت به شکل کلی دارد دقت کنید. محاسبه مساحت دایره با چهارضلعی با هم متفاوت است، لذا اینترفیس بکار میآید: یک اینترفیس بنام Area تعریف میکنیم که دو مقدار x و y میگیرد.
کلاسهای Circle و Rect را از روی این اینترفیس به وراثت میسازیم Circle:Area و Rect:Area و برای هر یک مساحت مخصوص خودش را در متد Get محاسبه کرده و مقدار مساحت را برمیگردانیم.
نهایتا با کلاس InterfaceDemo از این کلاسها اینستانس ساخته و مساحتها را با دادن مقدار اولیه بدست میآوریم.


PHP:
interface Area
    {
        double Get(double x, double y);
    }
    class Circle:Area 
    {
        //overriding interface method
        public double  Get(double  x, double  y)
        {
            return 3.14* x * x;
       }
    }
   class Rect:Area 
    {
        //overriding interface method
        public double  Get(double x, double y)
        {
           return x * y;
        }
    }
    class InterfaceDemo
    {
        static void Main(string[] args)
        {
            //creating objects of child class
            Rect r = new Rect();
            Circle c = new Circle();
            double  k = r.Get(10.2, 12.9);
            double l = c.Get(5.0,0);
            Console.WriteLine("Area of rect= {0}", k);
            Console.WriteLine("Area of circle= {0}", l);
        }
    }
 

masoumeh_f

عضو جدید
کاربر ممتاز
این یعنی همون کلاس abstract
تو C# کلاس abstract هست ، اینم هست فکر کنم ، فرقشون چیه؟
 

A.S.Roma

عضو جدید
کاربر ممتاز
یکی از تفاوت های بارزش که در متن هم بهش اشاره شد ، وراثت چندگانه است.
شما می تونید بطور همزمان از چندین Interface ارث ببرید اما در کلاس کلاس ها چنین قابلیتی ندارید.
 

Similar threads

بالا