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

نام تاپیک: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

  1. #1

    چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    سلام
    من تا حالا چندين مقاله راجع به shadowing توي دات نت خوندم ولي راستش قانع نشدم كه چرا اين امكان بايد يه نياز باشه؟

    خواهشا تعاريف ساده و تئوري رو پيش نكشين كه دلخور ميشم. اگه واقعا توي كدهاتون ازش استفاده كردين و نيازش رو حس كردين منو هم راهنمايي كنيد.

  2. #2

    Talking نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    می تونین توضیحات بیشتری در باره ی اون بدین تا کسایی مثل من هم مطالبی یادبگیرن ...

  3. #3

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    Shadow برای چی؟

  4. #4

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    بحث Shadowing در شی گرایی خیلی شبیه به Overriding است .
    با این تفاوت که واقعا ویژگی یا متد به ارث رسیده را نابود نمی کند .
    بلکه مقادیر شی پدر نیز حفظ خواهد شد و میتوان به آن دسترسی داشت .

    مثال :
    Accessing parent members when using Shadows

    شاید در کدها مون کمتر ازش استفاده کنیم . ولی دلیل ایجادش همین کاری است که انجام میده .

  5. #5

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    نقل قول نوشته شده توسط Chabok مشاهده تاپیک
    بحث Shadowing در شی گرایی خیلی شبیه به Overriding است .
    با این تفاوت که واقعا ویژگی یا متد به ارث رسیده را نابود نمی کند .
    بلکه مقادیر شی پدر نیز حفظ خواهد شد و میتوان به آن دسترسی داشت .

    مثال :
    Accessing parent members when using Shadows

    شاید در کدها مون کمتر ازش استفاده کنیم . ولی دلیل ایجادش همین کاری است که انجام میده .
    سلام
    مرسی از بابت توضیحت و آدرسی که داده بودی. شما می دونی که از نظر تخصیص حافظه و آدرس دهی در Stack و Heap ، خط زیر به چه صورتی هستش؟
    Dim RefParent  as Parent = new Child

  6. #6

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    و در ادامه پست قبلی ، اصلا
    Dim RefParent As Parent = New Child
    با
    Dim P As New Parent 

    با توجه به آدرس سایتی که شما داده بودی چه فرقی می کنه؟

  7. #7

    Smile نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    سلام .
    شما می دونی که از نظر تخصیص حافظه و آدرس دهی در Stack و Heap ، خط زیر به چه صورتی هستش؟

    Dim RefParent  as Parent = new Child
    نه متاسفانه .

    نقل قول نوشته شده توسط odiseh مشاهده تاپیک
    و در ادامه پست قبلی ، اصلا
    Dim RefParent As Parent = New Child
    با
    Dim P As New Parent 
    با توجه به آدرس سایتی که شما داده بودی چه فرقی می کنه؟
    چیزی که شما در ظاهر میبینید من هم می بینم .
    Dim P As New Parent
    واقعا از نوع Parent است .

    ولی همان طور که میبینیم
    Dim RefParent As Parent = New Child
    این شی از منبع Parent گرفته شده . ولی با شی Child ، نمونه گیری شده .

    که به گفته همان نویسنده سایت ، این یک شی از Child است که به Parent اشاره می کند .

    موفق باشید . یا حق

  8. #8

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    آیا متغیرهای از نوع Class ، تا قبل از اینکه نمونه گیری شوند (با دستور New) ، فضایی را اشغال می کنند؟
    به نظر من که نمی کنند زیرا هنوز کامپایلر نمی داند که از چه جنسی هستند تا در Heap به آنها فضا بدهد.

  9. #9

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    آیا متغیرهای از نوع Class ، تا قبل از اینکه نمونه گیری شوند (با دستور New) ، فضایی را اشغال می کنند؟
    فضایی به اندازه یک Pointer (در سیستم های 32 بیتی 4 بایت، در سیستم های 64 بیتی 8 بایت) بر روی Stack اشغال می کنند که مقدارش null هست. وقتی شی با استفاده از New ایجاد میشه، حافظه مورد نیاز برای فیلدهای آن، و آدرس متدهایی که Static نیستند، بر روی Heap تخصیص داده می شود.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  10. #10
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    بحث Shadowing در شی گرایی خیلی شبیه به Overriding است .
    با این تفاوت که واقعا ویژگی یا متد به ارث رسیده را نابود نمی کند .
    بلکه مقادیر شی پدر نیز حفظ خواهد شد و میتوان به آن دسترسی داشت .
    مگه تو ارث بری متد به ارث رسیده نابود میشه؟
    اگر نابود میشد با
    base.MethodName();
    نمیشد اونو فراخونی کرد.

    توضیحات کامل در مورد shadowing:
    http://msdn.microsoft.com/en-us/library/c4swkw24.aspx

    توضیحاتی در مورد تفاوت های overriding و shadowing:
    http://msdn.microsoft.com/en-us/library/ms172785.aspx


    موفق باشید
    jooje

  11. #11

    Smile نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    مگه تو ارث بری متد به ارث رسیده نابود میشه؟
    اگر نابود میشد با
    base.MethodName();
    نمیشد اونو فراخونی کرد.
    منظورم از نابودی در Overridng ویژگی های قبلی بود . نه ترکوندن

    یا حق

  12. #12

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    بچه ها
    به نظر شما ها، اصلا کجا (چه شرایطی) نیاز میشه تا ما چنین Variable Declaration رو انجام بدین تا اونوقت داستان Shadowing و Overriding مطرح بشه؟
    Dim RefParent As Parent = New Child

    و اینکه ضمن تشکر از همه شما ، در ادامه پاراف شما استاد گرامی، آقای کشاورز، این Declaration ای به چه صورت در Heap و Stack انجام میشه؟

  13. #13
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    در مورد استفاده از overriding فکر نکنم احتیاجی به توضیح باشه
    اما shadowing زمانی استفاده میشه که ما بخوایم از فیلدهای کلاس base در برابر تغییرات احتمالی محافظت کنیم ضمن اینکه هنوزم بتونیم بهش دسترسی مستقیم داشته باشیم.
    در مورد سوال دوم:
    یک اشاره گر به نوع داده Parent توی stack ایجاد میشه و زمانی که New انجام میشه توی heap فضا برای متغیری از نوع Child ایجاد میشه و اون اشاره گر که تو Stack بود به اینی که تو heap درست شد اشاره میکنه.

    موفق باشید
    jooje

  14. #14

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    جناب آقای bermooda
    نقل قول نوشته شده توسط odiseh مشاهده تاپیک
    به نظر شما ، اصلا کجا (چه شرایطی) نیاز میشه تا ما چنین Variable Declaration رو انجام بدیم؟
    Dim RefParent As Parent = New Child
    خوب اگه ما بخواهیم با base class کار کنیم صاف میریم سراغ اون کلاس و اگه بخواهیم با derived کار کنیم از اون instance می گیریم و با اون کار می کنیم دیگه.

    ولی من می بینم که این بحثها و تفاوت ناشی از Shadowing و Overriding زمانی مطرح میشه که چنین نمونه گیری رو داشته باشیم درسته؟

  15. #15
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: چرا ميكروسافت امكان shadowing رو ايجاد كرد؟

    درسته میشه اونجوریم که شما میگین مجزا کار کرد ولی این بحث ها تو polymorphism مطرح هستن که از کلاس base به جای child ها استفاده میشه و بصورت خودکار type مناسب انتخاب میشه و جایگزین میشه.

    در کورد polymorphism جستجو کنید به جواب میرسید.

    موفق باشید
    jooje

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

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