تعلّم البرمجة بلغة كوتلن (22): ما هي الكائنات Objects

تعلّم البرمجة بلغة كوتلن (22): ما هي الكائنات Objects
أستمع الى المقال

أعددنا في قسم سابق من سلسلة تعلم البرمجة عبر كوتلن، بيئة التطوير لكوتلن وتعرفنا فيها على سطر الأوامر و بيئة التطوير المتكاملة وغيرها من الدروس الأساسية. ثم استعرضنا في قسم آخر، أساسيات مهمة للبدء مع لغة البرمجة كوتلن.

وفي هذا القسم، سنتعرف على مفاهيم البرمجة الكائنية عموماً، واستخدام الكائنات في كوتلن على وجه الخصوص.

الكائنات في حياتنا اليومية:

نتعامل كثيرًا في حياتنا اليومية مع الكائنات Objects، مثل: السيارة، التلفزيون، الكتاب. ولدينا أيضًا، كائنات أشمل مثل الكائن “ثمرة”، والذي يرث منه خصائصه كائن مثل “فاكهة”، والذي بدوره ينضوي تحته ويرث منه خصائصه، كائنات مثل الموز، التفاح، البرتقال …الخ.

إذًا، يمكننا القول بأن كائن التفاحة مثلًا، ينتمي إلى الصنف class “فاكهة” ويرث منه خصائصه. والصنف “فاكهة” نفسه ينتمي إلى الصنف “ثمرة”، ويرث منه خصائصه.

وإذا أخذنا كائن التلفزيون كمثال، سنجد أن لديه حالات states مثل: اللون، حجم الشاشة، الموديل …الخ، والتي هي عبارة عن خاصية property. وأيضًا لديه سلوك behaviour مثل: عرض الفيديو، تشغيل الموسيقى …الخ، والتي هي عبارة عن وظيفة function. ولديه هوية identity خاصة به، وهذا يعني أنه يختلف عن كائن السيارة مثلًا.

الكائنات في البرمجة:

وﻷن المبرمجين كغيرهم من البشر تعودوا على التعامل مع الكائنات في حياتهم اليومية، أنشأوا طريقة لتخزين المعلومات في ذاكرة الحاسب، باستخدام مفهوم الكائنات. إذًا يمكننا القول، أن الكائن Object هو عبارة عن وحدة تجمع بين البيانات data والعمليات التي تجري عليها. هذه الوحدة لها خصائص properties ووظائف functions مرتبطة بها.

الكائنات هي الأساس للعديد من لغات البرمجة الحديثة، بما في ذلك لغة كوتلن. تُعرف هذه اللغات باسم لغات البرمجة كائنية التوجه  object-oriented (OO) programming language. في واقع الأمر، تدعم كوتلن بجانب نمط البرمجة كائنية التوجه، نمط البرمجة الوظيفية Functional Programming. (وهو ما سنستعرضه في دروس لاحقة من هذه الدورة).

الكائنات في كوتلن:

في كوتلن، تشير المتغيرات Variables إلى كائنات مخزنة في ذاكرة الحاسب. كمثال، إذا أعلنا عن متغير عبر استخدام (val أو var) وأسندنا له النص “Kotlin”، كالتالي:

val language = “Kotlin”

يُمثل النص “Kotlin” كائن من النوع String، وهو صنف class مجهز مسبقًا من فريق كوتلن، ويأتي مدمجًا في مكتبة كوتلن القياسية. وكلما وضعنا سلسلة من المحارف بين علامتي تنصيص مزدوجة، تعتبر كوتلن أن هذا كائن من النوع String. بالتالي سيرث هذا الكائن الجديد كل خصائص ووظائف الصنف الأب String.

كل شيء عبارة عن كائن في كوتلن:

كالنوع String تمامًا، كل أنواع البيانات الأساسية في كوتلن، مثل: (Int, Long, Boolean, Char, Double …etc)، عبارة عن أصناف classes. فنحن حينما نسند إلى متغير ما، أي قيمة من هذه الأصناف، فهذا يعني أن المتغير أصبح يشير إلى كائن object في الذاكرة يُمثل نسخة من هذا الصنف. ويرث خصائص ووظائف الصنف الأب.

