وراثت در سی شارپ
1399-07-01

مطلبی که اهمیت وراثت در سی شارپ را به شما خواهد گفت

یادگیری مفهوم وراثت

امروز می خوایم درباره وراثت در سی شارپ صحبت کنیم.
من و دوستان برنامه نویسم هر از گاهی دور هم جمع می شیم و درباره مفاهیم برنامه نویسی سی شارپ بحث و گفتگو می کنیم. یک روز که در حال صحبت بودیم یکی از دوستان گفت: وراثت! درباره وراثت در سی شارپ صحبت کنیم. ما که توقع شنیدن همچین جمله ای از این دوستمون رو نداشتیم، گفتیم باشه ولی اگر مفاهیم آموزش سی شارپ مقدماتی این زبان رو گذرونده باشی الان باید برامون توضیح بدی. گفت: بله می دونم ارث بری به عنوان مهم ترین مفهوم برنامه نویسی شی گرایی محسوب میشه و بعد از گفتن این جمله ساکت شد.

شی چیست:

در این بین یکی از دوستان گفت: قبل از بحث روی این موضوع کی میدونه کلا شی چیه؟؟؟ بعد از کمی مکث که جوابی نگرفت گفت: خب خودم توضیح میدم. شی گونه ای است که دارای هویته و توانایی ثبت حالت و رفتار خودش رو داره که یکی در بینمون گفت: ای بابا یعنی چی آخه؟؟؟ دوستمون دوباره ادامه داد: گفتم دارای هویته و این یک ویژگی منحصر به فرد برای یک شی محسوب میشه که اونو از بقیه اشیاء متمایز میکنه. مثلا چکش؛ آیا چیزی باعث میشه که چکش از اشیا دیگه متمایز بشه؟ گفت: آره خب خود چکش.
دوستمون ادامه داد کاملا درسته و گفتم دارای رفتار هست. حالا چه رفتاری از چکش به ذهنت اومد؟؟؟ گفت: کوبیدن یه میخ روی دیوار یا یه تیکه چوب. دقیقا درسته! پس در حقیقت این رفتار چکش هست که باعث میشه به اون فکر کنید و از اون استفاده کنید.

آموزش سی شارپ

مفهوم وراثت در سی شارپ:

همین طور که همگی داشتیم به صحبت های زده شده فکر می کردیم یکی از دوستان گفت: منظور از ارث بری یعنی این که یک کلاس میتونه تمام ویژگی های اون کلاس رو به ارث ببره؛ در واقع کلاس والد و فرزندی در میونه. کلاس والد، کلاسیه که خصوصیت ها و متدهای اون، توسط کلاس های دیگه به ارث برده میشه که بهش کلاس پایه هم میگن. به کلاسی که خصوصیت ها و متدهای کلاس پایه رو به ارث میبره معروف هست به کلاس فرزند یا مشتق شده.

تعریف کلاس:

در همین حین یکی از دوستان گفت: کسی میتونه یه تعریف از کلاس داشته باشه؟؟ در جواب دوستم گفتم: مجموعه ای از فیلدها و رفتارها، یک کلاس رو تشکیل میده که رفتارهاشون شبیه به هم هست اما وظایفشون متفاوته. برای اجرا کردن کلاس ها باید از کلاس نمونه بسازیم که بهش میگن نمونه های شی چون یک کلاس هیچ وقت به خودی خود اجرا نمیشه.

مثال:

همگی مفهوم وراثت رو خوب یاد گرفته بودیم که همون دوستی که موضوع رو مطرح کرده بود گفت: من هنوز مفهوم وراثت در سی شارپ برام قابل فهم نیست. همون موقع یکی از دوستان گفت: فرض کن می خوایم برای باغ وحش یک کد ساده بنویسیم. هر باغ وحشی حیواناتی داره که این حیوانات یکسری ویژگی های مشترک و غیر مشترک دارن.
حالا کد ما شامل چهار کلاسه:

  1. کلاس Animal
  2. کلاس Bird
  3. کلاس Fish
  4. کلاس Zoo که همون main برنامه محسوب میشه.

