امروز می خوایم درباره وراثت در سی شارپ صحبت کنیم.
من و دوستان برنامه نویسم هر از گاهی دور هم جمع می شیم و درباره مفاهیم برنامه نویسی سی شارپ بحث و گفتگو می کنیم. یک روز که در حال صحبت بودیم یکی از دوستان گفت: وراثت! درباره وراثت در سی شارپ صحبت کنیم. ما که توقع شنیدن همچین جمله ای از این دوستمون رو نداشتیم، گفتیم باشه ولی اگر مفاهیم آموزش سی شارپ مقدماتی این زبان رو گذرونده باشی الان باید برامون توضیح بدی. گفت: بله می دونم ارث بری به عنوان مهم ترین مفهوم برنامه نویسی شی گرایی محسوب میشه و بعد از گفتن این جمله ساکت شد.
شی چیست:
در این بین یکی از دوستان گفت: قبل از بحث روی این موضوع کی میدونه کلا شی چیه؟؟؟ بعد از کمی مکث که جوابی نگرفت گفت: خب خودم توضیح میدم. شی گونه ای است که دارای هویته و توانایی ثبت حالت و رفتار خودش رو داره که یکی در بینمون گفت: ای بابا یعنی چی آخه؟؟؟ دوستمون دوباره ادامه داد: گفتم دارای هویته و این یک ویژگی منحصر به فرد برای یک شی محسوب میشه که اونو از بقیه اشیاء متمایز میکنه. مثلا چکش؛ آیا چیزی باعث میشه که چکش از اشیا دیگه متمایز بشه؟ گفت: آره خب خود چکش.
دوستمون ادامه داد کاملا درسته و گفتم دارای رفتار هست. حالا چه رفتاری از چکش به ذهنت اومد؟؟؟ گفت: کوبیدن یه میخ روی دیوار یا یه تیکه چوب. دقیقا درسته! پس در حقیقت این رفتار چکش هست که باعث میشه به اون فکر کنید و از اون استفاده کنید.
مفهوم وراثت در سی شارپ:
همین طور که همگی داشتیم به صحبت های زده شده فکر می کردیم یکی از دوستان گفت: منظور از ارث بری یعنی این که یک کلاس میتونه تمام ویژگی های اون کلاس رو به ارث ببره؛ در واقع کلاس والد و فرزندی در میونه. کلاس والد، کلاسیه که خصوصیت ها و متدهای اون، توسط کلاس های دیگه به ارث برده میشه که بهش کلاس پایه هم میگن. به کلاسی که خصوصیت ها و متدهای کلاس پایه رو به ارث میبره معروف هست به کلاس فرزند یا مشتق شده.
تعریف کلاس:
در همین حین یکی از دوستان گفت: کسی میتونه یه تعریف از کلاس داشته باشه؟؟ در جواب دوستم گفتم: مجموعه ای از فیلدها و رفتارها، یک کلاس رو تشکیل میده که رفتارهاشون شبیه به هم هست اما وظایفشون متفاوته. برای اجرا کردن کلاس ها باید از کلاس نمونه بسازیم که بهش میگن نمونه های شی چون یک کلاس هیچ وقت به خودی خود اجرا نمیشه.
مثال:
همگی مفهوم وراثت رو خوب یاد گرفته بودیم که همون دوستی که موضوع رو مطرح کرده بود گفت: من هنوز مفهوم وراثت در سی شارپ برام قابل فهم نیست. همون موقع یکی از دوستان گفت: فرض کن می خوایم برای باغ وحش یک کد ساده بنویسیم. هر باغ وحشی حیواناتی داره که این حیوانات یکسری ویژگی های مشترک و غیر مشترک دارن.
حالا کد ما شامل چهار کلاسه:
- کلاس Animal
- کلاس Bird
- کلاس Fish
- کلاس Zoo که همون main برنامه محسوب میشه.
کلاس های Fish و Bird شامل متدهایی هستند به نام های swim(شنا) و fly(پرواز) و کلاس Animal شامل فیلدهای سن، جنسیت و وزنه هست. دو متد eat (خوردن) و sleep (خوابیدن) هم در این کلاس وجود داره . دو ویژگی خوردن و خوابیدن که تو کلاس Animal نوشتیم در کلاس های Fish و Bird هم وجود داره. ما میتونیم این دو ویژگی رو تو هر کدوم از کلاس های Fish و Bird بنویسیم اما اگر بخوایم یک حیوان دیگه بسازیم باید این دو ویژگی را نیز در آن به کار ببریم. پس این دو صفت رو در کلاس Animal مینویسیم که از دوباره کاری نوشتن این دو ویژگی جلوگیری شه. در واقع، راه حل این موضوع استفاده از ارث بریست و همون طور که از اسمش معلومه یعنی به ارث بردن تمام ویژگی های یک کلاس به کلاس دیگه.
در واقع ارث بری به هدف استفاده مجدد و توسعه کدها برای بالار فتن سرعت پروژه استفاده میشه. حالا متوجه شدی؟؟ گفت: بله متوجه شدم راستش من فکر میکردم یادگیریش خیلی سخت باشه. آموزش مربوط به این موضوع رو از این دید نگاه نکردم برای همین گفتم از شماها بپرسم تا ببینم چقدر یادگیریش نیازه و الان به اهمیت استفاده از اون پی بردم.
کلام آخر:
خب دوستان امیدورام شما هم مفهوم ارث بری رو متوجه شده باشید. اما اگر می خواهید به صورت عملی این مفهوم رو یاد بگیرین، میتونین از فیلم آموزشی آموزش ارث بری در سی شارپ ما استفاده کنید. باعث افتخار ماست که نظراتتون رو با ما درمیان بگذارید.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.