آموزش سي شارپ - قسمت سي و سوم
در مثال قبلي با پياده سازي کلاس EmpCustomer به مقصود خود رسيديم و در واقع مي توانستيم که اشيايي از اين نوع را هم به ICustomer و هم به IEmployee نسبت دهيم. حالا به کد زير دقت کنيد:


همانطور که مي بينيد من 3 شيء جديد ايجاد کرده ام. 2 تا Employee و يک EmpCustomer و آنها را به عنوان کارمند در ليست کارمندان شرکت اضافه نموده ام. و همينطور 2 شيء ديگر که از نوع Customer هستند. و به همراه شيء قبلي که از جنس EmpCustomer بود به ليست مشتريان شرکت اضافه کرده ام. حالا اگر از شيء شرکت متد هاي چاپ ليست مشتريان و چاپ ليست کارمندان را فراخواني کنم نتيجه زير را خواهيم ديد.

اين نتيجه در واقع نتيجه درستي است چرا که من 3 مشتري و 3 کارمند دارم. اما نکته اي که وجود دارد اين است که شيء EmpCustomer من در موقع نمايش اطلاعات خود ، با ما بقي اشياء من متفاوت است. يعني وقتي در ليست کارمندان نمايش داده مي شود تفاوت آن با بقيه کارمند و در ليست مشتريان با بقيه مشتريان مشهود است. اما من مي خواهم که در هر دو حالت کاملا شبيه به اين دو نوع باشد و رفتاري مشابه بقيه داشته باشد. در نتيجه من بايد از Explicit Interface Implementation استفاده کنم.
Explicit Interface Implementation
اين روش موقعي استفاده مي شود که شما مي خواهيد رفتار يک شيء را بسته به نوع reference آن تعيين کنيد. يعني وقتي به يک شيء از جنس EmpCustomer از دیدگاه ICustomer نگاه مي کنيد رفتاري شبیه مابقي ICustomer ها داشته باشد و وقتي از دید IEmployee نگاه مي کنيد رفتاري شبيه به مابقي IEmployee ها داشته باشد و در حالتي که از ديد EmpCustomer نگاه مي کنيد رفتار خاص ديگر داشت باشد. در مثال ما شما بايد متد Print را سه مرتبه پیاده سازي کنيد. به اين کد دقت کنيد:

همانطور که مي بينيد در پياده سازي هاي دوم و سوم ابتدا نام interface و سپس دقيقا اسم متد را به همان ترتيب که در interface ها نوشته شده است و بدون access modifier مي نويسيم. در پياده سازي متد نيز کاملا شبيه به Employee و Customer عمل خواهيم کرد. در نتيجه اگر مثال قبلي را دوباره اجرا کنيد خروجي به شکل زير خواهيد داشت.

بارگزاري مثال
ادامه دارد...

اين نتيجه در واقع نتيجه درستي است چرا که من 3 مشتري و 3 کارمند دارم. اما نکته اي که وجود دارد اين است که شيء EmpCustomer من در موقع نمايش اطلاعات خود ، با ما بقي اشياء من متفاوت است. يعني وقتي در ليست کارمندان نمايش داده مي شود تفاوت آن با بقيه کارمند و در ليست مشتريان با بقيه مشتريان مشهود است. اما من مي خواهم که در هر دو حالت کاملا شبيه به اين دو نوع باشد و رفتاري مشابه بقيه داشته باشد. در نتيجه من بايد از Explicit Interface Implementation استفاده کنم.
Explicit Interface Implementation
اين روش موقعي استفاده مي شود که شما مي خواهيد رفتار يک شيء را بسته به نوع reference آن تعيين کنيد. يعني وقتي به يک شيء از جنس EmpCustomer از دیدگاه ICustomer نگاه مي کنيد رفتاري شبیه مابقي ICustomer ها داشته باشد و وقتي از دید IEmployee نگاه مي کنيد رفتاري شبيه به مابقي IEmployee ها داشته باشد و در حالتي که از ديد EmpCustomer نگاه مي کنيد رفتار خاص ديگر داشت باشد. در مثال ما شما بايد متد Print را سه مرتبه پیاده سازي کنيد. به اين کد دقت کنيد:

همانطور که مي بينيد در پياده سازي هاي دوم و سوم ابتدا نام interface و سپس دقيقا اسم متد را به همان ترتيب که در interface ها نوشته شده است و بدون access modifier مي نويسيم. در پياده سازي متد نيز کاملا شبيه به Employee و Customer عمل خواهيم کرد. در نتيجه اگر مثال قبلي را دوباره اجرا کنيد خروجي به شکل زير خواهيد داشت.

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