خصائص ووظائف الصنف String:

يحتوي الصنف String الكثير جدًا من الخصائص (المتغيرات) والوظائف (الدوال) التي يمكننا استخدامها معه (يمكننا إيجادها كلها في هذا الرابط). ومن ضمن هذه الخصائص طول النص length. تم وضع هذه الخاصية في الصنف الأب المسمى ب String، لذا يمكننا استخدامها مع كل كائن يرث منه. لاستخدام هذه الخاصية مع مثالنا السابق، كل ما علينا هو وضع نقطة ( . ) بعد اسم المتغير وكتابة اسم الخاصية length، كالتالي:

language.length

وعند وضعها داخل دالة الطباعة:

println(language.length)

ستكون نتيجة الطباعة العدد 6. وهو عدد المحارف في الكائن “Kotlin” الذي يُمثله المتغير language. ويمكننا أيضًا استدعاء خصائص كائن النص بدون استخدام أي متغير، إذا وضعنا الكائن مباشرة في دالة الطباعة، كالتالي:

println(“Kotlin”.length)

وستكون نتيجة الطباعة هي نفسها.

ومن ضمن الوظائف للصنف String، لدينا الدالة ()equals والتي وظيفتها هي مقارنة كائنين إذا كانا متساويين أم لا. ويمكننا استخدامها، كالتالي:

println(“Kotlin”.equals(“Java”))

بالشفرة أعلاه، لدينا مقارنة بين كائن String بقيمة النص “Kotlin”، وكائن آخر بقيمة النص “Java”. ستكون نتيجة الطباعة false، ﻷن الكائنين يحملان محارف مختلفة. يمكننا الاستعاضة عن استدعاء الدالة ()equals، باستخدام علامة التساوي ( == )، كالتالي:

println(“Kotlin” == “Java”)

وستكون نتيجة الطباعة هي نفسها.

معرفة خصائص ووظائف الكائن String في برنامج IntelliJ IDEA:

لمعرفة الخصائص والوظائف التي يحتويها أي كائن في كوتلن، كل ما علينا هو وضع نقطة ( . ) بعد اسم المتغير الذي يُمثل الكائن، أو بعد قيمة الكائن، كما يظهر في الصورة التالية:

الصنف class عبارة عن نوع بيانات:

كل أنواع البيانات الأساسية في كوتلن، هي عبارة أصناف classes تم إنشاؤها مسبقًا ودمجها مع اللغة فيما يعرف بمكتبة كوتلن القياسية. كل ما علينا هو استخدام الخاصيات والوظائف المعرفة مسبقًا داخلها.

بالإضافة لهذه الأنواع الأساسية، لدينا أصناف أخرى، مثل الصنف IntRange. والذي استخدمناه في درس حلقة for والنطاقات. فبمجرد اسناد نطاق مثل (9..1) إلى متغيرٍ ما، فسيكون نوع بيانات المتغير تلقائيًا هو الصنف IntRange. بالتالي يمكننا استخدام كل الخصائص والوظائف التي تم وضعها في الصنف IntRange، مع الكائن الذي يشير إليه المتغير.

إنشاء الأصناف classes الخاصة بنا:

عند الإعلان عن المتغيرات في كوتلن، نحتاج أن نسند إليها قيمة من نوع بيانات معين. يمكننا أن نستخدم الأصناف المعرفة مسبقًا والتي تأتي مع اللغة، أو يمكننا إنشاء أخرى خاصة بنا. فإذا نظرنا للأصناف المرفقة مع اللغة، نجد أنها تبدأ بالكلمة المفتاحية class. وهذه هي الكلمة التي سنستخدمها لإنشاء الأصناف الخاصة بنا، بداية من الدرس القادم.

هذا الدرس هو جزء من سلسلة تعليم مبادئ البرمجة بلغة كوتلن. لمُتابعة الدروس منذ البداية ومُشاهدة فهرس المحتويات يمكنك الانتقال إلى الدرس الأول من هنا.

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.