(2)Object-oriented programming -OOP

مرحبا بالجميع

تكلمنا في المقالة السابقة عن Object Oriented في لغة البرمجة رينج ، وتعرفنا على معني وكيفية استخدام كل من Classes & Objects واليوم نستكمل باقي النقاط المرتبطة ب OOP.


Find () and List of Objects

عند وضع ال object في list نستطيع البحث عن أي attribute لأي object من خلال الدالة find.

Find (List, ItemValue, nColumn, cAttribute) ---> Item Index

مثال توضيحي:

find#
o1=new objs
o1.name="A" o1.id=1234
o2=new objs
o2.name="B" o2.id=5678
o3=new objs
o3.name="C" o3.id=9101112
[oList=[o1,o2,o3
See find(oList,5678,1,"id")+nl
See find(oList,"A",1,"name")+nl
Class objs
name id

Sort () and List of Objects

بعد وضع ال object في list، نستطيع ترتيب object بناءً على قيم ال attributes من خلال  الدالة sort.

Sort (List,nColumn,cAttribute) ---> Sorted List based on Object Attribute

مثال توضيحي:

find&sort#
o1=new objs
o1.name="A" o1.id=5678
o2=new objs
o2.name="B" o2.id=1234
o3=new objs
o3.name="C" o3.id=9101112
[oList=[o1,o2,o3
See find(oList,5678,1,"id")+nl
See find(oList,"A",1,"name")+nl
See Sort(oList,1,"id")+nl
See Sort(oList,1,"name")+nl
Class objs
name id

Printing Objects

طباعة ال attributes بداخل ال object بطريقة مباشرة-يكون بكتابة كلمة See قبل تعريف ال object.

مثال توضيحي:

print objects directly by see#
{ ()See new new_objs { print
Class new_objs
name id        
func print    
see "enter your name"+nl give name       
see"enter your id"+nl give id

Using Self.Attribute and Self.Method

تستخدم بعد تعريف ال classes قبل methods-لحماية الخصوصية لكل من:Attributes&methods

“الخاص بذلك ال class –أي الإشارة الي أن تلك Attributes&methods سوف يتم استخدامهم داخل ذلك ال class حتي لا يحدث الخلط مع المتغيرات Variables العامة.”

ملحوظة1: عند وضع Attributes&methods داخل ال method، لا نحتاج الي Self.

ملحوظة2: يفضل وضع المتغيرات العامة بداخل دالة ال main (دالة افتراضية داخل البرنامج تتنفذ تلقائيا بدون استدعاء) لمنع ال Conflict الحادث بسبب تلك المتغيرات.

مثال1 :

لم يحدث خطأ بالرغم من وجود متغيرات عامه نظرا لاستخدام الدالة main
func main
#متغيرات عامة قبل تعريف ال class
"name="Ring        
"id="1        
{ ()See new new_objs { print        
Class new_objs
# متغيرات خاصة ب ال class  
name id        
func print     
see "enter your name"+nl give name       
see"enter your id"+nl give id

مثال 2:

by self#
"name="Ring
"id="1
 { ()See new new_objs { print
Class new_objs
Self.name
Self.id
func print
see "enter your name"+nl give name
see"enter your id"+nl give id

Using This.Attribute and This.Method

متي تستخدم؟

في حالة وجود object من Class معين بداخل method في class اخر، فعنداستخدام ال Attributes&methods الخاص بذلك ال Class المتواجد بداخله يكون عن طريق this.

كما في الشكل التالي:

z.JPG

ملحوظة: لا دخال object في ال method نستخدم تلك الاقواس {}.

مثال توضيحي:

1.jpg

الكود: Code


Packages

تعني حزمة -عبارة عن مجموعة من Classes تحت نوع أو اسم واحد لسهولة التحكم في ال Classes.

Package Package_ Name
        Class Class1
                ...
        Class Class2
                ...
        Class Class3
                ...

لعمل objects من خلال ال Classes المتواجدة في ال packagesيكون كالتالي:

الطريقة الاولي:-  استدعاء ال Package أثناء انشاء ال Object:

  • Object_ name= New package_ name. Class_ name ⇒

الطريقة الثانية:-  استدعاء ال Package التي تحوي ال classes ثم انشاء ال Object الجديد التابع لأي من تلك ال classes التي بداخل ال package:

  • Import package_ name ⇒استدعاء ال package
  • { } Object_ name=New Class_ name ⇒ ثم انشاء ال objects الجديدة

في المثال السابق – من الممكن عمل package ل classes باسم authentication ثم انشاء objects جديده تابعه لاي class داخل ال package.

2.jpg

الكود: Code


Dynamic Attributes

عبارة attributes تتحدد قيمتها أو اسمها أثناء التشغيل (Run time) حيث تتغير باستمرار.

ملحوظة: الدالة EVAL تستخدم لتنفيذ الكود أثناء التشغيل، وما بداخلها عبارة عن سلسة حرفية.

(Eval (String

مثال توضيحي لاستخدام دالة Eval:

3.jpg الكود: Code

مثال علي dynamic attributes:

#تتغير قيمة ال attribute وكذلك اسمه وبالتالي يكون dynamic ولا يتم تعريفة في ال class
o1 = new dynamicClass
see o1.var5 + nl
Class DynamicClass
for x = 1 to 10
10="var1"=1,"var2"=2,"var3=3,........"var10"#
cStr = "var" + x + " = " + x    
(eval(cStr    
next

ومن هنا قد انتهينا من تلك المقالة والي لقاء اخر…

والسلام عليكم ورحمة الله وبركاته

موقع اللغة:

http://ring-lang.net

 

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s