سلسلة دروس تعليم لغة كوتلن لتعليم الأندرويد – الدرس السابع عشر
محتويات الدرس :-
- تعريف البرمجة الكائنية OOP
- الكائن Class و Objects
- خصائص ال Class
- الدوال Functions or Method Class
- إنشاء كائن من ال Class في دالة ال Main
- إنشاء أكثر من كائن
- تمرير معاملات الكائن
- الوصول الى المعاملات بشكل مباشر
- استخدام ال this
- دالة Constructors
- دالة init
- تعريف متغير من نوع Public
- تعريف متغير من نوع Private
- تعريف متغير من نوع Protected
البرمجة الكائنية
البرمجة كائنية التوجُّه أو البرمجة الشيئية وهي عبارة عن نمط برمجة متقدمة، وفيه يقسم البرنامج إلى وحدات تسمى الكائنات (Objects)، كل كائن عبارة عن حزمة من البيانات والمتغيرات والثوابت والدوال ووحدات التنظيم وواجهات الاستخدام ويتم بناء البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض .
الكائن objects و class
لعل كل ما نراه في حياتنا اليومية من بشر وفواكه وحيوانات ووو هو كائن “object”….
لو نظرنا لفئة الحيوانات مثلا فالأسد والنمر والغزال والأرنب كلٌ منهم يمثل كائناً مستقلا بذاته, و له خصائص تميزه عن الآخر , ويقوم بسلوكيات ووظائف , إذن لكل كائن خصائص يتميّز بها و سلوكيات يقوم بها ومن هذه السلوكيات تنتج أحداث،
وبهذه الثلاث عوامل يتميز كل كائن عما سواه:
- خصائص properties : وهي ما نسميه في البرمجة Data.
- سلوكيات behavior أو وظائف يقوم بها: وهي ما نسميه بلغة البرمجة Methods or Functions.
- أحداث Events : تخص الكائن وتنتج عن سلوكياته.
وكل كائن ( object ) ينتمي لفئة أعلى منه (class) فمثلا الفراولة هو كائن وهو ينتمي لفئة الفواكه, الأسد هو كائن وينتمي لفئة الحيوانات, السيارة والطائرة والسفينة هي كائنات وهي تنتمي للفئة التي هي وسائل النقل . وهكذا …
فالبرمجة الكائنية هي طريقة جديدة لتصميم وكتابة البرامج ، و الفكرة الرئيسية منها هي ان تقوم بتحويل البرنامج الى اجزاء مختلفة وكل جزء يمثل هدف او عمل معين .
توضيح أكثر
كل Class يحتوي على مجموعة objects وكل object يحتوي على خصائص ووظائف
مثلاً
لدينا صنف السيارات (class Car) و كما هو معروف السيارات كثيرة جدا تختلف من حيث اللون والموديل والحجم والشكل وغيرها هذه الأختلافات تسمى خصائص حيث لكل سيارة لها اللون الخاص بها (خاصية اللون) وكل سيارة لها الموديل الخاص بها (خاصية الموديل) وهكذا وكل سيارة تقوم بوظائف معينة فمثلا السياقة الى الأمام السياقة الى الخلف الدوران يمين ويسار وهكذا ..
صورة توضيحية
Syntax
إنشاء class
لأنشاء كلاس تكتب الكلمة المحجوزة في المترجم class ثم بعدها اسم اختياري لهذا الكلاس .
خصائص ال class
لكل فئة (كلاس) لها خصائص فمثلاً فئة السيارات لها خصائص منها المعرف id الخاص بكل سيارة والأسم واللون والموديل والسعر .
الدوال Functions or Method Class
بعد أضافة الخصائص الخاصة بالكلاس Car قمنا بأضافة دوال لطباعة ومعالجة الخصائص
وفي هذا المثال قمنا بأضافة دالة تقوم بطباعة معلومات او خصائص السيارة
إنشاء كائن من ال class في دالة ال main
Syntax
مثال
في هذا المثال سنتعرف على كيفية إنشاء كائن object من الكلاس وكيفية اعطاء قيم لخصائص هذا الكائن وكيفية الوصول الى الوظائف الخاصة بهذا الكائن
إنشاء أكثر من كائن
في هذا المثال سنتعرف على كيفية إنشاء أكثر من كائن
تمرير معاملات للكائن
يمكن تمرير معاملات للكائن وذلك لتسهيل كتابة الكود الخاص بك وتقليل ال syntax
كيفية تمرير المعاملات
تكتب متغيرات المعاملات داخل اقواس الكلاس وحسب كل متغير ونوعه وشرط ان يكون تمرير قيم المعاملات للكائن حسب النوع المعطى لمعاملات الكلاس
Syntax
ملاحظة
المعاملات او المتغيرات داخل اقواس الكلاس لا يمكن الوصول اليه بشكل مباشر من داخل functions الكلاس لذلك عملنا متغيرات محلية myID و myName تنوب عن متغيرات المعاملات بحيث تأخذ قيم متغيرات المعاملات وبالتالي يمكن الوصول لها من داخل الدوال functions .
الوصول الى المعاملات بشكل مباشر
يمكن الوصول الى متغيرات المعاملات من داخل الدوال عن طريق كتابة var او val قبل متغيرات المعاملات وبالتالي تصبح كمتغيرات محلية او خصائص يمكن الوصول لها مباشرا من الدوال .
Syntax
مثال
طريقة ثانية للوصول الى المعاملات
يمكن الوصول الى المعاملات بأستخدام طريقة ال this .
دالة constructor
وهي عبارة عن دالة مخزنة في المترجم compiler يتم استدعائها (تنفيذ ما في داخلها) بشكل تلقائي في الوقت نفسه عند إنشاء كائن .
المثال
في هذا المثال تم انشاء كائن Object من الفئة Car وقمنا بكتابة الدالة المخزنة ضمن الكلاس وهي constructor وعند انشاء الكائن تلقائياً تم استدعاء ما موجود ادخلها .
constructor مثال
مثال في الكلاس قمنا بتهيئة متغيرات الخصائص واعطيناهة قيم null ثم ضمن الconstructor قمنا بتحديث قيم الخصائص وقمنا بالطباعة .
تمرير معاملات constructor
في هذا المثال توضيح لكيفية تهيئة معاملات الconstructor وكيفية تمرير قيم المعاملات عند إنشاء الكائن .
دالة init
وهي تشبه دالة الconstructor لكن الفرق ان في الinit يكون تمرير معاملات في الclass اما الconstructor يكون تمرير المعاملات من خلالها .
تعريف متغير من نوع public
كل الدروس السابقة التي تم تعريف المتغيرات فيها هي عبارة عن public سواء تم كتابة كلمة public قبل تعريف المتغير او لا .
تعريف متغير من نوع private
ويعني ان المتغير يسمح الوصول له فقط من داخل الكلاس ويمنع الوصول اليه من كلاسات او دوال خارجية .
مثال
في هذا المثال سيعرض مترجم اللغة خطأ ويخبرنا بانه غير مسموح الوصول الى المتغيرات myId و myName لانها متغيرات من نوع private اي فقط المسموح الوصول اليه من دوال الكلاس نفسه الذي تنتمي اليه .
تعريف متغير من نوع protected
ويعني ان المتغير يمكن الوصول اليه فقط من داخل الكلاس الأصلي والكلاس الموروث من الاصلي , وهذه النوع يستخدم بكثرة بموضوع الوراثة في البرمجة الكائنية التوجه , والتي نتمنى ان نتوفق لشرحها في المقالات القادمة .