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

نام تاپیک: بررسی ارث بری و تعریف یه شی ء

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    اصفهان
    پست
    48

    بررسی ارث بری و تعریف یه شی ء

    سلام ؛ خدا قوت
    یه بررسی در خصوص تعریف یک شی ء از کلاسA و ارث بری از کلاسA ،

    اینکه هر کدوم چه قابلیتهایی دارند و سطح دسترسیشون تا چه حده ؟


    "نتیجه ی واضحی از سرچ نگرفتم "

    مرسی

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شیراز
    پست
    373

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    سلام
    اگر مثلا شما کلاسی با نام A داشته باشید حالا برای دو حالتی که گفتید، چنین شرایطی ایجاد می شه:
    شی از کلاس A -----> شما وقتی از کلاس A شی ایجاد می کنید یعنی یک کپی از کلاس A را در اختیار دارید نه خود کلاس A. پس اگر تغییری ایجاد کنید یا مقدار دهی کنید فقط روی شی شما اعمال می شه نه کلاس A. از نظر سطح دستری هم، فقط به اشیا عمومی (public) دستری دارید.
    ارث بری از کلاس A -------> در این حالت شما خود کلاس A را در اختیار دارید پس اگر تغییر یا مقداردهی کنید مستقیما بر روی خود کلاس اعمال می شه. از نظر سطح دستری هم شما به تمام اشیا آن دسترسی دارید بجر آنهایی که خصوصی معرفی شده باشند (private)

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    اصفهان
    پست
    48

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    نقل قول نوشته شده توسط man_iran مشاهده تاپیک
    سلام
    تعریف شی ء: از نظر سطح دستری هم، فقط به اشیا عمومی (public) دستری دارید.
    ارث بری: از نظر سطح دستری هم شما به تمام اشیا آن دسترسی دارید بجر آنهایی که خصوصی معرفی شده باشند (private)
    با تشکر از پاسختون ؛برای من مفید بود ؛ در تکمیل حرفتون ، ما میتونیم به متغیرهای Private و Protected هم دسترسی داشته باشیم البته به شرطی که Protected رو به صورت internal تعریف کنیم و اینکه با تعریف یک متغیر از نوع public با متدهای get , set میتوانیم به private نیز دسترسی داشته باشیم .
    درسته دیگه ؟

    یه سوال دیگه در همین رابطه ؛ من یه classlibrary تعریف کردم و متغیر هایی رو در اونجا مقداردهی کردم ، الان میخوام به متغیر های این کتابخانه ام دسترسی داشته باشم ، آیا علاوه بر using کردن اون کتابخانه به کلاس اصلی ، باید در کلاس اصلی ، از کلاس کتابخانه هم ارث بری داشته باشم ؟
    راستش یه تمرین داشتم ولی هر چه کردم که با Add refrence به کتابخانه ام وصل بشم نشد !!! به همین خاطر نتونستم تست کنم .
    اگه اشکال برقراری ارتباطم رو هم بگین ، تا خودم برم سراغش ممنون میشم .

    ممنون از پاسختون

  4. #4
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شیراز
    پست
    373

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    بله درست می گید.

    وقتی شما کتابخانه ای داشته باشید (dll.*) و با استفاده از using آن را به پروژه خود اضافه می کنید انگار کلاس موجود در کتابخانه را به پروژه خود اضافه می کنید. حالا اگر کلاس توی کتابخانه پابلیک باشه برای اینکه به آن دسترسی داشته باشید باید از آن شی درست کنید. البته بستگی به استفاده ممکنه بعضی مواقع نیاز به ارث بری داشته باشه
    اگر ممکنه بیشتر در مورد پروژتون توضیح بدید.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    Thumbs up نقل قول: بررسی ارث بری و تعریف یه شی ء

    سلام.

    رفیق سطوح های دسترسی از این قراره:

    private: کمترین سطح دسترسی که فقط اعضای کلاس میتونن بهش دسترسی داشته باشن.
    internal: به دسترسی ای گفته میشه که فقط اعضای یک پروژه (Assembly) به آن داشته باشند.
    protected: این دسترسی برای اعضایی امکان پذیر هست که از ولد ارث بری می کنند. (چه در پروژه جاری و چه در سایر پروژه ها).
    protected internal: همانند دسترسی فوق می باشد با این توجه که فقط اعضای مشتق شده پروژه جاری بدان دسترسی دارند.
    public: بیشترین سطح دسترسی می باشد یعنی همه اعضا از هر پروژه ای بدان دسترسی دارند.

    من یه classlibrary تعریف کردم و متغیر هایی رو در اونجا مقداردهی کردم ، الان میخوام به متغیر های این کتابخانه ام دسترسی داشته باشم ، آیا علاوه بر using کردن اون کتابخانه به کلاس اصلی ، باید در کلاس اصلی ، از کلاس کتابخانه هم ارث بری داشته باشم ؟
    برای دسترسی به متغیرهای داخل ClassLibrary شما ابتدا باید با انتخاب منوی Project و گزینه Add Reference به dll ساخته شده از ClassLibrary رفرنس بدین. (نیازی به استفاده از دستور using نیست، دستور using رو استفاده می کنین که هربار نیازی به تکرار فضای نام نداشته باشین).

    حالا برای اینکه دسترسی مستقیم به متغیرهای تعریف شده داشته باشین شما باید متغیرها رو از نوع static تعریف کنین، در غیر اینصورت ابتدا باید از کلاس موجود در ClassLibrary نمونه گرفته و سپس به متغیر ها دسترسی داشته باشین.

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

    موفق باشین.

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    اصفهان
    پست
    48

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    نقل قول نوشته شده توسط man-iran مشاهده تاپیک
    وقتی شما کتابخانه ای داشته باشید (dll.*) و با استفاده از using آن را به پروژه خود اضافه می کنید انگار کلاس موجود در کتابخانه را به پروژه خود اضافه می کنید. حالا اگر کلاس توی کتابخانه پابلیک باشه برای اینکه به آن دسترسی داشته باشید باید از آن شی درست کنید. البته بستگی به استفاده ممکنه بعضی مواقع نیاز به ارث بری داشته باشه

    پاسختون قابل درک بود ، مرسی . من الان یه کتابخانه درست کردم از نوع public ، طبق گفته ی شما سعی کردم using کنم ولی اونو نشناخت ! در حالی که من رفرنسشم کردم . شی ء از کلاس هم ایجاد کردم ولی نتیجه ای نگرفتم ، نمیدونم چیکار باید میکردم که نکردم !

    .................................................. ..................
    نقل قول نوشته شده توسط ACorvinus مشاهده تاپیک
    حالا برای اینکه دسترسی مستقیم به متغیرهای تعریف شده داشته باشین شما باید متغیرها رو از نوع static تعریف کنین، در غیر اینصورت ابتدا باید از کلاس موجود در ClassLibrary نمونه گرفته و سپس به متغیر ها دسترسی داشته باشین.
    درمورد سطوح دسترسی توضیحتون خیلی کامل بود و فهمیدمش ، مرسی . راستش من متغیر ها رو static هم تعریف کردم ولی یه جایی دارم خطا میرم که به جواب نمیرسم ! منظورتون از نمونه همون تعریف شی ءه دیگه ؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    سلام دوباره.

    منظورتون از نمونه همون تعریف شی ءه دیگه ؟
    آره منظورم همون Instance گرفتن هستش. برای مثال اگه یه کلاس XClass دارین که در فضای نام Elements قرار داره و میخواین به عنصری از آن به نام Age که از نوع public هست که مقدار آن 22 می باشد دسترسی داشته باشین باید بدین صورت عمل کنین:

    Elements.XClass XCInstance = new Elements.XClass();
    int _Age;

    _Age = XCInstance.Age;


    خب حالا اگه عنصر Age شما public static تعریف شده باشه، اینجوری بهش دسترسی خواهید داشت:

    int _Age = Elements.XClass.Age;


    استفاده از ClassLibrary خیلی راحته، نمیدونم چرا این همه سخت گرفتین واس خودتون. مشکلی بود ما در خدمتیم مهندس. موفق باشین.

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    اصفهان
    پست
    48

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    نقل قول نوشته شده توسط ACorvinus مشاهده تاپیک
    استفاده از ClassLibrary خیلی راحته، نمیدونم چرا این همه سخت گرفتین واس خودتون. مشکلی بود ما در خدمتیم مهندس. موفق باشین.
    ماشالله چه در دسترسین ؛ بازم ممنونم ، اگه من مهندس بودم که این سوالم نبود که مهندس
    از بی تجربگیه ولی خب خداییش هی میرم امتحان میکنم تا جواب بگیرم ، ممنون از راهنماییهاتون
    موفق باشین

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    اصفهان
    پست
    48

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    نمیدونم دیگه حوصله دارین بازم جواب ســــــــــــــــوالهای منو بدین یا ...
    اگه جواب بدین ممنون میشم ؛ هر چی میرم جلوتر مشکلاتمو بیشتر میفهمم !
    سوالم اینه ؛ در کد زیر
    namespace Inheritance
    {
    class Program : MyClass
    {
    static void Main(string[] args)
    {
    Program obj = new Program();
    // MyClass obj = new MyClass();
    obj.SumPrint();
    Console.ReadKey();
    }
    }

    class MyClass
    {
    private int i;
    protected int j;

    protected int SumPrint()
    {
    i = Convert.ToInt32(Console.ReadLine());
    j = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("The Sum of i and j is {0}", i + j);
    Console.ReadKey();
    return i + j;
    }
    چرا شی obj از کلاس Program تعریف شده ؟ نکنه بخاطر اینه که Program از MyClass ارث بری میکنه ؟! اگه اینطوره پس چرا وقتی اسم Program رو برمیدارم و به جاش MyClass رو میذارم ارور میده ؟
    و اینکه همیشه برای استفاده از متدها و متغیر های یه کلاس که ازش ارث بری میکنیم ، باید شی تعریف بشه ؟

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مهر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    608

    Thumbs up نقل قول: بررسی ارث بری و تعریف یه شی ء

    چرا شی obj از کلاس Program تعریف شده ؟
    چون Program یک Object هست و برای دسترسی به اعضای MyClass باید از Program نمونه گرفته و به اونا دسترسی داشته باشین.

    نکنه بخاطر اینه که Program از MyClass ارث بری میکنه ؟
    آره، حدست درست بوده.

    اگه اینطوره پس چرا وقتی اسم Program رو برمیدارم و به جاش MyClass رو میذارم ارور میده ؟
    چوننوع دسترسی j و SumPrint از نوع protect هستن. اگه مستقیما از کلاس MyClass نمونه بگیرین نمیتونین این عناصر رو ببینین.

    و اینکه همیشه برای استفاده از متدها و متغیر های یه کلاس که ازش ارث بری میکنیم ، باید شی تعریف بشه ؟
    اگه کلاس x از کلاس y ارث بری کرده باشه و بخوایم از داخل کلاس x به متغیرهای کلاس y دسترسی داشته باشیم باید از خود کلاس x نمونه بگیریم مگر اینکه متد موجود در کلاس y از نوع static تعریف شده باشد که در اینصورت نام کلاس x را نوشته و با زدن "دات --> . <--" به متدها یا متغیرهای static کلاس y دسترسی مستقیم پیدا می کنیم.

    امیدوارم توضیحاتم کامل بوده باشه. موفق باشین.

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    زیر سایه امام رضا (ع)
    پست
    62

    نقل قول: بررسی ارث بری و تعریف یه شی ء

    با تایید مطالب بالا این هم یک مثال ساده برای مشخص شدن چگونگی دسترسی.(دسترسی های معتبر)

    class y
    {
    protected int a;
    static public int b;
    }
    class x : y
    {
    public void f1()
    {
    a = 10;
    b = 6;
    }
    static void f2()
    {
    b = 8;
    x obj = new x();
    obj.a = 4;
    }
    }

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

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