تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 34 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت محمد (ص) : طلب علم بر هر انسانی واجب است ،همانا خداوند علم آموزان را دوست دارد.

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و نوزدهم


به نام پروردگار جهان

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و نوزدهم

سلام به همه کاربران وبسایت لندلرن

قسمت صد و نوزدهم


چگونه كار مي كند؟

مجدداً تمام كاري كه بايد انجام دهيد اين است كه متد جديدي را به نـام GetPowerToWeightRatio بـه كـلاس SportsCar اضافه كنيد .

به اين ترتيب  اين متد براي تمام اشيايي كه از كلاس SportsCar نمونه سازي شده باشند قابل دسترسي خواهد بود .

توجه كنيد كه در اين متد قبل از تقسيم نيروي موتور اتومبيل بر وزن آن، فيلد حاوي نيروي موتـور را بـه نـوع داده اي double تبديل كرده ايم .

همانطور كه در قسمتهاي قبلي گفتم، تقسيم يك متغير از نوع عدد صحيح بر متغيـر ديگـري از نـوع عـدد صـحيح، باعث مي شود كه حاصل نيز از نوع عدد صحيح باشد.

اما در اين متد ما به قسمت اعشار حاصل تقسيم نياز داريم .

با تبديل يكي از طرفين تقسيم به نوع داده اي double ،باعث مي شويم كه نوع داده اي دو موردي كه مي خواهند بـر يكـديگر تقسيم شوند متفاوت شود .

بنابراين هنگامي كه كامپايلر بخواهد اين دو مقدار را بر هم تقسيم كند نوع داده اي كوچكتر را (int)بهنوع داده اي بزرگتر (double) تبديل مـي كنـد و سـپس تقـسيم را انجـام مـي دهـد، همچنـين حاصـل تقـسيم را نيـز از نـوع double برمي گرداند.

به اين ترتيب بعد از تقسيم به مقدار اعشاري نيز دسترسي خواهيم داشت .

تغيير دادن پيش فرض ها :

علاوه بر اضافه كردن متدها و خاصيت هاي جديد به يك كلاس مشتق شده، در شرايطي ممكن است بخواهيد يكـي از متـدها و يـا
خاصيت هاي كلاس پايه، در كلاس مشتق شده به گونه اي ديگر عمل كند .

براي اين كار بايـد آن متـد و يـا خاصـيت را از اول در كلاس مشتق شده بنويسيد .

همانطور كه در بخش متدهاي سازنده گفتيم، اين متدها زماني كه يك شيئ از كلاس بخواهد نمونه سازي شود فراخواني مي شوند و
اجازه مي دهند كه حالت اوليه اعضاي يك شيئ را تعيين كنيد .

در متد سازنده كلاس Car ،مقدار numberOfDoors _را برابر با ۴ در نظر گرفتيم در صورتي كه به طور معمول تعداد درها براي يك اتومبيل مسابقه اي ۲ در است .

در مثال قبلـي بـا تنظـيم اين خاصيت بعد از ايجاد شيئ، تعداد درها را برابر با ۲ قرار داديم.

اما سوال اين است كه چگونه مي توانيم اين مقدار را هنگـام نمونـه سازي شدن شيئ از كلاس SportsCar تنظيم كنيم؟

اگر بخواهيد يكي از متدهاي كلاس پايه را با يك متد جديد در كلاس مشتق شده كه توسط خودتان نوشته شده است تعويض كنيد، به اين پروسه override كردن گفته مي شود.

به اين ترتيب اگر آن متد را در يك شيئ از كلاس مشتق شده فراخواني كنيد، متد جديد اجرا مي شود اما اگر اين متد را در يك شيئ از كلاس پايه فراخواني كنيد، متد قديمي مورد استفاده قرار خواهـد گرفـت .

در بخش امتحان كنيد بعد، مشاهده خواهيد كرد كه چگونـه مـي تـوان متـد سـازنده كـلاس Car را در كـلاس SportsCar ، override كرد .

امتحان كنيد: override كردن متد سازنده

  • براي override كردن متد سازنده كلاس Car در كلاس SportsCar ،تنها كار ي كه بايد انجـام دهید.
    اين است كه يك متد سازنده جديد براي كلاس SportsCar ایجاد کنید.
  • بـرا ي این كـار كـد زيـر را بـه كـلاسSportsCar اضافه كنید:
خط زير را از زير برنامه Main در فايل Program.cs حذف كنید.
حال براي تست كردن متد سازنده كلاس SportsCar ،برنامه را اجرا كنيد .

بعد از اجراي برنامه پنجـره اي مـشابه شكل زیر را مشاهده خواهيد كرد.

چگونه كار مي كند؟

متد سازنده اي كه براي كلاس SportsCar ايجاد كرده ايد، بعد از متد سازنده موجود در كلاس Car اجرا مي شـود .

توجـه داشته باشيد هنگامي كه يك متد سازنده براي كلاس مشتق شده ايجاد كنيد، باز هم متد سازنده موجود در كلاس پايـه احـضار مـي
شود.

اما NET ،.متد سازنده كلاس پايه را قبل از متد سازنده كلاس مشتق شده فراخواني مي كند .

در حقيقت ترتيب اجراي متدها به اين صورت است كه ابتدا متد زير اجرا مي شود :

سپس متد زير اجرا مي شود:

همچنـين توجـه كنيـد كـه بـراي تغييـر دادن تعـداد درهـا در كـلاس مـشتق شـده نمـي تـوانيم بـه صـورت مـستقيم بـه فيلـد numberOfDoors_ دسترسي داشته باشيم، زيرا اين فيلـد در كـلاس پايـه از نـوع private تعريـف شـده اسـت و متدهاي كلاس مشتق شده به آن دسترسي ندارند .

به همين دليل با استفاده از خاصـيت NumberOfDoors تعـداد درهـا را برابر با ۲ قرار مي دهيم .

پایان قسمت صد و نوزدهم

به قصمت صد و بیستم بروید.

 


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