|
واسطها (Interfaces):
یک واسط یا Interface شامل تعاریفی است برای یک کلاس که این تعاریف شامل معرفی مجموعه ای از متدها با آرگومانهای مشخص است. اگر کلاسی دارای اون متدها باشد، میگیم که این کلاس از یک واسط Implement شده است. این فرض و قولی است برای اینکه شما مطمئن باشید که یک کلاس حتما دارای متدهای نام برده شده باشد. واسط تعریف امضای متدهای عمومی هست ولی بدنه این متدها کاملا خالی هستند. اگر یک کلاس از یک واسط Implement شده باشد که نام واسط xyz باشد، می توانید به اون کلاس ارجاع داشته باشید همانطوری که به واسط ارجاع داشته اید. و تا زمانی که سی شارپ اجازه نمی دهد که یک کلاس از بیش از یک کلاس به ارث برسد، تنها راه برای اینکه کلاس از بیش از یک کلاس به ارث برسد، استفاده از کلاس واسط هست. حالا بهتره با یک مثال مطلب خودمون رو ادامه بدیم، در این مثال ما یک کلاس از نوع واسط داریم که لیستی از عناصر انتخاب شده یا یک لیست از عناصر CheckBox را فراهم می کند. (لیست کد1) // List Code 1 همانطور که می بینید این واسط دارای دو متد است یکی با نام Clear و دیگری با نام GetSelected که بدنه اون هم خالی است.public interface IMultiSelect { void Clear(); System.Collections.ArrayList GetSelected(); } حالا اگر بخواهیم کلاسی رو از این واسط Implement کنیم، ابتدا باید در تعریف این کلاس واسط رو مشخص کنیم و سپس تمامی متدهای واسط رو در کلاس جدید پیاده سازی کنیم. به لیست کد 2 دقت کنید: // List Code 2 (Class Sample Implemented On IMultiSlect Interface) در پروژه های بزرگ اول واسطها تعریف می شوند و بعد کلاسها بر اساس اونها تعریف می شوند. معمولا متدهایی رو هم به عنوان رزرو تعریف می کنند که این متدها در زمانهای آپگرید برنامه ممکن است مورد استفاده قرار بگیرند. با این ترتیب چون ساختار کلاس، یا به اصطلاح امضای کلاس تغییری نمی کند پروژه با کپی فایل DLL جدید براحتی قابل بروزرسانی است و نیازی نسیت که کل پروژه مجددا ساخته شده و از طرف مشتری نصب شود.public class ListSelect : IMultiSelect { public ListSelect() { } public void Clear() { } public System.Collections.ArrayList GetSelected() { return new System.Collections.ArrayList(); } } پیشنهاد می شود در پروژه های خود ابتدا واسطها رو تعریف کنید و حتی متدهایی رو هم که فعلا نیاز ندارید رو در تعریف واسط قرار بدید سپس به پیاده سازی کلاسها بپردازید. (لازم نیست که دوباره به این نکته اشاره کنم که پیاده سازی واسط چون کدی در بدنه متدها ندارد عمل وقت گیری نخواهد بود). تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، واسط، تعریف واسط، کلاس، تعریف کلاس، ارث بری، ارث بری بیش از یک کلاس
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#, Interface, Inheritance, Inherited Class, Drived Class, Declare Interface, Declare Class, Inherit from more class
+
نوشته شده در شنبه نوزدهم مرداد 1387ساعت 15:37 توسط کنستانتین
|
|

