تبلیغات
مرجع عملی و کاربردی زبان سی شارپ ، تصاویر دیدنی ، دانلود نرم افزار های گوناگون - اصول اولیه OOP و دات نت فریمورک

اصول اولیه OOP و دات نت فریمورک

نویسنده :مرتضی عالمین
تاریخ:دوشنبه 28 اردیبهشت 1388-04:32 ب.ظ

1-مفاهیم بنیادین شیء گرایی

1-1-تعاریف، اشیاء و کلاسها

تضمین آنکه چطور همیشه پس از اتمام کار با یک آبجکت حتما از حافظه خارج (dispose) شود


عادت کنید که همیشه از using استفاده کنید.
برای مثال :

کد:

using (FileStream FS = new FileStream("Test.txt", FileMode.Create))

{

    FS.WriteByte((byte)1);

    FS.WriteByte((byte)2);

    FS.WriteByte((byte)3);

    using (StreamWriter SW = new StreamWriter(FS))

    {

        SW.WriteLine("some text.");

    }

}

که اگر بخواهید مثال بالا را به بدون استفاده از using پیاده سازی کنید باید چیزی شبیه به تیکه کد زیر بنویسید :

کد:

FileStream FS = new FileStream("Test.txt", FileMode.Create);

try

{

    FS.WriteByte((byte)1);

    FS.WriteByte((byte)2);

    FS.WriteByte((byte)3);

    StreamWriter SW = new StreamWriter(FS);

    try

    {

        SW.WriteLine("some text.");

    }

    finally

    {

        if (SW != null)

        {

            ((IDisposable)SW).Dispose();

        }

    }

}

finally

{

    if (FS != null)

    {

        ((IDisposable)FS).Dispose();

    }

}

همینطور که میبینید استفاده از using کد شما را راحتتر، خواناتر و کوتاه تر میکند.

1-2-فیلدها، پراپراتیها و متودها :

property چیست و چرا از آن استفاده می کنیم؟


یک property متشکل از 2 متود set,get است که برای دریافت و یا تخصیص مقادیر به متغیر ها استفاده می شوند .از معایب تعریف متغیرهای کلاس به صورت Public اینست که هر موجودی از بیرون کلاس می تواند دسترسی مستقیمی به آن داشته باشد و براحتی آن را دستکاری کند و در ضمن هیچ گونه عمل validation بر روی مقادیر متغیر ها صورت نمیگیرد ,که این با اصول صحیح oop منافات دارد .

دلایل استفاده از property به جای یک متغیر:
1-
رعایت اصل encapsulation

2-امکان بازرسی و validation

کد:

public  class Circle
    {
        private double radius;
        public double Radius
        {
            get
            {
                return radius;
            }
            set 
            {
                if (value>0 && value<50)
                  radius = value; 
 
            }
        }
        public double  GetArea()
        {
            return radius * radius * 3.14;
        }
 
   }

برای مطالعه بیشتر http://csharptuning.blogfa.com/

ایندکسرها (Indexers)


ایندکسرها نوعی از پراپرتیها هستند که به شما اجازه میدهند با اشیاء کلاس خود آرایه وار رفتار کنید.
تعریف یک ایندکسر نیز مانند
تعریف یک پراپرتی است و در حالت کلی داریم :

کد:

<Modifier> <Return type> this[arguments]

{

    get { }

    Set { }

}

برای مثال - با فرض داشتن کلاسی مانند :

کد:

class Employee

{

    private string[] name = new string[10];

    public string this[int index]

    {

        get

        {

            return name[index];

        }

        set

        {

            name[index] = value;

        }

    }

}

میتوان نوشت :

کد:

Employee emp = new Employee();

emp[0] = "Joydip";

emp[1] = "Manashi";

emp[2] = "Jini";

نکته :
+ ایندکسرها حتما باید یک پارامتر داشته
باشد.
+ ایندکسرها نمیتوانند استاتیک باشند (بعلت نیاز به
this)

ارسال تعداد متغیر پارامتر به یک متود


با استفاده از کلمه کلیدی params مانند نمونه زیر :

کد:

 public int Add(params int[] list)
{
  int sum = 0;
  foreach (int i in list)
    sum += i;
  return sum;
}

حال میتونیم این متود را به این شکل صدا بزنیم :

کد:

int ans1 = Add(1);
int ans2 = Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int ans3 = Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
int ans4 = Add();

نکته :‌ متود میتواند چندین پارامتر دیگر غیر از پارامتر از نوع params بپذیرد اما پارامتر params حتما باید آخرین پارامتر باشد. مانند :

کد:

 public void AddAndPrint(string str, params int[] list)
{
  int sum = 0;
  foreach (int i in list)
    sum += i;
  Console.WriteLine(str + sum);
}

منبع : http://blog.paranoidferret.com/index...arams-keyword/




داغ کن - کلوب دات کام
نظرات() 
How do you get taller in a day?
شنبه 1 مهر 1396 10:27 ق.ظ
I do not even know how I ended up here, but I thought this post
was great. I do not know who you are but certainly you are going to a famous blogger if you are not already ;) Cheers!
How do you get taller?
سه شنبه 28 شهریور 1396 04:58 ق.ظ
Hmm is anyone else encountering problems with the images on this blog loading?
I'm trying to determine if its a problem on my end or if it's the
blog. Any feedback would be greatly appreciated.
foot pain
شنبه 18 شهریور 1396 03:43 ق.ظ
What's up, its pleasant paragraph on the topic of media print, we all understand media is
a enormous source of data.
How long does Achilles tendonitis last for?
پنجشنبه 16 شهریور 1396 09:36 ق.ظ
At this moment I am going away to do my breakfast, later than having my breakfast coming over again to
read additional news.
Foot Complaints
یکشنبه 15 مرداد 1396 10:11 ب.ظ
Thanks very nice blog!
What causes painful Achilles tendon?
شنبه 24 تیر 1396 11:55 ب.ظ
Piece of writing writing is also a excitement, if you be acquainted
with after that you can write otherwise it is complex to write.
BHW
پنجشنبه 24 فروردین 1396 04:59 ب.ظ
Hello, yup this piece of writing is in fact pleasant and I have learned lot of things
from it concerning blogging. thanks.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر




Admin Logo
themebox Logo