آموزش سی شارپ - قسمت سي ام
اینترفیس ها به عنوان سرویس - Interface as Service
وقتی بستر دات نت را بررسی می کنید به تعداد زیادی interface برخورد می کنید که وقتی آن ها را پیاده سازی کنید , می توانید از یک سرویس استفاده کنید. در واقع به ارث بری از یک اینترفیس شما یک از سرویس برخوردار خواهید شد.
به مثال زیر دقت کنید:

همانطور که در تصویر بالا مشخص است شما می توانید با استفاده از متد Sort روی کلاس ArrayList که در واقع یک Collection می باشد محتویات آرایه را سورت نمائید و در نتیجه خروجی شبیه به تصویر زیر داشته باشید:

حالا اگر در داخل یک ArrayList دیگر من چند شیء از جنس Person قرار دهم و باز متد Sort را فراخوانی کنم چه اتفاقی خواهد افتاد:

همانطور که در تصویر زیر می بینید به جهت اینکه فریم ورک دات نت نمی داند که باید سورت را بر چه مبنایی روی تایپ های custom مثل Person انجام دهد یک Exception (خطا) پرتاب خواهد شد.

در واقع در فریم ورک دات نت هرکجا شما به سورت کردن یک تایپ خاص مثل Person را نیاز داشتید کافیست که از یک Interface به نام IComparable به ارث برید. یا به بیانی دیگر مایکروسافت سرویس Sort را در غالب این اینترفيس ارائه می کند. حالا به کد زیر که پیاده سازی اینترفيس IComparable می باشد دقت کنید:

همانطور که می بینید در داخل این اینترفیس یک متد به نام CompareTo وجود دارد که یک ورودی از جنس Object دارد و یک خروجی عددی. در صورتیکه عددی که از این متد خارج می شود بزرگتر از یک باشد به این معناست که شیء جاری(this) بزرگتر از پارامتر پاس شده می باشد و در صورتیکه عدد کوچکتر از صفر باشد به این معناست که شیء جاری کوچکتر از پارامتر پاس شده می باشد و اگر این دو باهم برابر باشد باید خروجی متد 0 باشد. در کدی که من نوشتم مبنای مقایسه را برروی سن افراد قرار دادم که در نتیجه این نوع پیاده سازی خروجی زیر از نمونه کد بالا حاصل خواهد شد:

بارگزاری مثال
ادامه دارد...
به مثال زیر دقت کنید:

همانطور که در تصویر بالا مشخص است شما می توانید با استفاده از متد Sort روی کلاس ArrayList که در واقع یک Collection می باشد محتویات آرایه را سورت نمائید و در نتیجه خروجی شبیه به تصویر زیر داشته باشید:

حالا اگر در داخل یک ArrayList دیگر من چند شیء از جنس Person قرار دهم و باز متد Sort را فراخوانی کنم چه اتفاقی خواهد افتاد:

همانطور که در تصویر زیر می بینید به جهت اینکه فریم ورک دات نت نمی داند که باید سورت را بر چه مبنایی روی تایپ های custom مثل Person انجام دهد یک Exception (خطا) پرتاب خواهد شد.

در واقع در فریم ورک دات نت هرکجا شما به سورت کردن یک تایپ خاص مثل Person را نیاز داشتید کافیست که از یک Interface به نام IComparable به ارث برید. یا به بیانی دیگر مایکروسافت سرویس Sort را در غالب این اینترفيس ارائه می کند. حالا به کد زیر که پیاده سازی اینترفيس IComparable می باشد دقت کنید:

همانطور که می بینید در داخل این اینترفیس یک متد به نام CompareTo وجود دارد که یک ورودی از جنس Object دارد و یک خروجی عددی. در صورتیکه عددی که از این متد خارج می شود بزرگتر از یک باشد به این معناست که شیء جاری(this) بزرگتر از پارامتر پاس شده می باشد و در صورتیکه عدد کوچکتر از صفر باشد به این معناست که شیء جاری کوچکتر از پارامتر پاس شده می باشد و اگر این دو باهم برابر باشد باید خروجی متد 0 باشد. در کدی که من نوشتم مبنای مقایسه را برروی سن افراد قرار دادم که در نتیجه این نوع پیاده سازی خروجی زیر از نمونه کد بالا حاصل خواهد شد:

بارگزاری مثال
ادامه دارد...
+ نوشته شده در چهارشنبه ششم شهریور ۱۳۸۷ ساعت 8:8 توسط مسعود طباطبايي | MasoudTB
|