آموزش سي شارپ - قسمت دهم
توي آخرين پست در مورد متد ها صحبت كرديم اما اگر دقت كرده بوديد متوجه مي شديد كه ما تا اينجا از يك متد استفاده كرده ايم كه ننوشته ايم! به كد زير دقت كنين:
Person p = new Person();
همانطور كه قبلا هم گفتم براي استفاده از متد ها كافيه اسم متد رو با استفاده از () بنويسيم. كد بالا نيز اسم يك متد به نام ()Person ذكر شده است:
سازنده ها در سي شارپ - Constructors in CSharp
سازنده (Constructor) متدي است هم نام با كلاس كه چه بنويسيم (تايپ كنيم) و چه ننويسيم بر روي كلاس ها وجود دارد. همانطور كه قبلا هم ديديد من براي كلاس Person متدي هم نام با كلاس ننوشتم اما مي توانستم از اين متد در كنار كلمه new استفاده كنيم. كلمه new فقط براي ايجاد كردن يك شيء در حافظه در كنار نام متد استفاده مي شود. پس دقت داشته باشين كه وقتي ما يك reference copy از يك شيء تهيه ميكنيم در واقع فقط يك كپي از آدرس حافظه همان شيء را داريم (مثل 2 ريموت كنترل به يك تلويزويون) , اما وقتي از new به همراه اسم متد استفاده مي كنيم يك شيء جديد در حافظه داريم.
سازنده پيشفرض - Default Constructor
سازنده پيش فرض يا همان Default Constructor متدي است هم نام با كلاس كه پارامتر ورودي ندارد و شما به صورت پيش فرض يك ورژن از سازنده ها رو در كلاستان دارين. به اين معني كه حتي وقتي كلاس شما داراي هيچ عضوي نيست (مثل اين كلاس Emp ) باز داراي يك متد سازنده يا همان Constructor مي باشد. البته اين به اين معني نيست كه شما نمي توانيد سازنده ها را تايپ كنين:
فرض كنين كه من مي خواهم هر زماني كه يك object از كلاس Emp ساخته شد يك جمله در محيط كنسول چاپ شود كه يك object جديد ساخته شد. پس:
در سي شارپ شما اين امكان را داريد كه ورژن هاي متفاوتي از يك متد را داشته باشين. از آنجايي كه سازنده ها هم به نوعي متد محسوب مي شوند شما مي توانيد ورژن هاي متفاوتي از سازنده ها را داشته باشين. براي مثال در نظر بگيرين كه من مي خواهم يك ورژن از سازنده براي كلاس Person بنويسم كه وقتي از اين كلاس شيء ايجاد مي شود حتما نام و سن فرد ذكر شود. پس براي اينكار سازنده اي تعريف مي كنم كه داراي دو ورودي , يكي از جنس رشته اي (براي نام) و ديگري از جنس عددي (براي سن) داشته باشد:
نقش هاي يك برنامه نويس - Programmer 's Role
1. Class Programmer
2. Class Creator
هر برنامه نويس در حين نوشتن كد مي تواند دو نقش داشته باشد و بسيار مهم است كه نقش خود را در هر لحظه بتواند تشخيص دهد.
فرض كنين كه شما در حال نوشتن كلاس Emp هستين :
در حالتي كه شما در كلاس Programm هستيد و داخل متد Main از كلاس Empاستفاده مي كنين شما يك Class Programm براي كلاس Emp هستيد يعني از اين كلاس استفاده مي كنين. دقت كنين كه در همين لحظه شما براي كلاس Programm يك Class Creator مي باشين.
درك كردن اين نقش ها به شما كمك خواهد كرد كه ديد بهتري نسبت به توليد كلاس ها داشته باشين و متوجه باشين كه چه چيزي رو در اختيار چه نقشي قرار مي دهيد.
ادامه دارد....
سازنده پيشفرض - Default Constructor
سازنده پيش فرض يا همان Default Constructor متدي است هم نام با كلاس كه پارامتر ورودي ندارد و شما به صورت پيش فرض يك ورژن از سازنده ها رو در كلاستان دارين. به اين معني كه حتي وقتي كلاس شما داراي هيچ عضوي نيست (مثل اين كلاس Emp ) باز داراي يك متد سازنده يا همان Constructor مي باشد. البته اين به اين معني نيست كه شما نمي توانيد سازنده ها را تايپ كنين:
public class Emp
{
}
public class Student
{
public Student()
{
// default constructor
}
}
Emp e = new Emp();
Student st = new Student();
فرض كنين كه من مي خواهم هر زماني كه يك object از كلاس Emp ساخته شد يك جمله در محيط كنسول چاپ شود كه يك object جديد ساخته شد. پس:
public class Emp
{
public Emp()
{
Console.WriteLine("New Emp Object Created ...");
}
}
در سي شارپ شما اين امكان را داريد كه ورژن هاي متفاوتي از يك متد را داشته باشين. از آنجايي كه سازنده ها هم به نوعي متد محسوب مي شوند شما مي توانيد ورژن هاي متفاوتي از سازنده ها را داشته باشين. براي مثال در نظر بگيرين كه من مي خواهم يك ورژن از سازنده براي كلاس Person بنويسم كه وقتي از اين كلاس شيء ايجاد مي شود حتما نام و سن فرد ذكر شود. پس براي اينكار سازنده اي تعريف مي كنم كه داراي دو ورودي , يكي از جنس رشته اي (براي نام) و ديگري از جنس عددي (براي سن) داشته باشد:
public class Person
{
public Person(string name, int Age)
{
Name = name;
Age = age;
}
public int Age;
public string Name;
}
! دقت داشته باشين كه وقتي شما يك ورژن ديگر از سازنده را مي نويسن (ورژني به غير از سازنده پيش فرض) در حالتيكه سازنده پيش فرض را تايپ نكنين ديگر امكان استفاده از سازنده پيش فرض را نداريد.
به همين دليل در صورتيكه شما كد بالا را بنويسين ديگر امكان استفاده از سازنده پيش فرض كلاس Person وجود نخواهد داشت و اين به اين معني است كه شما به برنامه نويس اجبار خواهيد كرد كه حتما موقع ساختن شيء از كلاس شما نام و سن شيء را مشخص كند.
//You will get compile time error if you uncomment the next line
//Person p = new Person();
Person p =new Person("Ali",20);
نقش هاي يك برنامه نويس - Programmer 's Role
1. Class Programmer
2. Class Creator
هر برنامه نويس در حين نوشتن كد مي تواند دو نقش داشته باشد و بسيار مهم است كه نقش خود را در هر لحظه بتواند تشخيص دهد.
فرض كنين كه شما در حال نوشتن كلاس Emp هستين :
public class Emp
{
...
در حالتي كه شما در كلاس Programm هستيد و داخل متد Main از كلاس Empاستفاده مي كنين شما يك Class Programm براي كلاس Emp هستيد يعني از اين كلاس استفاده مي كنين. دقت كنين كه در همين لحظه شما براي كلاس Programm يك Class Creator مي باشين.
درك كردن اين نقش ها به شما كمك خواهد كرد كه ديد بهتري نسبت به توليد كلاس ها داشته باشين و متوجه باشين كه چه چيزي رو در اختيار چه نقشي قرار مي دهيد.
ادامه دارد....
+ نوشته شده در چهارشنبه نوزدهم دی ۱۳۸۶ ساعت 13:44 توسط مسعود طباطبايي | MasoudTB
|