إ₰...👨🏻💻#C👩🏻💻...₰❥
1⃣ الطرق او الدوال Functions :
* تستقبل متغيرات وتجري عليها بعض العمليات
* تعطي نتيجة return من نفس نوع الدالة
( double, string, int )
2⃣ الإجراءات Procedures
* لا تعيد نتيجة( لا تملك الكلمةreturn )
* ولا نوع لها تسبق بالكلمة المحجوزة void
#اولآ :الصيغة العامة للتصريح عن الدوال :-
(متغيرات_الدالة) اسم_الدالة نوع_الدالة
{
Code
.
.
return قيمة };
القيمة المعادة بعد كلمة return هي عبارة عن متغير يحمل قيمة نتيجة إجراء بعض العمليات.
#ثانيآ : الصيغة العامة للتصريح عن الإجراء :-
void name_pro (متغيرات_الأجراء)
{
Code
.
.
}
* كما هو الحال في بنى التحكم وبعض حلقات التكرار
فالطرق لا تلحق بفاصلة منقوطة.
*في الإجراءات لا توجد الكلمة return لانها لا تعيد أي قيمة.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
1⃣ الطرق او الدوال Functions :
* تستقبل متغيرات وتجري عليها بعض العمليات
* تعطي نتيجة return من نفس نوع الدالة
( double, string, int )
2⃣ الإجراءات Procedures
* لا تعيد نتيجة( لا تملك الكلمةreturn )
* ولا نوع لها تسبق بالكلمة المحجوزة void
#اولآ :الصيغة العامة للتصريح عن الدوال :-
(متغيرات_الدالة) اسم_الدالة نوع_الدالة
{
Code
.
.
return قيمة };
القيمة المعادة بعد كلمة return هي عبارة عن متغير يحمل قيمة نتيجة إجراء بعض العمليات.
#ثانيآ : الصيغة العامة للتصريح عن الإجراء :-
void name_pro (متغيرات_الأجراء)
{
Code
.
.
}
* كما هو الحال في بنى التحكم وبعض حلقات التكرار
فالطرق لا تلحق بفاصلة منقوطة.
*في الإجراءات لا توجد الكلمة return لانها لا تعيد أي قيمة.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp_Shell
{
public static class Program
{
static void MyProc(int y)
{
y += 10;
}
static void Main(string[] args)
{
int x = 10;
MyProc(x);
Console.Write(x);
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp_Shell
{
public static class Program
{
static void MyProc(int y)
{
y += 10;
}
static void Main(string[] args)
{
int x = 10;
MyProc(x);
Console.Write(x);
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp
{
public static class Program
{
static void MyProc(ref int y)
{
y += 10;
}
static void Main(string[] args)
{
int x = 10;
MyProc(ref x);
Console.Write(x);
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp
{
public static class Program
{
static void MyProc(ref int y)
{
y += 10;
}
static void Main(string[] args)
{
int x = 10;
MyProc(ref x);
Console.Write(x);
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
#مجالات_الأسماء Namespaces :-
*والفكرة من مجال الأسماء
هو إنشاء كتلة برمجية لمرة واحدة تتضمن أفكارا وتطبيقاتٍ عديدة واستخدامها برمجيا في أكثر من برنامج
فعند برمجة طرق وخصائص جميع فئات مجال الأسماء هذا فإنه يصبح جاهزا
للاستخدام.
وعند استنساخ هذه الفئات إلى كائنات في الإجراء main
فإن ألفتها ستصبح متاحة لهذه الكائنات مما يعطي برامج قوية يسهل فيها إصلاح الأخطاء بعد اكتشافها.
*لإنشاء مجال اسماء اكتب الكلمة namespace ثم اسم مجال الأسماء
تليها فئاتها محاطة بإشارتي { }
تحددان بداية ونهاية مجال الأسماء هذا.
*ولاستخدام مجال الأسماء الذي أنشأته في مجال أسماء آخر عليك تضمينه في بداية البرنامج بالكلمة using .
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#مجالات_الأسماء Namespaces :-
*والفكرة من مجال الأسماء
هو إنشاء كتلة برمجية لمرة واحدة تتضمن أفكارا وتطبيقاتٍ عديدة واستخدامها برمجيا في أكثر من برنامج
فعند برمجة طرق وخصائص جميع فئات مجال الأسماء هذا فإنه يصبح جاهزا
للاستخدام.
وعند استنساخ هذه الفئات إلى كائنات في الإجراء main
فإن ألفتها ستصبح متاحة لهذه الكائنات مما يعطي برامج قوية يسهل فيها إصلاح الأخطاء بعد اكتشافها.
*لإنشاء مجال اسماء اكتب الكلمة namespace ثم اسم مجال الأسماء
تليها فئاتها محاطة بإشارتي { }
تحددان بداية ونهاية مجال الأسماء هذا.
*ولاستخدام مجال الأسماء الذي أنشأته في مجال أسماء آخر عليك تضمينه في بداية البرنامج بالكلمة using .
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
#مــجـال_الــرؤيـة :-
تعني إمكانية الوصول إلى الفئات والكائنات، الطرق والخصائص والمتغيرات
سواًءا من البرنامج أو الفئة أو الطريقة....
1⃣ public
وهو أشمل أنواع التعريف
وفيه تكون الكائنات معرفة في كافة فئات البرنامج.
2⃣ private
وهو التعريف الافتراضي
حيث الكائنات معروفة فقط على مستوى الوحدة البرمجية التي تنتمي إليها.
3⃣ protected
الكائنات معرفة على مستوى الفئات التي تنتمي إليها والفئات التي ترثها.
4⃣ internal
الكائنات معرفة على مستوى ملف التجميع assembly فقط.
5⃣ static
لهذه الكلمة دور هام في مجال رؤية الطرق والمتغيرات
فالمتغير المعرف بنوع ما ومسبوق بالكلمة static يمكن رؤيته في جميع أجزاء البرنامج والتي تحمل هذه الكلمة بالإضافة لاستخدامه مباشرة دون استنساخ الكائن الحاوي عليه.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#مــجـال_الــرؤيـة :-
تعني إمكانية الوصول إلى الفئات والكائنات، الطرق والخصائص والمتغيرات
سواًءا من البرنامج أو الفئة أو الطريقة....
1⃣ public
وهو أشمل أنواع التعريف
وفيه تكون الكائنات معرفة في كافة فئات البرنامج.
2⃣ private
وهو التعريف الافتراضي
حيث الكائنات معروفة فقط على مستوى الوحدة البرمجية التي تنتمي إليها.
3⃣ protected
الكائنات معرفة على مستوى الفئات التي تنتمي إليها والفئات التي ترثها.
4⃣ internal
الكائنات معرفة على مستوى ملف التجميع assembly فقط.
5⃣ static
لهذه الكلمة دور هام في مجال رؤية الطرق والمتغيرات
فالمتغير المعرف بنوع ما ومسبوق بالكلمة static يمكن رؤيته في جميع أجزاء البرنامج والتي تحمل هذه الكلمة بالإضافة لاستخدامه مباشرة دون استنساخ الكائن الحاوي عليه.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
#الخصائص Properties
قد تحتاج للوصول لبعض متغيرات فئاتك وكائناتها...
ويمكن ذلك من خلال استخدام مفهوم الخصائص المتمثل بـ setter وgetter.
Public type name
{
set { return متغير};
get { this.المتغير = value};
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
تستخدم الكلمة this في #C للدلالة على الفئة الحالية
فقد يكون لدينا متغيرات عامة تحمل ذات الاسم في أكثر من فئة
وحتى لا تخلط علينا الأمور بإمكاننا كتابة اسم المتغير بعد هذه الكلمة لنحصل على متغير هذه الفئة.
#الخصائص Properties
قد تحتاج للوصول لبعض متغيرات فئاتك وكائناتها...
ويمكن ذلك من خلال استخدام مفهوم الخصائص المتمثل بـ setter وgetter.
Public type name
{
set { return متغير};
get { this.المتغير = value};
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
تستخدم الكلمة this في #C للدلالة على الفئة الحالية
فقد يكون لدينا متغيرات عامة تحمل ذات الاسم في أكثر من فئة
وحتى لا تخلط علينا الأمور بإمكاننا كتابة اسم المتغير بعد هذه الكلمة لنحصل على متغير هذه الفئة.
إ₰...👨🏻💻CODE👩🏻💻...₰❥
#التابع_البناء Constructor
هو أسلوب برمجي يقوم بإعطاء القيم الابتدائية لعناصر فئة ما
وله نفس اسمها
وهو لا يعد إجراءا ولا تابعا، ولكنه أشبه ما يكون لهما، فهو يستقبل قيما لذلك فهو يشبه الطرق
لكنه لا يعيد قيمة لذلك ليس تابعا
ولا يعرف باستخدام void لذلك ليس إجراًءا أيضا.
class O
{
string name ;
int age ;
puplic O (string name , int age )
{
ONAME = Name;
OAGE = Age;
}
public void ShowDitails()
{
Console.WriteLine ("Name = {0}, Age = {1}",
ONAME,
OAGE );
}
}
كود البرنامج :
int age = 20;
string Name = "O";
O ob = new O(Name, age);
// استنساخ الفئة
ob.ShowDitails();
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#التابع_الهدم Destructor
هو نظير لتابع البناء من حيث المبدأ
إلا أنه ينفذ عند فناء الكائن.
لذلك فعندما ترغب بتنفيذ أكواد معينة عند فناء الكائن كالخروج من البرنامج
فضعها في التابع الهدام.
~O()
{
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#التابع_البناء Constructor
هو أسلوب برمجي يقوم بإعطاء القيم الابتدائية لعناصر فئة ما
وله نفس اسمها
وهو لا يعد إجراءا ولا تابعا، ولكنه أشبه ما يكون لهما، فهو يستقبل قيما لذلك فهو يشبه الطرق
لكنه لا يعيد قيمة لذلك ليس تابعا
ولا يعرف باستخدام void لذلك ليس إجراًءا أيضا.
class O
{
string name ;
int age ;
puplic O (string name , int age )
{
ONAME = Name;
OAGE = Age;
}
public void ShowDitails()
{
Console.WriteLine ("Name = {0}, Age = {1}",
ONAME,
OAGE );
}
}
كود البرنامج :
int age = 20;
string Name = "O";
O ob = new O(Name, age);
// استنساخ الفئة
ob.ShowDitails();
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#التابع_الهدم Destructor
هو نظير لتابع البناء من حيث المبدأ
إلا أنه ينفذ عند فناء الكائن.
لذلك فعندما ترغب بتنفيذ أكواد معينة عند فناء الكائن كالخروج من البرنامج
فضعها في التابع الهدام.
~O()
{
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
#الـــوراثــة Inheritance :
يختصر مفهوم مبدأ الوراثة كتابة الأكواد الكثيرة
فيكفي كتابة أكواد الفئةالاساسية
ومنها نورث أكوادها للفئات الأبناء.
لتوريث فئة لفئة أخرى نستخدم الرمز ":" للربط بين الفئة الوارثة والفئة الموروث منها,حيث تكون الوارثة في البداية.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
#الـــوراثــة Inheritance :
يختصر مفهوم مبدأ الوراثة كتابة الأكواد الكثيرة
فيكفي كتابة أكواد الفئةالاساسية
ومنها نورث أكوادها للفئات الأبناء.
لتوريث فئة لفئة أخرى نستخدم الرمز ":" للربط بين الفئة الوارثة والفئة الموروث منها,حيث تكون الوارثة في البداية.
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...👨🏻💻CODE👩🏻💻...₰❥
مثال بسيط يوضح مفهوم الوراثة :-
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp
{
class Human
{
string ONAME;
int OAGE;
public
void Initialize(string Name, int Age)
{
ONAME = Name;
OAGE = Age;
}
public
void ShowDitails()
{
Console.WriteLine("Name = {0}, Age = {1}", ONAME, OAGE);
}
}
class Teacher : Human
{
string OSchool, OTeachLevel;
public
Teacher(string School, string TeachLevel)
{
//This is Constructor!
OSchool = School;
OTeachLevel = TeachLevel;
}
public
void Teach()
{
}
public
void MakeTest()
{
}
}
class Employee : Human
{
string OInstitution, OStudyLevel;
public
Employee(string Institution, string StudyLevel)
{
//This is Constructor!
OInstitution = Institution;
OStudyLevel = StudyLevel;
}
public
void Work()
{
}
public
void Bribe()
{
}
public
void GetPromoted()
{
}
}
class Engineer : Human
{
string OCompany, OSpecialty;
public
Engineer()
{
}
public
Engineer(string Company, string Specialty)
{
//This is Constructor!
OCompany = Company;
OSpecialty = Specialty;
}
public
void Work()
{
}
}
class Program
{
static void Main(string[] args)
{
string Name = "wasam";
int Age = 20;
string Company = "None";
string Speciality = "IT";
Engineer O = new Engineer(Company, Speciality);
O.Initialize(Name, Age);
O.ShowDitails();
O.Work();
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...Output....₰❥
Name = wasam, Age = 20
مثال بسيط يوضح مفهوم الوراثة :-
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace CSharp
{
class Human
{
string ONAME;
int OAGE;
public
void Initialize(string Name, int Age)
{
ONAME = Name;
OAGE = Age;
}
public
void ShowDitails()
{
Console.WriteLine("Name = {0}, Age = {1}", ONAME, OAGE);
}
}
class Teacher : Human
{
string OSchool, OTeachLevel;
public
Teacher(string School, string TeachLevel)
{
//This is Constructor!
OSchool = School;
OTeachLevel = TeachLevel;
}
public
void Teach()
{
}
public
void MakeTest()
{
}
}
class Employee : Human
{
string OInstitution, OStudyLevel;
public
Employee(string Institution, string StudyLevel)
{
//This is Constructor!
OInstitution = Institution;
OStudyLevel = StudyLevel;
}
public
void Work()
{
}
public
void Bribe()
{
}
public
void GetPromoted()
{
}
}
class Engineer : Human
{
string OCompany, OSpecialty;
public
Engineer()
{
}
public
Engineer(string Company, string Specialty)
{
//This is Constructor!
OCompany = Company;
OSpecialty = Specialty;
}
public
void Work()
{
}
}
class Program
{
static void Main(string[] args)
{
string Name = "wasam";
int Age = 20;
string Company = "None";
string Speciality = "IT";
Engineer O = new Engineer(Company, Speciality);
O.Initialize(Name, Age);
O.ShowDitails();
O.Work();
Console.ReadKey();
}
}
}
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
❥➺┊ @barmaja_Csharp↷
•┈┈┈•❈••✦✾✦••❈•┈┈┈•
إ₰...Output....₰❥
Name = wasam, Age = 20