السلام عليكم...
هل يمكن توضيح طريقة عمل الكلاسات في لغة asp ؟
السلام عليكم...
هل يمكن توضيح طريقة عمل الكلاسات في لغة asp ؟
أخ أنس عذرا لضيق الوقت
لكن هذا مقال جميل يخص هذا الموضوع
http://www.eggheadcafe.com/articles/20011227.asp
سأشرحه حال انتهاء اختباراتي أو ليتكوم أحد الأعضاء بذلك ..
You can fly while you can touch the sky
يجب أن تحدد اللغة .. هل هي jscript أم ال vbscript ؟؟ حيث لا يوجد شئ اسمه لغة ASP .. إذا أردت نصيحتي فإن الكلاسات في ال vbscript أفضل بكثير من jscript وهي أقرب ماتكون إلى الكلاسات الحقيقية عنها في jscript .. لذلك سوف أشرح في vbscript ..
ببساطة ...:
أولا يتم تعريف الكلاس كالتالي :
class ClassName end class
يتم داخل الكلاس كتابة التوابع أو الاجرائات وتعريف المتحولات التي تسمى members لهذا الكلاس .. يوجد توعين لتعريف المتحولات والتوابع داخل الكلاس وهما private أو public ..
الprivate لا يسمح للوصول له من خارج ال class أما ال public فمن اسمه يعني أنه يسمح للوصول إلى العنصر من خارج الكلاس .. ال private هي فقط لحماية المتحولات من العبث من خارج الكلاس ..
مثال على كلاس لموظف :
class Employee private ID, Name public function SetName(name) Name = name end function .... ' Other functions goes here end class
أولا لا يتم تعريف المتحولات ب Dim بالكلاس بل يستخدم private أو public ..
يمكن أيضا تعريف خصائص للكلاس أو property وهي تشبه المتحولات بكيفية استخدامها ولكنها أيضا تشبه التابع في كيفية برمجتها .. مثلا التابع SetName يمكن برمجته كخاصية تسمى Name .. ولمعرفة الأكثر في هذا راجع ال MSDN قسم VBscript/Language Reference/Statements/Property Get, Let, Set
أما عن كيفية الاستخدام فهي سهلة .. وإليك المثال التالي :
dim obj
set obj = new Employee
obj.SetName("whatever")
set obj = nothingnew وظيفتها انشاء كائن عن الكلاس من أجل استخداه و set = nothing تقوم بافراغه من الذاكرة .. طبعا ليس من المهم افراغه من الذاكرة لأن vbscript تقوم بذلك تلقائيا ولكن قد يكون الأمر مهم كما سوف نراه الآن .. والمعلومات القادمة غير موجودة في ال MSDN ..
يوجد تابعين خاصين بالكلاس واسمهما :
Class_Initialize : يتم استدعائه عند عمل New ويسمى بال constructor
Class_Terminate : يتم استدعئه عند عمل set = nothing ويسمى بال destructor ..
وأفضل مثال على السابق وهو الأمر الذي يفضل أن يتبعه مبرمجين ال asp بالنسبة للداتابيس .. رأيت أن أكثرهم يقومون بتعريف dbconn كمتحول عام في ملف وتتم عملية ال include بعدها .. طبعا هذا قد يعمل أحيانا ولكنه عقيم في المشاريع الضخمة .. الأفضل من هذا هو وضع كل توابع الوصول إلى الداتابيس في كلاس منفصل والمثال القادم يصف هذا :
class LessonsDb
private obj_dbconn
' Description: Opens the conenction with the database
' Returns: none
'
public sub Class_Initialize
Set obj_dbconn = Server.CreateObject("ADODB.Connection")
obj_dbconn.Open(Application("ConnectionString"))
end sub
' Description: Closes the conenction with the database
' Returns: none
'
public sub Class_Terminate
obj_dbconn.Close
end sub
' Description: Returns the recordset that has the given secId
' Returns: the recordset
'
public function GetSection(secId)
end function
' Description: edits a section in the table
' Returns: true if succeeded
'
function EditSection(secid, caption, description)
end function
end classلاحظ كيف متحول ال obj_dbconn الآن أصبح داخل الكلاس وهو private ..
ومن أجل استخدام الكلاس السابق وبكل بساطة نكتب الكود التالي :
dim db set db = new LessonsDb db.EditSection(1, "test", "descritp") set db = nothing
أرجو أنه قد أوصلت المعلومة صحيحة .. وشكرا :)
Coding on the Cloud and for the Cloud!
و الله ما قصرت اخ هاني .....(f)
هذا الموضوع مغلق.