PDA

View Full Version : سوال: وراثت در جاوا



sajjad4563
جمعه 25 بهمن 1392, 23:12 عصر
تو این کد، در نهایت t4 یک t3 نیست

چرا؟


public class t3 {
public List sortList(List list) {
// implemention
return list;
}
}
class t4 extends t3 {
// Now, t4 isn't a t3, Why?!
}

cups_of_java
شنبه 26 بهمن 1392, 15:22 عصر
کی گفته که تی-۴ از نوع تی-۳ نیست؟ بچه همیشه از نوع پدر هست ولی نه برعکس
منبع یا لینک رو بزار.

sajjad4563
شنبه 26 بهمن 1392, 20:46 عصر
کی گفته که تی-۴ از نوع تی-۳ نیست؟ بچه همیشه از نوع پدر هست ولی نه برعکس
منبع یا لینک رو بزار.

منم همیشه اینطوری فکر میکردم، ولی این تو این اسلاید هستش، یه نگاه بفرمایین:
http://www.javacup.ir/javacup/files/Java/Slides/22_OOP_Design.pptx


اسلاید شماره 11 و 12 هستش.
خومم گیج شدم!

cups_of_java
شنبه 26 بهمن 1392, 20:54 عصر
دوست عزیز شما منظور اسلاید رو نگرفتی. تو این قسمت اسلاید میخواد بگه که استفاده از Inheritance همیشه درست و به جا نیست. چون گاهی بین مفاهیم رابطه یک چیز بودن وجود نداره ولی ما Inheritance میزاریم در حالیکه در اصل is-a نبوده!
وگرنه همیشه رابطه وراثت رابطه is-a برقرار میکنه، چه بین پدر و پسر این رابطه در اصل بوده باشه چه نبوده باشه.

تو اون مثال می بینی که میگه DynamicDataSet در واقع یک Dataset هست نه Sorting! پس بینشون نباید از وراثت استفاده کرد بلکه باید از Composition استفاده کرد.

sajjad4563
شنبه 26 بهمن 1392, 20:59 عصر
دوست عزیز شما منظور اسلاید رو نگرفتی. تو این قسمت اسلاید میخواد بگه که استفاده از Inheritance همیشه درست و به جا نیست. چون گاهی بین مفاهیم رابطه یک چیز بودن وجود نداره ولی ما Inheritance میزاریم در حالیکه در اصل is-a نبوده!
وگرنه همیشه رابطه وراثت رابطه is-a برقرار میکنه، چه بین پدر و پسر این رابطه در اصل بوده باشه چه نبوده باشه.

تو اون مثال می بینی که میگه DynamicDataSet در واقع یک Dataset هست نه Sorting! پس بینشون نباید از وراثت استفاده کرد بلکه باید از Composition استفاده کرد.

آها، پس این اسلاید میگه که استفاده کردن از وراثت اینجا معنایی نداره، وگرنه میشه کلاس DynamicDataSet متدهای Sorting رو تو خودش دارشته باشه، چون اینجا ارث برده دیگه، درسته؟
میشه گفت از نظر کد نویسی درسته، یعنی DynamicDataSet بچه Sorting هست و یک Sorting حساب میشه، ولی از نظر مفهومی معنایی نداره و اشتباه هست.
درسته این برداشتم؟

cups_of_java
شنبه 26 بهمن 1392, 21:35 عصر
آها، پس این اسلاید میگه که استفاده کردن از وراثت اینجا معنایی نداره، وگرنه میشه کلاس DynamicDataSet متدهای Sorting رو تو خودش دارشته باشه، چون اینجا ارث برده دیگه، درسته؟
درسته! اصن خودت این کد رو بنویس امتحان کن! خودت رو به شک ننداز :)


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

sajjad4563
شنبه 26 بهمن 1392, 21:52 عصر
درسته! اصن خودت این کد رو بنویس امتحان کن! خودت رو به شک ننداز :)


دقیقن درسته

ممنونم، خیالم راحت شد!