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

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

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

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

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

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

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


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

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

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

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


كلاسهاي Abstract:

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

براي مثال هنگامي كه يك كنترل Button روي فرم برنامه قرار مي دهيد، در حقيقت يك شيئ از كلاسي به نام Button ايجاد كرده ايد و در طي برنامه نيز با آن شيئ كار مي كنيد .

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

سـپ س تمـام كنتـرل هايي كه مي خواهيد ايجاد كنيد را، مانند كنترل Button و يا كنترل TextBox ،از اين كلاس به ارث ببريد.
در اين حالـت مسلماً نمي خواهيد بعدها كسي بتواند شيئ را از كلاس Window نمونه سازي كند و از آن شيئ در برنامه استفاده كند، چون ايـن
امر بي معني است كلاس Window نشان دهنده هيچ كنترل خاصي نيست، بلكه فقط به عنوان يـك كـلاس پايـه بـراي تمـام كنترل ها به كار مي رود .

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

 

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

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

به عبارت ديگر اين متد نمي تواند شامل هيچ كدي باشد .

همچنين مي خواهيد هر كنترلي كه با مشتق شدن از كلاس Window ايجاد مي شود، حتماً اين متد را در خود override كند تا به اين وسـيله
نحوه ي رسم آن كنترل در صفحه مشخص شود .

براي اين كار مي توانيد آن متد را از نوع abstract مشخص كنيد.

بـه ايـن ترتيب هر كلاسي كه از كلاس Window به عنوان كلا س پايه استفاده كند موظف است كه تمام اعـضاي abstract آن كلاس را در خود override كند .

البته دقت داشته باشـيد كـه يـك عـضو abstract فقـط مـي توانـد در كلاسـهاي abstract ايجاد شود.

به عبارت ديگر نمي توانيد در يك كلاس عادي، يك عضو abstract ايجاد كنيد .

در بخش امتحان كنيد بعد سعي مي كنيم مثالي كه در بالا عنوان شد را به گونه اي ساده پياده سازي كنيم .

امتحان كنيد: كلاسهاي Abstract

  • یک برنامه کنسولی به نام  Abstract demo ایجاد کنید.
  • با استفاده از پنجره ي Solution Explorer يك كلاس جديد به نام Window به برنامه اضافه كنيد.
  • تعريف كلاس Window را به صورت زير تغيير دهيد:
  • كد مشخص شده در زير را به كـلاس Window اضـافه كنيـد .
  • دقـت كنيـد متـدي كـه در ايـن كـلاس بـه صـورت abstract تعريف شده است نبايد حاوي كد باشد.
در داخل فضاي نام Abstract_Demo و بعد از كلاس Window ،كلاس جديدي به نام ListBox بـه صورت زير تعريف كنيد .
اين كلاس از كلاس Window مشتق مي شود و به صورت فرضي يـك ليـست بـاكس را در صفحه نمايش مي دهد .
در مورد تداخل نام اين كلاس با كلاس ListBox در ويژوال استوديو نگـران نباشـيد، زيـرا كلاس ListBox كه در اين قسمت تعريف مي كنيد در فضاي نام Abstract_Demo است ولـي كـلاس ListBox ويژوال استوديو در فضاي نام System.Windows.Forms است.
  • حال مي خواهيم كنترل ديگري نيز مانند يك كنترل Button ،با استفاده از كلاس Window ايجاد كنـيم .
  • بـراي اين كار كلاس ديگري را بعد از كلاس ListBox در فضاي نام Abstract_Demo به صورت زيـر ايجـاد كنيد:
  • ايجاد كلاسهاي مورد نياز براي برنامه به پايان رسيد و حالا بايد نحوه عملكرد آنها را بررسي كنـيم .
  • ويرايـشگر كـد بـرايفايل Program.cs را باز كرده و كد زير را در متد Main وارد كنيد.
  • حال برنامه را اجرا کنید و نتیجه را مشاهده کنید.
  • چگونگی کارکرد این نمونه برنامه را در قسمت صد و سی و دوم دنبال کنید.

 


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

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

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

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

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

soroush کانال سروش

کانال آی گپ