رابط ها (Interfaces) در سی شارپ
رابطها (Interfaces) در سیشارپ، قراردادهایی برای کلاسها هستند که متدها و خواص را تعریف میکنند، بدون پیادهسازی.
رابط ها (Interfaces) در سی شارپ
رابطها (Interfaces) در زبان برنامهنویسی سی شارپ یکی از مفاهیم کلیدی در برنامهنویسی شیءگرا هستند.
آنها به عنوان یک قرارداد عمل میکنند که مشخص میکند چه متدها و ویژگیهایی باید در کلاسهایی که این رابطها را پیادهسازی میکنند، وجود داشته باشد.
رابطها در #C مجموعهای از امضاهای متدها، ویژگیها و رویدادها هستند که یک کلاس یا ساختار باید آنها را پیادهسازی کند.
رابطها نمیتوانند پیادهسازی متدها را داشته باشند (مگر در C# 8.0 و بالاتر که امکان پیادهسازی پیشفرض وجود دارد) و فقط تعریف متدها و ویژگیها را شامل میشوند.
رابطها به شما این امکان را میدهند که کدهای خود را به صورت ماژولار و قابل استفاده مجدد طراحی کنید.
ساختار کلی تعریف یک رابط
ساختار کلی تعریف یک رابط در #C به صورت زیر است:
public interface IMyInterface
{
void MyMethod();
int MyProperty { get; set; }
}
در این مثال، IMyInterface یک رابط است که یک متد به نام MyMethod و یک ویژگی به نام MyProperty را تعریف میکند.
مزایای استفاده از رابطها در سی شارپ
-
جداسازی کد
رابطها به شما این امکان را میدهند که کدهای خود را به صورت ماژولار طراحی کنید.
با استفاده از رابطها، میتوانید پیادهسازیهای مختلفی برای یک رابط داشته باشید و به راحتی آنها را جایگزین کنید. -
چندریختی (Polymorphism)
رابطها به شما این امکان را میدهند که از مفهوم چندریختی در برنامهنویسی شیءگرا استفاده کنید.
با استفاده از رابطها، میتوانید متدهایی را بنویسید که با انواع مختلفی از کلاسها کار میکنند که یک رابط خاص را پیادهسازی کردهاند. -
تستپذیری
رابطها به شما این امکان را میدهند که کدهای خود را به راحتی تست کنید.
با استفاده از رابطها، میتوانید پیادهسازیهای مختلفی برای یک رابط ایجاد کنید و در هنگام تست، به راحتی میتوانید پیادهسازیهای مختلف را جایگزین کنید.
پیادهسازی رابط ها
برای پیادهسازی یک رابط، یک کلاس باید از آن رابط ارثبری کند و تمام متدها و ویژگیهای تعریف شده در آن را پیادهسازی کند. به عنوان مثال:
public class MyClass : IMyInterface
{
public int MyProperty { get; set; }
public void MyMethod()
{
Console.WriteLine("MyMethod implemented.");
}
}
در اینجا، MyClass رابط IMyInterface را پیادهسازی کرده و متد MyMethod و ویژگی MyProperty را تعریف کرده است.
استفاده از رابطها در سی شارپ
رابطها به شما این امکان را میدهند که کدهای خود را به صورت ماژولار و قابل استفاده مجدد طراحی کنید.
به عنوان مثال، میتوانید یک متد عمومی بنویسید که فقط با کلاسهایی که یک رابط خاص را پیادهسازی کردهاند، کار کند:
public void Execute(IMyInterface myObject)
{
myObject.MyMethod();
}
معایب استفاده از رابطها
-
پیچیدگی
استفاده از رابطها میتواند کد را پیچیدهتر کند.
اگر تعداد زیادی رابط داشته باشید، ممکن است خوانایی کد کاهش یابد و درک آن دشوار شود.
-
نیاز به پیادهسازی
هر بار که یک رابط را پیادهسازی میکنید، باید تمام متدها و ویژگیهای تعریف شده در آن را پیادهسازی کنید.
این میتواند منجر به کد تکراری شود.
مثالهای عملی
-
مثال 1: رابط برای اشیاء قابل چاپ
فرض کنید که میخواهید یک رابط برای اشیاء قابل چاپ تعریف کنید:
public interface IPrintable
{
void Print();
}
حالا میتوانید کلاسهای مختلفی را پیادهسازی کنید:
public class Document : IPrintable
{
public void Print()
{
Console.WriteLine("Printing Document...");
}
}
public class Image : IPrintable
{
public void Print()
{
Console.WriteLine("Printing Image...");
}
}
حالا میتوانید از این کلاسها استفاده کنید:
public void PrintAll(IPrintable[] printables)
{
foreach (var printable in printables)
{
printable.Print();
}
}
-
مثال 2: رابط برای اشیاء قابل ذخیره
فرض کنید که میخواهید یک رابط برای اشیاء قابل ذخیره تعریف کنید:
public interface ISaveable
{
void Save();
}
حالا میتوانید کلاسهای مختلفی را پیادهسازی کنید:
public class User : ISaveable
{
public void Save()
{
Console.WriteLine("User saved.");
}
}
public class Product : ISaveable
{
public void Save()
{
Console.WriteLine("Product saved.");
}
}
حالا میتوانید از این کلاسها استفاده کنید:
public void SaveAll(ISaveable[] saveables)
{
foreach (var saveable in saveables)
{
saveable.Save();
}
}
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
رابطها و وراثت در سی شارپ
رابطها میتوانند به عنوان یک ابزار برای تحقق وراثت چندگانه عمل کنند.
در #C، یک کلاس میتواند تنها از یک کلاس دیگر ارثبری کند، اما میتواند چندین رابط را پیادهسازی کند.
public interface IAnimal
{
void Speak();
}
public interface IMammal
{
void Walk();
}
public class Dog : IAnimal, IMammal
{
public void Speak()
{
Console.WriteLine("Woof!");
}
public void Walk()
{
Console.WriteLine("Dog is walking.");
}
}
استفاده از رابطها در طراحی الگوها
رابطها در طراحی الگوهای نرمافزاری نیز بسیار مفید هستند.
به عنوان مثال، در الگوی طراحی استراتژی، میتوانید از رابطها برای تعریف استراتژیهای مختلف استفاده کنید.
public interface IStrategy
{
void Execute();
}
public class ConcreteStrategyA : IStrategy
{
public void Execute()
{
Console.WriteLine("Executing Strategy A");
}
}
public class ConcreteStrategyB : IStrategy
{
public void Execute()
{
Console.WriteLine("Executing Strategy B");
}
}
public class Context
{
private IStrategy _strategy;
public Context(IStrategy strategy)
{
_strategy = strategy;
}
public void SetStrategy(IStrategy strategy)
{
_strategy = strategy;
}
public void ExecuteStrategy()
{
_strategy.Execute();
}
}
مثال پروژه محور از رابط ها (Interfaces) در سی شارپ
مثال پروژه محور: سیستم مدیریت کتابخانه با استفاده از رابطها در سیشارپ
-
تعریف رابط
ابتدا یک رابط به نام IBookService تعریف میکنیم:
public interface IBookService
{
void AddBook(Book book);
void RemoveBook(string bookId);
List<Book> GetAllBooks();
}
-
تعریف کلاس کتاب
سپس کلاس Book را تعریف میکنیم:
public class Book
{
public string Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public Book(string id, string title, string author)
{
Id = id;
Title = title;
Author = author;
}
}
-
پیادهسازی رابط
حالا کلاس BookService را ایجاد میکنیم که رابط IBookService را پیادهسازی میکند:
public class BookService : IBookService
{
private List<Book> books = new List<Book>();
public void AddBook(Book book) => books.Add(book);
public void RemoveBook(string bookId)
{
var bookToRemove = books.FirstOrDefault(b => b.Id == bookId);
if (bookToRemove != null) books.Remove(bookToRemove);
}
public List<Book> GetAllBooks() => books;
}
-
استفاده از کلاسها
در برنامه اصلی، از BookService استفاده میکنیم:
class Program
{
static void Main(string[] args)
{
IBookService bookService = new BookService();
// افزودن کتابها
bookService.AddBook(new Book("1", "The Great Gatsby", "F. Scott Fitzgerald"));
bookService.AddBook(new Book("2", "1984", "George Orwell"));
// نمایش لیست کتابها
var allBooks = bookService.GetAllBooks();
foreach (var book in allBooks)
{
Console.WriteLine($"ID: {book.Id}, Title: {book.Title}, Author: {book.Author}");
}
// حذف یک کتاب
bookService.RemoveBook("1");
}
}
این مثال ساده نشان میدهد که چگونه میتوان از رابطها در سیشارپ برای ایجاد یک سیستم مدیریت کتابخانه استفاده کرد.
این طراحی به ما اجازه میدهد تا کد را به راحتی گسترش و نگهداری کنیم.




کاربران ما
شما هم نظرتون با ما دریاره “رابط ها (Interfaces) در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید