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

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

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

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

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

حضرت علی (ع) : دانش اندک همراه با عمل بهتر از علم بسیار بدون عمل است.

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


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

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

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

قسمت صد و صد و سی و دوم


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

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

تمام كنترل ها در يك فرم داراي موقعيت مكاني معيني هستند كه به وسيله دو خاصيت Top( فاصله ي كنتـرل از بـالاي فـرم ) و Left( فاصله ي كنترل از سمت چپ فرم ) مشخص مي شوند.

پس همه ي آنها بايد شامل دو فيلد به نامهـاي Top و Left باشند. به همين دليل اين دو فيلد را در كلاس Window قرار مي دهيم .

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

دقت كنيد كه اگر متدي در يك كلاس به عنوان abstract معرفي شود، آن متد نبايد شامل هيچ دستوري باشـد . بـه عبـارت ديگر آن متد نبايد داراي پياده سازي باشد .

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

حال بايد با استفاده از كلاس Window ،كنترلهاي مورد نظرمان را ايجاد كنيم.
ابتدا از كنترلي همانند ListBox شـروع مـي كنيم.
براي اين كار كلاسي به نام ListBox ايجاد كرده و كلاس Window را به عنوان كلاس پايـه ي آن مـشخص مـي كنيم. همانطور كه در بخش فضاي نام گفتم، نام كامل اين كلاس به صـورت ListBox.Abstract_Demo اسـت.

بنابراين با كلاس ListBox مربوط به ويژوال استوديو كه به نام System.Windows.Forms.ListBox است اشتباه نخواهد شد.

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

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

  • پارامتر اول براي تعيين فاصله ي كنتـرل از سـمت چـپ (مقـدار فيلـد Top).
  • پارامتر دوم براي تعيين فاصله ي كنترل از بالاي فرم (مقدار فيلد Left).
  • و پارامتر سوم ب راي تعيين متني كه بايد در ليست بـاكس قرار گيرد (مقدار خاصيت listBoxContents ).

به اين ترتيب مي توانيم در همان ابتداي ايجاد شيئ از كـاربر بخـواهيم كه مقدار اين موارد را تعيين كند .

نكته:
اگر متد سازنده ي يك كلاس پارامتر داشته باشد، هنگام نمونه سازي يك شيئ از آن كلاس با استفاده از دستور new بايـد مقدار آن پارامتر ها را به كلاس فرستاد .
براي مثال به نحوه نمونه سازي اشياي كلاس ListBox در متد Main توجه كنيـد .
بعد از دستور new ،در مقابل اسم كلاس مقدارهاي لازم براي ايجاد كلاس نيز به ان فرستاده شده اند .

هنوز كلاس ListBox كامل نشده است و اگر در اين مرحله آن را كامپايل كنيم با خطا مواجـه خـواهيم شـد .
زيـرا هنـوز متـد DrawWindow را در ايــن كــلاس override نكــرده ايــم و در كــلاس Window هــم ايــن متــد بــه صــورت abstract مشخص شده است، پس بايد در كلاس مشتق شـده override شـود .
بنـابراين هماننـد override كردن متدهاي عـادي كـه در قـسمتهاي قبـل مـشاهده كـرده ايـد، متـد DrawWindow از كـلاس پايـه را در ايـن كـلاس
override مي كنيم .

ادامه آموزش را در قسمت صد و سی و سوم دنبال کنید.

 


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

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

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

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

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

soroush کانال سروش

کانال آی گپ