09-10-12, 06:33 PM
الكود التالي يقوم بإنشاء فئة Person تمتلك خاصيتين Name و Age حيث أن الخاصية Name للقراءة فقط immutable كما هو الحال في معظم القيم في هذه اللغة كما يمكنك إنشاء خواص قابلة لتغيير قيمتها mutable عندما تدعو الحاجة لذلك ولكن يجب عليك التصريح أنها متغيرة حيث يتم تخزين الخاصية Age في متغير قابل لتغيير قيمته internalAge انظر الكود
ومن أجل اختبار الفئة السابقة سنقوم بإنشاء غرضين من النوع Person وإجراء بعض التغييرات وإظهار النتائج كما هو موضح بالكود التالي
كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]// يتم التصريح عن باني يأخذ متغيرين
/// The declaration creates a constructor that takes two values, name and age.
[/COLOR][color=#0000bb]type Person[/color][color=#007700]([/color][color=#0000bb]name[/color][color=#007700]:[/color][color=#0000bb]string[/color][color=#007700], [/color][color=#0000bb]age[/color][color=#007700]:[/color][color=#0000bb]int[/color][COLOR=#007700]) =
[/COLOR][COLOR=#ff8000]// يمكن تغيير قيمة العمر لأن المتغير المرتبط بها تم التصريح عنه باستخدام الكلمة المحجوزة mutable
// A Person object's age can be changed. The mutable keyword in the
// declaration makes that possible.
[/COLOR][color=#0000bb]let mutable internalAge [/color][color=#007700]= [/color][COLOR=#0000bb]age
[/COLOR][COLOR=#ff8000]// التصريح عن باني ثاني يأخذ وسيطة واحدة هي الاسم وهو يستدعي الباني السابق الذي يأخذ وسيطتين
// Declare a second constructor that takes only one argument, a name.
// This constructor calls the constructor that requires two arguments,
// sending 0 as the value for age.
[/COLOR][color=#007700]new([/color][color=#0000bb]name[/color][color=#007700]:[/color][color=#0000bb]string[/color][color=#007700]) = [/color][color=#0000bb]Person[/color][color=#007700]([/color][color=#0000bb]name[/color][color=#007700], [/color][color=#0000bb]0[/color][COLOR=#007700])
[/COLOR][COLOR=#ff8000]// خاصية للقراءة فقط
// A read-only property.
[/COLOR][color=#0000bb]member this[/color][color=#007700].[/color][color=#0000bb]Name [/color][color=#007700]= [/color][COLOR=#0000bb]name
[/COLOR][COLOR=#ff8000]// خاصية للقراءة والكتابة
// A read/write property.
[/COLOR][color=#0000bb]member this[/color][color=#007700].[/color][COLOR=#0000bb]Age
with get[/COLOR][color=#007700]() = [/color][COLOR=#0000bb]internalAge
[/COLOR][color=#007700]and [/color][color=#0000bb]set[/color][color=#007700]([/color][color=#0000bb]value[/color][color=#007700]) = [/color][color=#0000bb]internalAge [/color][color=#007700]<- [/color][COLOR=#0000bb]value
[/COLOR][COLOR=#ff8000]// دالات الفئة
// Instance methods.
// زيادة عمر الشخص
// Increment the person's age.
[/COLOR][color=#0000bb]member this[/color][color=#007700].[/color][color=#0000bb]HasABirthday [/color][color=#007700]() = [/color][color=#0000bb]internalAge [/color][color=#007700]<- [/color][color=#0000bb]internalAge [/color][color=#007700]+ [/color][COLOR=#0000bb]1
[/COLOR][COLOR=#ff8000]// اختبر العمر مع قيمة معطاة
// Check current age against some threshold.
[/COLOR][color=#0000bb]member this[/color][color=#007700].[/color][color=#0000bb]IsOfAge targetAge [/color][color=#007700]= [/color][color=#0000bb]internalAge [/color][color=#007700]>= [/color][COLOR=#0000bb]targetAge
[/COLOR][COLOR=#ff8000]// إظهار اسم وعمر الشخص
// Display the person's name and age.
[/COLOR][color=#0000bb]override this[/color][color=#007700].[/color][color=#0000bb]ToString [/color][COLOR=#007700]() =
[/COLOR][color=#dd0000]"Name: " [/color][color=#007700]+ [/color][color=#0000bb]name [/color][color=#007700]+ [/color][color=#dd0000]"\n" [/color][color=#007700]+ [/color][color=#dd0000]"Age: " [/color][color=#007700]+ (string)[/color][COLOR=#0000bb]internalAge
[/COLOR][/COLOR]ومن أجل اختبار الفئة السابقة سنقوم بإنشاء غرضين من النوع Person وإجراء بعض التغييرات وإظهار النتائج كما هو موضح بالكود التالي
كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]// التعابير التالية ليست جزءا من الفئة person
// تأكد من أنها تبدأ بـ let
// The following let expressions are not part of the Person class. Make sure
// they begin at the left margin.
[/COLOR][color=#0000bb]let person1 [/color][color=#007700]= [/color][color=#0000bb]Person[/color][color=#007700]([/color][color=#dd0000]"John"[/color][color=#007700], [/color][color=#0000bb]43[/color][COLOR=#007700])
[/COLOR][color=#0000bb]let person2 [/color][color=#007700]= [/color][color=#0000bb]Person[/color][color=#007700]([/color][color=#dd0000]"Mary"[/color][COLOR=#007700])
[/COLOR][COLOR=#ff8000]// تغيير قيمة عمر ماري
// Send a new value for Mary's mutable property, Age.
[/COLOR][color=#0000bb]person2[/color][color=#007700].[/color][color=#0000bb]Age [/color][color=#007700]<- [/color][COLOR=#0000bb]15
[/COLOR][COLOR=#ff8000]// إضافة عام لعمر جون
// Add a year to John's age.
[/COLOR][color=#0000bb]person1[/color][color=#007700].[/color][color=#0000bb]HasABirthday[/color][COLOR=#007700]()
[/COLOR][COLOR=#ff8000]// إظهار النتائج
// Display results.
[/COLOR][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Console[/color][color=#007700].[/color][color=#0000bb]WriteLine[/color][color=#007700]([/color][color=#0000bb]person1[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700]())
[/COLOR][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Console[/color][color=#007700].[/color][color=#0000bb]WriteLine[/color][color=#007700]([/color][color=#0000bb]person2[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700]())
[/COLOR][COLOR=#ff8000]// هل عمر ماري يسمح لها بالاقتراع
// Is Mary old enough to vote?
[/COLOR][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Console[/color][color=#007700].[/color][color=#0000bb]WriteLine[/color][color=#007700]([/color][color=#0000bb]person2[/color][color=#007700].[/color][color=#0000bb]IsOfAge[/color][color=#007700]([/color][color=#0000bb]18[/color][COLOR=#007700]))
[/COLOR][color=#0000bb][/color][/COLOR]