احم احم احم
شبتر المره ديه بدا يخش فى ال opp
وزى ما قولت هشرحه بالعربى
دلوقتى عندنا اى برنامج بيتكون من سطور اكواد ممكن توصل لملاين فيه اكواد بتبقى ليها علاقه ببعض اكتر من غيرها
زى مثلا الاكواد اللى بتتعامل مع الرياضه
وفيه اكواد تانيه بتتعامل مع الجرافيك
فمش ينفع البرنامج يبقى كتله واحده
لازم تتقسم اجزاء
التقسيمه فى السى شارب تلاته
1-method
2-class
3-namespace
دلوقتى نحفظ الجمله ديه
البرنامج عباره عن namespace
وال namespaces
عباره عن كلاسات
وكل كلاس عباره عن ميثود
ايه بقى الكلاس ده
الكلاس ديه prototype ,model
مجرد نموذج او هيكل عام
بحط فيه الخصائص والميثود
زى مثلا كل شركات العربيات مشتركه فى حاجه
فكره العربيه
بس كل واحده مختله فى الخصائص
فلو جيت اعمل كلاس العربيه
- الكود:
public class car
{}
الكلاس ديه ممكن احط فيها متغيرات وميثود
مثلا العربيه عندى لونها الموديل بتاعها السرعه
- الكود:
public class car
{
string model;
int speed;
string color;
}
ممكن العربيه تمشى بسرعه معينه عل حسب البنزين مثلا
- الكود:
public class car
{
string model;
int speed;
string color;
int fuel;
void measure_speed()
{
int speed =50*fuel;
}
}
كده انا حطيت اطار عام لفكره العربيه ابدا ابقى اعمل منها object حقيقى
يعنى اديها للشركه كذا تعمل اللون والموديل والسرعه عل مزجها وسميتها مثلا obj1
اديها لشركه تانيه تعمل برضه عل مزاجهاobj2
بس هل obj1 هيا obj2
لا ديه مش ديه الاتنين مشتركين فى الفكره العامه بس لمفهوم العربيه لكن كل واحده ليها مميزتها
-----------------------------------------------
عمليه انى اعمل كائن من كلاس بنسيمها instantiating the class
يعنى بعمل منها instance او object
بالطريقه ديه
- الكود:
static void Main (string [] args)
{
car honda=new car();
car bmw=new car();
}
هنا انا عملت اتنين اوبجكت من العربيه honda ,bmw
----------------------------
دلوقتى انا عاوز ابدا احط الخصائص اللى انا عوزها
فى الحاله ديه انا بغير فى الخصائص عن طريق الاوبجكت مش الكلاس
يعنى كده
honda.color="red";
honda.model="honda";
honda.speed=int.max;
honda.fuel=60;
honda.measure_speed();
كده انا عملت عربيه عل مزاجى وكله تمام
محدش يجى يخش عل المتغيرات او الميثود الخاصه بكلاس معين عن طريق اسم الكلاس الا فى حاله static
-----------------------------------------------------------------------
متغيرات الكلاس
زى مثلا فى الكود فوق عندى اللون والسرعه
المتغيرات ديه بنسميها fields او states
طبعا مش كل المتغيرات عاوز الشركه تغير فيها
مثلا العربيه ليها اربع عجلات
شركه مزجها تخليها اتنين ديه تبقى عجله
)حد يسلفنى عجله)
فى الحاله ده
بعمل properties
ليه بقى
عشان مش اى حد يقدر يخش عل الكود السورس ويبوظ الدنيا
فاانا بخبى المتغيرات ومش اخلى حد يقدر يخشلها الل عن طريق properties
properties بتنقسم لاتنين
1-get
2-set
نفرض ان عندى شركه فيه موظفين كل موظف مرتبه مختلف عن التانى وعاوز ادى قيمه لمرتب موظف معين
فعملت كلاس employ
وعرفت فيها متغير field salary
مش عاوز بقى حد يدخل المرتب عل مزاجى فعملت set
- الكود:
public class employ
{
private int salary;
public int sal
{
set
{
salary=value;
}
}
هنا انا عملت المرتب private عشان محدش يخش عل المتغير بطريقه مباشره
كمان عملت property
عشان اقدر ادى المرتب
طب سؤال ليه اساسا استخدمت properties
منا ممكن ادى المرتب عن طريق المتغير
فايده الproperties انى اقدر احط شروط معينه يخدها المتيغير يعنى ممكن مثلا احدد ان المرتب مش يزيد عن 1000
او اعمل كلمه سر للى هيحط المرتب حاجات كتير ممكن تتعمل
كده خلاص ادت المرتب
طب عاوز اعرف مرتب موظف معين هنا بستخدم get
- الكود:
public class employ
{
private int salary;
public int sal
{
get
{
return salary;
}
set
{
salary=value;
}
}
public class main
{
static void Main(string [] args)
{
employ ahmed=new employ();
ahmed.sal=150;
int salary=ahmed.sal;
Console.Write(salary);
}
}
فى الحاله ديه ادت اليوزر حق انه يعدل فى المتغير او يعرف قيمته فى حالات تانيه ببقى مش عاوز يقدر يعدل انما يقدر
يعرف قيمه المتغير فى الحاله ديه بستخدl
get بس
وفى حاله تالته انى مش عاوزه يقدر يعرف قيمه المتغير انما يقدر يعدل بس فبستخدم
set بس
------------------------------------------------------------------------
To Be Con
[/code]