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

نام تاپیک: مقایسه چند روش پیاده سازی در شی گرایی

  1. #1

    مقایسه چند روش پیاده سازی در شی گرایی

    با سلام . . .

    تفاوت پیاده سازی های زیر چیه ؟
    شما کدوم روش پیاده سازی رو بهتر میدونید و چرا ؟


    صورت سوال :
    یه کلاس نوشتیم که مقدار number رو میتوان مورد استفاده قرار بدیم و هم بخونیم و هم توش بنویسیم .
    حالا فرق این دو کد زیر چیه ؟ چرا بعضی ها یه جور پیاده سازی می کنند ؟



    public class Test
    {
    public int number;
    }
    ==============================

    public class Test
    {
    private int number;

    public void setNumber(int i)
    {
    number= i ;
    }
    public int getNumber()
    {
    return number;
    }


    }


  2. #2

    نقل قول: مقایسه چند روش پیاده سازی در شی گرایی

    اگر از لحاظ اصولی حساب کنی روش دوم درسته.
    البته در سی شارپ می تونی از property استفاده کنی که مثل یک متغیر می می مونه ولی امکان کدنوشتن بر قسمت های get ,set اش هم وجود داره و کد بسیار زیباتر می شه.

    یعنی کدتون رو به این صورت تغییر بدید

    private int m_id;
      int number    {
    get
    {
    return m_id;
    }
    set
    {
    m_id = value;
    }
    }

  3. #3

    نقل قول: مقایسه چند روش پیاده سازی در شی گرایی

    و با استفاده از دات نت 3.5 :


    class Number
    {
    public int num { get; set; }
    }






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

    نقل قول: مقایسه چند روش پیاده سازی در شی گرایی

    هر دو روش درست هستند اما در روش اول شما هیچ کنترلی بر روی مقادیری که برای متغیر number میتونه بگیره ندارین و number اجازه داره هر مقداری رو بگیره.
    در روش دوم چون number رو بصورت private تعریف کردید پس دسترسی بهش از بیرون کلاس وجود نداره و برای مقدار دادن و گرفتن به number باید از متد های تعریف شده استفاده کرد. در این متد ها شما میتونین اعتبارسنجی مورد نیاز خودتون رو اعمال کنید. مثلا اگر مقدار number حتما باید بزرگتر از صفر باشه میتونین در داخل تابع SetNumber این شرط رو بررسی کنید و در صورت صحیح بودن شرط این مقدار رو به number اختصاص بدین. اما استفاده از توابع برای اینکار در C#‎ دیگه احتیاج نیست چون میتونین از property ها برای این کار استفاده کنید که در پست های بالا دوستان نمونه اش رو قرار دادند.

    در آخر توصیه می کنم که همیشه از همین property ها استفاده کنید.

    موفق باشید

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

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