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

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

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

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

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

حضرت علی (ع): هر چیزی زکات دارد ، و زکات علم نشر آن است!

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


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

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

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

قسمت صد و بیست و چهارم


مباحث پيشرفته برنامه نويسي شيئ گرا

در بخش مقدماتی با مقدمات چگونگي ايجاد اشيا و نحوه طراحي يك كلاس آشنا شديد.

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

اما با اطلاعاتي كه در بخش های گذشته  بدست آورديم نمـي تـوان كـلاس هـايي كاربردي و قابل استفاده طراحي كرد.

در اين مرحله از دوره با نحوه ايجاد كلاس هايي كارآمد بيشتر آشنا خواهيم شد .

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

برنامه اي كه در اين جا بررسـي مـي كنـيم، همانند برنامه هاي قبلي به صورت يك لايه خواهد بود .

ايده ايجاد برنامه هاي دو لايه در بخش های بعدی  بررسي خواهد شد .

در طـي ايجاد برنامه ي مثال در اين بخش ، با نحوه ايجاد خاصيت ها و متد هايي كه در بين تمام اشياي يك كلاس مشترك باشند نيز آشـنا خواهيد شد.


در اين مرحله :

  • چگونگي ايجاد چند تابع با نامهاي يكسان و تعريفهاي متفاوت را مشاهده خواهيد كرد.
  • با چگونگي ايجاد قالب خاص براي كلاس با استفاده از interfaceها آشنا خواهيد شد.
  • نحوه ي ايجاد كلاس هاي كاربردي در برنامه ها را بررسي خواهيم كرد.
  • نحوه ايجاد خاصيت ها و متدهاي مشترك در برنامه را مشاهده خواهيم كرد.

سربار گذاري متد ها :

یكي از كلاس هايي كه در این دوره  با آن آشنا شديم، كلاس MessageBox بود كه به وسيله آن مي توانستيم يـك كـادر پيغام را در صفحه نمايش دهيم .

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

متد Show .نكته جالبي كه در اين متد وجود داشت اين بود كه به هر صورتي كه نياز داشتيم، مي توانستيم اين متد را فراخواني كنيم .

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

اما سوال اين است كه معمولاً هنگام تعريف متد مشخص مي كنيم كه پارامترهاي مورد نياز آن چيست و به چه ترتيب بايـد بـه متـد ارسال شود، پس چگونه در متد Show از كلاس MessageBox ،تعداد پارامتر ها قابل تغيير بود؟

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

به اين نوع تعريف متد، سربار گذاري متد ها گفته مي شود .

براي مثال متد زير را در نظر بگيريد .

فرض مي كنيم اين متد عدد صحيحي را به عنوان پارامتر دريافت مي كند و آن را در صفحه نمايش مي دهد :

فرض كنيد مي خواهيد متدي داشته باشيد كه مانند اين متد عمل كند ولي يك رشته ي متني را به عنوان پارامتر دريافت كند و آن را نمايش دهد .

در اين صورت بايد متدي جديد با نامي متفاوت ايجاد كنيد .

حال اگر بخواهيد متدي با همين عملكرد داشته باشـيد ولـي مدت زمان نمايش داده شدن عدد يا متن را نيز از كاربر دريافت كند و آن را در زمان مشخص شده نمايش دهد، در اين صورت بايـد متد ديگري با نامي جديد ايجاد كنيد .

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

همچنـين ممكن است اسامي متد ها يا طولاني شود و يا بي معني  راه حل اين مشكل استفاده از سربار گذاري در متد ها است.

متدهاي سربار گذاري شده متد هايي هستند كه نام يكـساني دارنـد امـا مي توانند نوع داده برگشتي از آنها و يا تعـداد پارامترهـاي ورودي آنهـا مختلـف باشـد (حتـي سـطح دسترسـي بـه آنهـا نيـز ماننـد public و يا private بودن آنها نيز مي تواند تفاوت داشته باشد).

البته دقت كنيد كه متدهاي سـربار گـذاري شـده نمـي توانند فقط از نظر نوع داده برگشتي تفاوت داشته باشند .

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

تابع هاي سربار گذاري شده بايد نام مشابه داشته باشند و تعداد و يا نوع پارامترهاي آنها نيز حتماً متفاوت باشـد .

نـوع داده برگشتي و سطح دسترسي آنها هم مي تواند متفاوت باشد و هم مشابه باشد .
در بخش امتحان كنيد قسمت بعدی نحوه استفاده از سربار گذاري در متد ها را مشاهده خواهيم كرد .


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

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

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

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

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

soroush کانال سروش

کانال آی گپ