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

نام تاپیک: مزيت كلاس با constructor

  1. #1

    مزيت كلاس با constructor

    با سلام و خسته نباشيد خدمت دوستان عزيز

    كسي مي تونه باذكر يك مثال مزيت كلاس با سازنده را نسبت به يك كلاس بدون سازنده توضيح بده؟
    با تشكر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: مزيت كلاس با constructor

    سلام:
    ببینید یه سازنده یا constructorمزیت اصلی یه کلاس هست و شاید اگه برای کلاسها طراحی نمیشد تقریبا قدرت اصلی کلاسها از بین می رفت.
    ببینید کار اصلی یه سازنده عموما توی برنامه نویسی برای مقداردهی اولیه به متغیرها- بدون نیاز به فراخوانی یک تابع برای مقدار دهی آنهاست.
    مثلا شما یه متغیر به شکل زیر در کلاس دارید.
     
    class Task
    {

    Private:
    char Status;

    متغیر Status برای ما در برنامه نشان میده که کلاس چه وضعیتی داره ولی همیشه این وضعیت باید پر باشه تا وضعیت کلاس Task بررسی بشه.
    برای پر کردن این وضعیت به هنگام ایجاد کلاس چه باید کرد.؟
    1 - اینکه یه تابع باید نوشت تا این مقدار رو پر کنه مانند زیر.
     
    void Task::InitStatus(void)
    {
    Status = 0;
    }

    این روش کار میکنه ولی باید تابع InitStatusرو در برنامه خودمون صدا بزنیم.که این یه ایراد نیست.
    2- ولی بهترین روش ایجاد یه سازنده یا constructo هست که خودش اتوماتیک در حین ایجاد کلاس مقدار دهی اولیه رو هم انجام بده. مثال زیر.

     
    public:
    Task(void){
    Status = 0;
    }

    موفق باشید.

  3. #3
    کاربر دائمی آواتار pesar irooni
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران
    سن
    40
    پست
    495

    نقل قول: مزيت كلاس با constructor

    مزیتهای فراوانی داره.
    فرض کنید شما به محض ساخته شدن کلاستون قراره یه سری متغیر ها رو مقدار دهی اولیه کنید و یا حتی مقدارشون رو از صداکننده بخونید. برای اینکار وقتی که new میکنیم constructor اجرا میشه و ما هر کاری رو که هنگام شروع کلاس بخواهیم انجام بدیم اون موقع انجام میگیره.
    مسلما از کلاسهای زیادی تو C#‎ استفاده کردید. اگه توجه کرده باشید بعضی اونها موقع ای که new میکنیم (یک شی میسازیم) ازتون پارامتر میخواد. این پارامترها رو در اصل برای مقدار دهی متغیرهاش تو کلاس میخواد.
    به عنوان یه مثال دیگه شما وقتی یه فرم به پروژه تون اضافه میکنیم و اون رو design میکنید تمام اینها در متد InitializeComponent() بصورت کد در میاند که هر وقت ما اون فرم رو فرابخونیم یا new کنیم این متد تو constructor فراخاونی میشه تا فرم ما رو به شکل دلخواه بهمون نمایش بده.

  4. #4
    کاربر دائمی آواتار Unknownlive
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    زیر آسمون شهر
    پست
    478

    نقل قول: مزيت كلاس با constructor

    بحث تکمیلی : اولا اگه شما ننویسید خود کامپایلر یک سازنده برا کلاس می نویسه که همه متغیر ها را صفر،خالی،تهی،false و ... می کنه دوما برا Struc خودش می نویسه و یک هم بیشتر نمی شه براش نوشت در صورتی که برای کلاس می توان از چند تا استفاده کرد.

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

    نقل قول: مزيت كلاس با constructor

    دوما برا Struc خودش می نویسه و یک هم بیشتر نمی شه براش نوشت
    این حرف غلط است . برای struct هر چند تا که بخوای میتونی ctor تعریف کنی فقط نمیتونی
    Ctor بدون پارامتر تعریف کنی .
    Ctor در حقیقت یک متد است که زمانی که شی از کلاست ساخته میشه اونم اجرا میشه حالا تو اون متد میتونی همه کار کنی !
    مثلا یک Class ساختی میخوای از اون بیشتر از 3 تا نمونه ساخت یه پیغام بده که این کلاس خریداری نشده :
    public class Test
    {
    private static int iCounter=0;

    public Test()
    {

    if (iCounter>3)
    Messagebox.Show("Class Not Registered");

    iCounter++;
    }
    }

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    نقل قول: مزيت كلاس با constructor

    اگر از کلاس های استاتیک استفاده نمی کنید ، حتما برای کلاس خود سازنده تعریف کنید حتی اگه هیچ پارامتری نداشته باشه و داخل این سازنده هیچ کدی نوشته نشه.
    چون اگه این کار را نکنید اونوقت هیچوقت نمی تونید به اشیایی که از این کلاس ساخته میشن مقدار بدین و همیشه این اشیا null خواهند بود مگه اینکه یک شی دیگر به این شی شما فضای حافضه ای مناسب پاس کند.
    شما یک سازنده بدون پارامتر و بدون کد می نویسید تا بتونید با فراخوانی این سازنده ، برای شی خود فضای مورد نیاز رو اختصاص بدید.
    شما هنگامی که از کلاس خود یک شی درست می کنید نام این شی در حافضه stack که مخصوص متغیرهای مقداری است، ذخیره میشه ولی وقتی با فراخوانی این سازنده به شی خود فضا اختصاص می دید این فضا در حافضه heap که مخصوص اشیای ارجاعی است،به شی شما اختصاص داده میشود.
    توجه داشته باشید که نام شی شما در stack ذخیره شده و شما میتونید چند شی از این کلاس تعریف کنید به صورتی که همه این اشیا به یک حافضه یکسان از heap اشاره کنند. این یکی از مزیت های متغیر های ارجاعی است.
    آخرین ویرایش به وسیله mohsen_csharp : شنبه 02 خرداد 1388 در 20:27 عصر

  7. #7
    کاربر دائمی آواتار pesar irooni
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران
    سن
    40
    پست
    495

    نقل قول: مزيت كلاس با constructor

    این فایل رو که برات آپلود میکنم کلا راجع به Constructor و descructor هست. بخونیدش. جالبه
    به زبان C++‎ هست ولی خوب فرقی نداره که...
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار saeed-kh
    تاریخ عضویت
    مهر 1387
    محل زندگی
    مازندران - بابل
    پست
    148

    نقل قول: مزيت كلاس با constructor

    در ضمن بوسیله سازنده ما میتونیم Signatureهای متفاوتی برای کلاس بسازیم و هنگام ساخت کلاس از اونا استفاده کنیم.تقریبا همون خاصیت overloadingفکر میکنم

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

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