سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر
سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر
در جاوا مفهوم ارث بری با کلمه extend تعریف شده و s آخر اون مربوط به سوم شخص هست. کلمه extend یا همان بسط و گسترش دادن بسیار کلمه مناسبی هست که انتخاب شده.
قانون اول برای نوشتن کد برنامه شی گرا : بسته برای تغییر و باز برای گشترش یا بسط.
شما فرض کنید کلاسی دارید که کامپایل شده و شامل یک سری رفتار هست که شما از اون دارید استفاده می کنید. حال تصور کنید که می خواهید که رفتار به این کلاس اضافه کنید با محفوض بودن باقی رفتار ها یعنی به عبارتی شما می خواهید کلاس اصلی باقی بماند و یک کپی از آن داشته باشید اما با این تفاوت که یک یا چند رفتار جدید با سلیقه و خواشته شما به آن اضافه شده باشد.
با این عمل شما یک کلاس یا گونه جدیدی دارید که صفات و رفتارهای قبلی رو به ارث برده و کارایی جدید رو نیز دارا هست.
فرض کن یک پروژه ای(برنامه) که با دیتابیس کار میکنه و دارای 40 کلاس است و همه ی کلاس ها چندین فیلد مشترک دارند مثلا 7تا و برای هر فیلد متدهای get و set نوشته شده است (حداقل) اگر به ازای هر کلاس این پروژه 7 تا فیلد نوشته شود و متدهای set و get نوشته شود حدود 840 خط میشه که اگر از ارث بری استفاده بشه 21 خط میشه که این یک مزیت خیلی بزرگیه.
علاوه بر این اگر خواستی در وسط راه یکی از متدها را تغییر بدهی باید متد های همه ی کلاس ها را تغییر بدهی که با ارث بری فقط یک متد را تغییر می دهی در ضمن اگر اشتباهی هم در پیاده سازی متد رخ داده باشه پیدا کردن این مشکل هم سخته و هم زمان بر که در ارث بری دیگر این مشکل نیست.(این مثالی که زدم پروژه ای است که خودم روی آن کار میکنم)
امیدوارم که متوجه شده باشی.
لطفا یک لینک معتبر به من نشون بدین که هدف از ارث بری در شی گرایی برای کاهش تعداد خط کد بوده. ممنون می شوم.
درضمن لازم به ذکر است که بگم در جاوا وقتی کلاسی از یک کلاس دیگر ارث می بره خود کامپایلر می یاد بابا رو تو فرزند کپی میکنه. یعنی زحمت کد نویسی رو خودش می کشه. پس این حرف شما
اینجا یک جورایی به تناقض می رسه.همه ی کلاس ها چندین فیلد مشترک دارند مثلا 7تا و برای هر فیلد متدهای get و set نوشته شده است (حداقل) اگر به ازای هر کلاس این پروژه 7 تا فیلد نوشته شود و متدهای set و get نوشته شود حدود 840 خط میشه که اگر از ارث بری استفاده بشه 21 خط میشه که این یک مزیت خیلی بزرگیه.
این نکته دیتابیس رو هم من نگرفتم یعنی اگر دیتابیس نبود مشکلی نیست تعداد خط کد بالا بره؟
باقی گفته هاتون رو هم بی خیال می شم و وفت نمی زارم برای جواب.
از من ناراحت نشید. این اطلاعات شما بسیار خطرناک هست برای کسانی که دوست دارن یاد بگیرند