(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- حيث نستطيع  تعريف ال 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

تستخدم لحماية الخصوصية لكل من: Attributes & methods.

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

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

مثال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

نستخدم This عندما نريد الوصول الي ال attributes , methods لل Class الحالي من داخل object ل Class اخر.

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

z.JPG

وهنا شرح بالتفصيل عن استخدام Self و This وحماية الخصوصية ومنع ال Conflict 

مثال توضيحي:

الكود

 

12.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 ثم انشاء ال Object الجديد التابع لأي من تلك ال classes:

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 ولا يتم تعريفة الا أثناء التشغيل
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

 

للاطلاع علي المقالات الاخري من هنا

يمكنك فتح المقالة الاولي لل object-oriented من هنا 

يمكنك أن تطلع علي  Sytax اضافي لتنظيم كود ال OOP من هنا

تستطيع الاطلاع علي المشاريع مفتوحة المصدر من الموقع  GitHub
الموقع الرسمي للغة  http://ring-lang.net

وشكرا لكم والي اللقاء

Advertisements

فكرة واحدة على ”(2)Object-oriented programming – OOP

  1. تعقيب: (1)Object-oriented programming-OOP | لغة البرمجة رينج Ring programming language

اترك رد

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

شعار وردبرس.كوم

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

Google+ photo

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

صورة تويتر

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

Facebook photo

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

Connecting to %s