سی شارپ - Interfaces ها

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

Interfaces ها ویژگی ها، متدها و رویدادهایی را تعریف می کنند که قرار است اعضای Interfaces باشند. Interfaces تنها شامل تعریف این اعضا می باشد و هیچ پیاده سازیندارد، پیاده سازی این اعضا وظیفه ی کلاس مشتق شده است.اینترفیس درواقع یک ساختار استاندارد ایجاد می کند که همه ی کلاس ها های مشتق آن را دنبال می کنند.

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

تعریف اینترفیس

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

public interface ITransactions
{
   // interface members
   void showTransaction();
   double getAmount();
}

مثال

و در مثال زیر نحوه ی پیاده سازی اینترفیس بالا نشان داده شده است:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;

namespace InterfaceApplication
{
   public interface ITransactions
   {
      // interface members
      void showTransaction();
      double getAmount();
   }
   
   public class Transaction : ITransactions
   {
      private string tCode;
      private string date;
      private double amount;
      public Transaction()
      {
         tCode = " ";
         date = " ";
         amount = 0.0;
      }
      
      public Transaction(string c, string d, double a)
      {
         tCode = c;
         date = d;
         amount = a;
      }
      
      public double getAmount()
      {
         return amount;
      }
      
      public void showTransaction()
      {
         Console.WriteLine("Transaction: {0}", tCode);
         Console.WriteLine("Date: {0}", date);
         Console.WriteLine("Amount: {0}", getAmount());
      }
   }
   class Tester
   {
      static void Main(string[] args)
      {
         Transaction t1 = new Transaction("001", "8/10/2012", 78900.00);
         Transaction t2 = new Transaction("002", "9/10/2012", 451900.00);
         t1.showTransaction();
         t2.showTransaction();
         Console.ReadKey();
      }
   }
}

نتیجه ی اجرای دستورات فوق به صورت زیر است:

Transaction: 001
Date: 8/10/2012
Amount: 78900
Transaction: 002
Date: 9/10/2012
Amount: 451900