آموزش رابط ها در سی شارپ به زبان ساده

رتبه: 0 ار 0 رای sssss
رابط ها در سی شارپ
نویسنده: میلاد حیدری زمان مطالعه 5 دقیقه
Banner Image

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

به کار گرفتن ویژگی ها، و همچنین ایندکسر ها و رویدادها مجاز است. می توانید یک رابط را به عنوان یک قرارداد در نظر بگیرید – کلاسی که آن را پیاده سازی کند، باید پیاده سازی کلیه متدها و ویژگی ها انجام شود. با این حال ، مهمترین تفاوت این است که در حالی که سی شارپ اجازه نمی دهد توارث چندگانه انجام شود، یعنی کلاس ها نمی توانند بیش از یک کلاس پایه را به ارث ببرند، اما در واقع امکان اجرای چندین رابط را می دهد!

بنابراین ، چگونه همه توجه ها به کدنویسی است؟ در اینجا یک مثال کامل آورده شده است. نگاهی به آن بیندازید و آن را خودتان امتحان کنید و سپس برای توضیحات کامل تر؛ مطالعه را ادامه دهید:

using System;

using System.Collections.Generic;

namespace Interfaces

{

class Program

{

static void Main(string[] args)

{

List<Dog> dogs = new List<Dog>();

dogs.Add(new Dog(“Fido”));

dogs.Add(new Dog(“Bob”));

dogs.Add(new Dog(“Adam”));

dogs.Sort();

foreach(Dog dog in dogs)

Console.WriteLine(dog.Describe());

Console.ReadKey();

}

}

interface IAnimal

{

string Describe();

string Name

{

get;

set;

}

}

class Dog : IAnimal, IComparable

{

private string name;

public Dog(string name)

{

this.Name = name;

}

public string Describe()

{

return “Hello, I’m a dog and my name is ” + this.Name;

}

public int CompareTo(object obj)

{

if(obj is IAnimal)

return this.Name.CompareTo((obj as IAnimal).Name);

return 0;

}

public string Name

{

get { return name; }

set { name = value; }

}

}

}

بیایید از وسط شروع کنیم، که در آن بخش، رابط را اعلام می کنیم. همانطور که مشاهده می کنید ، تنها تفاوت از اعلام یک کلاس ، کلمه کلیدی استفاده شده می باشد – رابط (Interface) به جای کلاس (Class) . همچنین، پشت نام پارامتر Interface؛ یک I به عنوان پیشوند؛ قرار داده شده است – این فقط یک استاندارد کدنویسی است، و نه یک الزام. شما می توانید رابطهای خود را به هر صورتی که می خواهید فراخوانی کنید، اما از آنجا که آنها شبیه کلاس ها استفاده می شوند؛ شما به سختی می توانید تفاوت بین برخی از قسمت های کدنویسی خودتان را بیان کنید؛ به این ترتیب پیشوند I می تواند کمک زیادی به شما داشته باشد.

سپس متد Describe و پس از آن ، ویژگی Name را اعلام می کنیم که هم دارای کلمه کلیدی get می باشد و هم کلید واژه set را داراست، و این یک ویژگی قابل خواندن و قابل نوشتن است. شما همچنین متوجه عدم وجود مدیفایرهای دسترسی (عمومی (public)، خصوصی (private) ، محافظت شده (protected) و غیره) خواهید شد ، و این به آن دلیل است که آنها را نمی توان به یک رابط اعمال کرد – همه بصورت پیش فرض در دسته ی دسترسی عمومی هستند.

سپس، کلاس Dog آمده است. توجه کنید که توارث از یک کلاس دیگر چگونه نمایش داده می شود؛ یک دو نقطه بین نام کلاس و کلاس/ رابط؛ قرار داده شده است. با این حال، در این حالت، دو رابط برای یک کلاس مشابه پیاده سازی می شود، که به سادگی با یک کاما از هم جدا شده اند. شما می توانید به هر تعدادی که می خواهید؛ رابط ها را پیاده سازی کنید، اما در این حالت ما فقط دو رابط خود را اجرا کرده ایم که IAnimal و رابط .NET IComparable که یک رابط مشترک برای کلاس هایی است که می توانند مرتب شوند. حال همانطور که مشاهده می کنید، ما از رابط IAnimal ، هم متد و هم ویژگی را پیاده سازی کرده ایم و همچنین یک متد CompareTo را نیز از رابط IComparable پیاده سازی نموده ایم.

حال ممکن است به این موضوع فکر کنید که اگر ما مجبوریم تمام کارها را خودمان انجام دهیم، با اجرای کل متد ها و ویژگی ها، چرا باید به خودمان زحمت بدهیم؟شما می توانید برای پاسخ به این سوال دوباره به مثال بالا نگاهی بیندازید؛ زیرا به خوبی درک می کنید که چرا یادگیری رابط ها و استفاده از آنها ارزش وقت گذاشتن دارد. در اینجا ، ما یک دسته از اشیاء Dog را به یک لیست اضافه می کنیم، و سپس لیست را مرتب می نماییم. چگونه این لیست می داند که باید چطور سگها مرتب شوند؟ پاسخ این است که کلاسDog- ما دارای یک متد CompareTo است که می تواند نحوه مقایسه دو سگ را بیان کند. چگونه این لیست می داند که شیء Dog ما می تواند همین کار را انجام دهد و برای مقایسه سگ ها چه متدی را باید فراخوانی کند؟ ما این اطلاعات را در واقع با پیاده سازی یک رابط در اختیارشان قرار دادیم که به کار گیری متد CompareTo را نوید می دهد. این در واقع زیبایی رابط ها را نشان می دهد.

profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش رابط ها در سی شارپ به زبان ساده»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید