نمایش نتایج 1 تا 15 از 15

نام تاپیک: ارث بری چندگانه

  1. #1

    ارث بری چندگانه

    من شروع کردم دارم رفرنس زبان سی شارپ رو میخونم رسیدم به اینجاش دیدم نوشته ظاهرا ارث بری single رو داره. یعنی ارث بری چندگانه نداره سی شارپ؟
    اونوقت چرا؟
    چیز جالبیه ها بدرد میخوره

  2. #2
    کاربر دائمی آواتار amir-yeketaz
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    تهران
    پست
    508

    نقل قول: ارث بری چندگانه

    من شروع کردم دارم رفرنس زبان سی شارپ رو میخونم رسیدم به اینجاش دیدم نوشته ظاهرا ارث بری single رو داره. یعنی ارث بری چندگانه نداره سی شارپ؟
    اونوقت چرا؟
    چون که قاعده ی شی گرایی در جاوا وسی شارپ ارث بری سلسله مراتبی است ...
    یکی از دلایلی که من میدونم اینه که همون طور که در سی پلاس شما میتونید ارث بری چند گانه داشته باشین ممکنه یه سری مشکلات مثه شبیه بودن نام فیلد ها و ... به وجود بیاد ولی در سی شارپ شما دیگر با این مشکلات سر کار ندارید و با دردسر کمتری برنامه نویسی می کنید ولی خوب در اینترفیس ها شما میتونید پیاده سازی چند گانه داشته باشین که تو اونجا میتونید هم به صورت مستقیم(explicit) و هم غیرمستقیم(implicit) به اون متود یا property مورد نظر دسترسی داشته باشین که شاید توی مباحث polymorphism براتون مفید واقع بشه ...
    امیدوارم مفید واقع شده باشه ...
    موفق باشید .

  3. #3
    کاربر دائمی آواتار ricky22
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    1,591

    نقل قول: ارث بری چندگانه

    پس دستور multiinheritance چیه؟

  4. #4
    کاربر دائمی آواتار s.khoshfekran
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    تهران
    پست
    503

    نقل قول: ارث بری چندگانه

    دوست عزیز میتونی برای ارث بری چندگانه از Interface استفاده کرد

  5. #5

    نقل قول: ارث بری چندگانه

    بنظرم ارث بری چندگانه از Interface ها نمیتونه جایگزین کاملی ارث بری چندگانه از کلاسهای معمولی باشه.
    چون Interface که Implementation نداره.
    در ارث بری چندگانهء معمولی Implementation ها (هم) منتقل میشن، نه فقط Signature متدها.

  6. #6
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: ارث بری چندگانه

    نقل قول نوشته شده توسط eshpilen مشاهده تاپیک
    بنظرم ارث بری چندگانه از Interface ها نمیتونه جایگزین کاملی ارث بری چندگانه از کلاسهای معمولی باشه.
    چون Interface که Implementation نداره.
    در ارث بری چندگانهء معمولی Implementation ها (هم) منتقل میشن، نه فقط Signature متدها.
    راهش استفاده از یک کلاس abstractه که از یه اینترفیس که از چند تا اینترفیس ارثبری میکنه ارثبری کنه.

  7. #7

    نقل قول: ارث بری چندگانه

    من نمیفهمم شما چی میگید.
    میشه با مثال توضیح بدید؟
    مثلا من دوتا کلاس دارم از پیش که خودم ساختم برای کارهای خاصی، بعد میتونم در یک کلاس جدید براحتی از هردوش ارث بری کنم و متدها و پراپرتی های پیاده سازی شدهء هردو رو (نه فقط اینترفیس رو) با هم در یک کلاس جدید ترکیب شده داشته باشم (بعلاوهء متدها و پراپرتی های تعریف شده در کلاس جدید).
    خب اینکار رو چطور میشه در سی شارپ انجام داد؟

  8. #8
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    848

    نقل قول: ارث بری چندگانه

    خیر
    خیالت راحت.

  9. #9

    نقل قول: ارث بری چندگانه

    این شد حرف حساب

    ظاهرا در جاوا هم همینطوره و ارث بری چندگانه نداره. چون این ویژگی رو ضروری ندیدن و بنظرشون معایبی داره.
    البته حتی اورلودینگ عملگرها هم چنین مبحثی هست و توی جاوا تاجایی که میدونم اورلود عملگر هم نداریم (اما سی شارپ تاجایی که دیدم فکر میکنم داره).

    دربارهء این موارد از هرکس بپرسی یه نظری داره. یکی میگه خوبه یکی میگه بده.
    و هر زبانی از یکی از این دو روش پیروی میکنه (پس حتما بین صاحبنظرها و برنامه نویسان چیره دست هم اختلاف هست).
    من خودم هنوز اونقدری صاحب صلاحیت نمی بینم خودم رو که نظر مشخصی در این ارتباط بدم.

  10. #10
    کاربر دائمی آواتار amir-yeketaz
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    تهران
    پست
    508

    نقل قول: ارث بری چندگانه

    ظاهرا در جاوا هم همینطوره و ارث بری چندگانه نداره. چون این ویژگی رو ضروری ندیدن و بنظرشون معایبی داره.
    البته حتی اورلودینگ عملگرها هم چنین مبحثی هست و توی جاوا تاجایی که میدونم اورلود عملگر هم نداریم (اما سی شارپ تاجایی که دیدم فکر میکنم داره).

    دربارهء این موارد از هرکس بپرسی یه نظری داره. یکی میگه خوبه یکی میگه بده.
    و هر زبانی از یکی از این دو روش پیروی میکنه (پس حتما بین صاحبنظرها و برنامه نویسان چیره دست هم اختلاف هست).
    من خودم هنوز اونقدری صاحب صلاحیت نمی بینم خودم رو که نظر مشخصی در این ارتباط بدم.
    بله ... شما در سی شارپ میتونید از overload کردن عملگر ها استفاده کنید
    ارث بری سلسله مراتبی هم یه سری معایب داره و هم یه سری مزایا ... ولی خوب به نظر من اینجوری برنامه نویس کمتر دچار سردرگمی میشه ولی خوب راه های زیادی وجود داره که اون طرح خودتون رو به صورت ارث بری چند گانه شبیه سازی کنید ...
    به نظرم هیچ زبونی مثه جاوا تو بحث شی گرایی و قواعد اون پیشتاز نیست پس قواعد شی گرایی ایجاب میکنه که شما ارث بری چندگانه نداشته باشید

  11. #11

    نقل قول: ارث بری چندگانه

    البته جاوا که زبان جدیدی بحساب نمیاد.
    یکی از جالبترین زبانهایی که وجود داره، یعنی Python، ارث بری چندگانه هم داره.
    البته جاوا در اصل فقط از پارادایم شیء گرایی پشتیبانی میکنه، اما پایتون مالتی پارادایم هست (مثل خیلی زبانهای دیگه؛ مثلا سی++).
    پایتون از جاوا جدیدتر نیست، ولی خیلی ها اون رو بعنوان یکی از بهترین زبانهای موجود میشناسن. کدهای نوشته شده در این زبان اغلب کوتاهتر از زبانهای دیگر هستن و خوانایی برنامه هم بسیار بالاست.
    آخرین ویرایش به وسیله eshpilen : جمعه 07 خرداد 1389 در 10:35 صبح

  12. #12

    نقل قول: ارث بری چندگانه

    راستی الان یه نگاهی به مقالهء ویکیپدیا دربارهء شیء گرایی کردم ببینم درمورد ارث بری چندگانه چی نوشته.

    Multiple inheritance is inheritance from more than one ancestor class, neither of these ancestors being an ancestor of the other. For example, independent classes could define Dogs and Cats, and a Chimera object could be created from these two which inherits all the (multiple) behavior of cats and dogs. This is not always supported, as it can be hard to implement.

    میگه دلیل عدم پیاده سازی ارث بری چندگانه سخت بودن پیاده سازیش هست.
    البته یه مقالهء دیگه هم هست درمورد خود ارث بری چندگانه که یک بخش دربارهء مشکلات منطقی ارث بری چندگانه داره (اما میگه زبانهایی هستن که این مشکلات رو برطرف کردن).

  13. #13
    کاربر دائمی آواتار esmaeily-hosein
    تاریخ عضویت
    مهر 1385
    محل زندگی
    شهر دودها
    پست
    227

    نقل قول: ارث بری چندگانه

    این سختی در framework چند صد برابر میشه و در بیشتر حالتها به deadlock منجر میشه برای همین معمولا پیاده سازی نشده . دلیل دیگش میتونه پیچیدگی برای برنامه نویس باشه در ضمن الگوهای متداول اکثرا با single inheritance حل میشوند .

  14. #14

    نقل قول: ارث بری چندگانه

    این سختی در framework چند صد برابر میشه و در بیشتر حالتها به deadlock منجر میشه برای همین معمولا پیاده سازی نشده .
    مثالی چیزی میتونید بزنید یا بیشتر توضیح بدید؟
    یعنی این سختی و deadlock چرا ایجاد میشه.

  15. #15
    کاربر دائمی آواتار esmaeily-hosein
    تاریخ عضویت
    مهر 1385
    محل زندگی
    شهر دودها
    پست
    227

    نقل قول: ارث بری چندگانه

    http://blogs.msdn.com/b/csharpfaq/ar.../07/85562.aspx

    اینم جای دیگه خوندم
    I do not know if you will get a concrete answer on this questions as I believe there are many reasons.

    The strongest reason I have seen is the added complexity and uncertainty. With multiple inheritance, areas such as reflection, serialization, casting, and encapsulation of members become difficult to manage.

    Another reason stems from what .NET is trying to accomplish, a common language. Each language can implement inheritance and more specifically multiple inheritance in different ways. How does that translate to the CLR? Then you add in shared based types between two inherited types and everything starts to get messy.

    I believe there has been much consideration given to multiple inheritance, but it is a hard concept to get right.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •