PDA

View Full Version : سوال: امکانات و استفاده های ممکن از وراثت



siniyor2012
شنبه 31 فروردین 1392, 21:57 عصر
سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر

javaphantom
شنبه 31 فروردین 1392, 22:41 عصر
سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر

در جاوا مفهوم ارث بری با کلمه extend تعریف شده و s آخر اون مربوط به سوم شخص هست. کلمه extend یا همان بسط و گسترش دادن بسیار کلمه مناسبی هست که انتخاب شده.

قانون اول برای نوشتن کد برنامه شی گرا : بسته برای تغییر و باز برای گشترش یا بسط.

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

با این عمل شما یک کلاس یا گونه جدیدی دارید که صفات و رفتارهای قبلی رو به ارث برده و کارایی جدید رو نیز دارا هست.

cups_of_java
یک شنبه 01 اردیبهشت 1392, 00:35 صبح
سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر

تکراری (http://barnamenevis.org/showthread.php?394531-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D9%85%DA%A9%D9%86-%D8%A7%D8%B2-%D9%88%D8%B1%D8%A7%D8%AB%D8%AA)

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

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


لطفا یک لینک معتبر به من نشون بدین که هدف از ارث بری در شی گرایی برای کاهش تعداد خط کد بوده. ممنون می شوم.

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


همه ی کلاس ها چندین فیلد مشترک دارند مثلا 7تا و برای هر فیلد متدهای get و set نوشته شده است (حداقل) اگر به ازای هر کلاس این پروژه 7 تا فیلد نوشته شود و متدهای set و get نوشته شود حدود 840 خط میشه که اگر از ارث بری استفاده بشه 21 خط میشه که این یک مزیت خیلی بزرگیه.

اینجا یک جورایی به تناقض می رسه.

این نکته دیتابیس رو هم من نگرفتم یعنی اگر دیتابیس نبود مشکلی نیست تعداد خط کد بالا بره؟

باقی گفته هاتون رو هم بی خیال می شم و وفت نمی زارم برای جواب.

از من ناراحت نشید. این اطلاعات شما بسیار خطرناک هست برای کسانی که دوست دارن یاد بگیرند