رابط ها

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

اساطیر زبان

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

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

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

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


 

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

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 را نوید می دهد. این در واقع زیبایی رابط ها را نشان می دهد.

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست