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

نام تاپیک: Constructor

  1. #1
    کاربر دائمی آواتار Kamyar.Kimiyabeigi
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    1,276

    Constructor

    Constructor


    برای تخصیص حافظه به اشیاء، متد Create را فراخونی می‌کنیم. این متد، یک Constructor هست. Constructor، یک متد خاص از کلاس هست که ‌می‌توانید از این متد در تخصیص حافظه برای یک نمونه از یک کلاس استفاده کنید. نمونه‌ی ساخته شده، توسط متد Constructor برگردانده می‌شود و به متغیری برای ذخیره‌سازی و استفاده در آینده تخصیص داده می‌شود. منظور از "آینده"، بلافاصله بعد از ساختن نمونه/شیئ هست. همه اطلاعات یک نمونه‌ی جدید با صفر مقدار‌دهی شده ست و دلیل آن هم شکل خاص متد Constructor هست، به این معنی که متد Constructor، پارامتر خاصی برای ارسال ندارد تا بتوان از این پارامتر در مقداردهی اولیه استفاده کرد. اگر می‌خواهید نمونه‌ی ایجاد شده، شامل مقادیر خاصی باشد به این معنی که در شروع کار، نمونه/شیئ ساخته شده، شامل اطلاعاتی باشد، می‌بایست یک Constructor سفارشی بنویسید.

    از کلمه کلیدی Constructor در ابتدای متد constructor استفاده کنید. با اینکه می‌توانید هر نامی را برای constructor انتخاب کنید، اما بهتر ست که از نام استاندارد، یعنی Create استفاده کنید. اگر از نام دیگری به غیر از Create استفاده کنید، متد Create از کلاس پایه که TObject هست هنوز هم فعال هست و می‌توان از آن استفاده کرد و برنامه‌نویس هم، Constructor پیش‌فرض کلاس را با پارمتر‌های مربوطه فرخوانی می‌کند، چونکه نام Constructor سفارشی را نمی‌شناسد. همین می‌تواند دلیلی باشد برای پیروی از نام‌گذاری استانداردِ یک Constructor.

    برای تعریف یک Constructor با چند پارامتر، تعریف پیش‌فرض Constructor را با تعریف جدید جایگزین می‌کنید و از این پس مجبور به استفاده از آن می‌باشید.

    برای مثال، بعد از تعریف :

    type
    TDate = class
    public
    constructor Create (y, m, d: Integer);


    شما فقط می‌توانید این Constructor را فراخوانی کنید و نه متد Create استاندارد را:

    var
    ADay: TDate;
    begin
    // Error, does not compile:
    ADay := TDate.Create;
    // OK:
    ADay := TDate.Create (1, 1, 2000);


    در این مثال، استفاده از متد Create استاندارد باعث بروز خطا می‌شود.

    قوانین موجود برای نوشتن Constructorها برای کامپوننت‌های سفارشی متفاوتند. به دلیلی در مثال بالا می‌بایست یک virtual constructor را override کنید. از کلمه‌کلیدی overload نیز می‌توانید استفاده کنید تا چند constructor برای یک کلاس داشته باشید و همگی را نیز Create بنامید. توسط این روش(استفاده از Overload) هم از قاعده استاندارد نام‌گذاری که در تمام زبان‌های شیئ‌محور رعایت می‌شود، تبعیت کرده‌اید و هم یادآوری نام Create برای برنامه‌نویس ساده خواهد بود. برای مثال: می‌خواهم دو متد Create جداگانه به کلاس اضافه کنم، که یکی بدون پارامتر و در واقع متد Create پیش‌فرض را مخفی می‌کند و دیگری نیز با چند پارامتر . با در نظر گرفتن کلمه کلیدی Overload، پیاده‌سازی این دو Constructor به شکل زیر خواهد بود :


    type
    TDate = class
    public
    constructor Create; overload;
    constructor Create (y, m, d: Integer); overload;
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. Constructor در derived کلاس
    نوشته شده توسط ICEMAN در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: سه شنبه 25 دی 1386, 14:38 عصر
  2. Constructor
    نوشته شده توسط benyamin_pc در بخش C#‎‎
    پاسخ: 6
    آخرین پست: شنبه 14 مرداد 1385, 14:52 عصر
  3. Overriding constructor
    نوشته شده توسط Farhad.B.S در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 12
    آخرین پست: جمعه 15 فروردین 1382, 03:14 صبح

برچسب های این تاپیک

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

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