آموزش سی شارپ - رابطها
یک رابط به عنوان یک قرارداد نحوی تعریف میشود که همه کلاسهایی که از رابط ارث بری میکنند باید آن را دنبال کنند. رابط بخش 'چه چیزی' در قرارداد نحوی را تعریف میکند و کلاسهای مشتقشده بخش 'چگونه' قرارداد نحوی را تعریف میکنند.
رابطها خصوصیتها (properties)، متدها (methods) و رویدادها (events) را که اعضای رابط هستند، تعریف میکنند. رابطها فقط عناوین اعضا را شامل میشوند. مسئولیت تعریف اعضا بر عهده کلاس مشتقشده است. این امر معمولاً در ارائه یک ساختار استاندارد که کلاسهای مشتقشده طی آن عمل میکنند، مفید است.
کلاسهای انتزاعی تا حدی هدف مشابهی را خدمت میکنند، با این حال، آنها اغلب زمانی استفاده میشوند که تنها چندین متد توسط کلاس پایه اعلام میشوند و کلاس مشتقشده عملکردها را پیادهسازی میکند.
تعریف رابطها
رابطها با استفاده از کلیدواژه interface تعریف میشوند. این شبیه به تعریف کلاس است. اعلانهای رابط به طور پیش فرض عمومی هستند. یک مثال از تعریف یک رابط به شرح زیر است:
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