کلاس های Fish و Bird شامل متدهایی هستند به نام های swim(شنا) و fly(پرواز) و کلاس Animal شامل فیلدهای سن، جنسیت و وزنه هست. دو متد eat (خوردن) و sleep (خوابیدن) هم در این کلاس وجود داره . دو ویژگی خوردن و خوابیدن که تو کلاس Animal نوشتیم در کلاس های Fish و Bird هم وجود داره. ما میتونیم این دو ویژگی رو تو هر کدوم از کلاس های Fish و Bird بنویسیم اما اگر بخوایم یک حیوان دیگه بسازیم باید این دو ویژگی را نیز در آن به کار ببریم. پس این دو صفت رو در کلاس Animal مینویسیم که از دوباره کاری نوشتن این دو ویژگی جلوگیری شه. در واقع، راه حل این موضوع استفاده از ارث بریست و همون طور که از اسمش معلومه یعنی به ارث بردن تمام ویژگی های یک کلاس به کلاس دیگه.

در واقع ارث بری به هدف استفاده مجدد و توسعه کدها برای بالار فتن سرعت پروژه استفاده میشه. حالا متوجه شدی؟؟ گفت: بله متوجه شدم راستش من فکر میکردم یادگیریش خیلی سخت باشه. آموزش مربوط به این موضوع رو از این دید نگاه نکردم برای همین گفتم از شماها بپرسم تا ببینم چقدر یادگیریش نیازه و الان به اهمیت استفاده از اون پی بردم.

کلام آخر:

خب دوستان امیدورام شما هم مفهوم ارث بری رو متوجه شده باشید. اما اگر می خواهید به صورت عملی این مفهوم رو یاد بگیرین، میتونین از فیلم آموزشی آموزش ارث بری در سی شارپ ما استفاده کنید. باعث افتخار ماست که نظراتتون رو با ما درمیان بگذارید.

مقالات مرتبط

تفاوت dp و px در برنامه نویسی اندروید

واحد های اندازه گیری اندروید
زهرا چگینی
10

به نظر شما تفاوت dp و px در برنامه نویسی اندروید، این دو واحد اندازه گیری چیست؟ پس ما را همراهی کنید.

delegate چیست؟

Delegate ها چرا به زبان سی شارپ اضافه شدند؟
مرضیه فتاحی
15

delegate چیست؟ چه کاربردی دارد؟ چگونه و در چه موقعیت هایی باید ازآنها استفاده کرد؟ با ما همراه شوید تا تمامی این سوال ها دریابید.

اکشن (Action) در سی شارپ، راهی برای خواناتر شدن کدها

موارد استفاده ی Action در سی شارپ
زهرا چگینی
10

Action در سی شارپ از پایه و اساس Delegate ها استفاده میکند، درحقیقت همان Delegate های هستند که کار را برای ما راحت تر میکنند.

Extension method درسی شارپ، راهی برای کارایی بالا در کدها

اکستنشن (extension) درسی شارپ
مرضیه فتاحی
10

هدف ما دانستن نکات مهمextension method در سی شارپ، نحوه استفاده و همچنین کاربرد آن در کدنویسی است. پس با ما همراه شوید.

لیست کامل تگ های html که هیچ کس به شما نخواهد گفت

آشنایی با تگ های html
زهرا چگینی
15

تگ ها در html نقش مهمی دارند زیرا تمامی کارهای html با تگ انجام می‌شود. به همین دلیل ما یک لیست کامل از تگ‌های html برای شما آماده کرده‌ایم تا از آن استفاده کنید.

ویژگی های جدید asp.net core که حیرت برنامه نویسان را برانگیخت

معرفی ویژگی های جدید asp.net core از مایکروسافت
مرضیه فتاحی
10

ویژگی های جدید asp.net core چیست؟ مایکروسافت در این نسخه چه امکاناتی را برای برنامه نویسانش قرار داده است. اگر شما هم خواهان دانستن این مطالب هستید، ما را همراهی کنید.