ورود

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



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

farghabil
شنبه 31 فروردین 1392, 22:04 عصر
وراثت یعنی ارث بردن- مثل پسر که بعضی مشخصه های پدر رو داره و خودشم مشخصه های دیگه داره که باعث ساخت شی جدید هم میشه

کدنویسی هم کم میشه
در کل ارث خوبه مخصوصا اگه بهت پول ارث برسه :لبخند:

cups_of_java
یک شنبه 01 اردیبهشت 1392, 00:35 صبح
سلام به دوستان خوبم
من برام یک سوال پیش اومده و اون اینه که وراثت صرفا جهت کمتر شدن کد نویسی فایده داره یا مزیت هایی دیگه هم داره....
البته من شنیدم که وراثت خیلی مفیده اما اگر ممکن هست مثالی رو هم همراه با توضیحاتتون بفرمایید.
با تشکر
وراثت دو مزیت رو برای کد شما فراهم می کنه و به طور کلی برای یکی از این دو منظور (یا هر دوشون) به کار میره:
1) Re-use یکی از راه های استفاده مجدد کردن از کدها وراثت هست. شما با ارث بری کد های مشترکی در کلاس های بالایی (پدر ها) خواهید داشت که در همه فرزندان هستن. این یعنی کد یکجا نوشته شده و داره تو کلاس های فرزند استفاده مجدد (Re-use) میشه.
2) توسعه و گسترش کد: با وراثت از یک کلاس شما کد اون کلاس رو برای خودتون (تو کلاس جدید) فراهم می کنید و حال می تونید با افزودن متدهای جدید اون کد رو توسعه بدید و رفتارش رو کامل تر کنید! این خیلی بهتر از این هست که همون کلاس موجود رو دستکاری می کردید!

در نهایت وراثت هستش که امکان پیاده سازی پلیمورفیزم رو هم فراهم می کنه!

sajjad4563
یک شنبه 01 اردیبهشت 1392, 11:13 صبح
با این همه فواید وراثت، ممکنه که شما برنامه ای رو بنویسید که توش اصلا از وراثت استفاده نکنید، یعنی اصلا شرایط استفاده ازش مهیا نباشه!

پس این درست نیست که باید تو همه جا حتما از وراثت استفاده کرد.

cups_of_java
یک شنبه 01 اردیبهشت 1392, 11:31 صبح
پس این درست نیست که باید تو همه جا حتما از وراثت استفاده کرد.
همین طوره


با این همه فواید وراثت، ممکنه که شما برنامه ای رو بنویسید که توش اصلا از وراثت استفاده نکنید، یعنی اصلا شرایط استفاده ازش مهیا نباشه!
اگه برنامتون در حد 100 خط 200 خط و یا یه کتابخانه کوچیک و یا مخصوصن Utility باشه این جمله کاملن درسته! اما تو برنامه های بزرگ شما حتمن وراثت رو بار ها و بارها میبینید. اگه وراثت نبینید یعنی شیگرا ننوشتید. وراثت فقط مثال موجود زنده و انسان و شکل و دایره و اینا نیست. تو مثال های واقعی برای Reuse و یا توسعه کد خیلی استفاده میشه. چرا؟ چون به شما امکان کم کردن انومالی های تو کد رو که بعدن می تونه در توسعه و نگهداری کدتون اذیتتون کنه رو میده. اگه الگو های طراحی شی گرا رو بخونید خیلی کمکتون می کنه. تو اونا میبینید که کجا ها باید وراثت ایجاد کنید تا یه یه الگویی برسید تا کدتون ماندگار تر بشه!

و در نهایت اینکه ایجاد کردن سلسله های وراثت بی خود و اشتباه، کدتون رو پیچیده تر و نگهداری و دستکاری اون رو سخت تر می کنه و عذاب میشه براتون!

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

sajjad4563
دوشنبه 02 اردیبهشت 1392, 12:19 عصر
ممنونم بابت راهنماییتون، خیلی به دردم خورد
من الآن یه ساله که جاوا SE رو دارمن میخونم و جدیدا هم دارم شروع میکنم که پایگاه داده MySQL رو یاد بگیرم.
شما کتاب خاصی مد نظرتون هست؟

cups_of_java
دوشنبه 02 اردیبهشت 1392, 13:44 عصر
ضمنن توجه کنید که بین کلاس های پدر و فرزند باید بتونید رابطه IS-A بر قرار کنید! یعنی پسر حتمن یک چیزی از جنس پدر باشه!!! گاهی اوقات ما سلسله مراتبی می سازیم که وراثتش درست نبوده و ما به اشتباه فکر کردیم اون ها هم نوعن.

۱. Thinking In Java, Bruce Eckel
۲. Design Patterns: Elements of reusable software, Gang of four (فقط در مورد شی گرایی هست،‌ با زبان سی پلاس پلاس- اما کتابی مثل این خیلی کم نوشته شده تو تاریخ کامپبوتر)