الفئات والكائنات وحزم البرمجيات
افهم كيفية تعريف الفئات وإنشاء الكائنات وتنظيم التعليمات البرمجية باستخدام الحزم في Scala
الفئات والكائنات وحزم البرمجيات درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 1 من أصل 2. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 2 دروس في المجموع.
مرحبًا بكم في البرمجة كائنية التوجه في Scala
في هذا الدرس، ستتعمقون في صميم البرمجة كائنية التوجه (OOP) في Scala. سنستكشف كيفية تنظيم شيفرتكم باستخدام الأصناف، وإنشاء مثيلات من تلك الأصناف (كائنات)، والحفاظ على تنظيم كل شيء باستخدام الحزم.
لنبدأ ببناء تطبيقات متينة ووحداتية!
الأصناف: المخططات الأساسية
فكّروا في الصنف على أنه مخطط لإنشاء الكائنات. فهو يحدّد الخصائص (البيانات) والسلوكيات (الأساليب) التي ستكون لدى كائناته. لا تخزّن الأصناف البيانات بنفسها، لكنها تصف نوع البيانات التي يمكن للكائن تخزينها.
إليكم تعريفًا أساسيًا لصنف:
class Car {
// Properties and methods go here
}تعريف صنف بسيط
في Scala، تعرّفون صنفًا باستخدام الكلمة المفتاحية class متبوعةً باسمه. لننشئ صنفًا بسيطًا باسم Dog. لا يفعل الكثير بعد، لكنه بداية جيدة!
جرّبوا تشغيل تعريف الصنف الفارغ هذا:
class Dog {
// This dog has no properties or behaviors yet
}
object Main {
def main(args: Array[String]): Unit = {
println("Dog class defined!")
}
}إنشاء الكائنات (النسخ)
الكائن هو نسخة من صنف. إنه «شيء» حقيقي أُنشئ من المخطط. لإنشاء كائن، تستخدمون الكلمة المفتاحية new متبوعةً باسم الصنف.
يحصل كل كائن على مجموعة بيانات خاصة به، وفقًا لما يحدّده الصنف.
class Dog {
// Still an empty dog blueprint
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog()
val yourDog = new Dog()
println("Two dog objects created!")
}
}إضافة الخصائص إلى صنف
يمكن أن تحتوي الأصناف على خصائص (تُسمّى أيضًا الحقول أو الأعضاء) لتخزين البيانات. يمكنكم تعريف هذه الخصائص في مُنشئ الصنف، لتصبح معاملات عند إنشاء كائن.
لنمنح كائن Dog خاصيتي name وbreed:
class Dog(val name: String, val breed: String) {
// 'val' makes name and breed immutable properties
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Buddy", "Golden Retriever")
println(s"My dog's name is ${myDog.name} and breed is ${myDog.breed}.")
}
}إضافة السلوك (الأساليب)
تعرّف الأصناف أيضًا الأساليب، وهي دوال تصف سلوك الكائن. ويمكن للأساليب الوصول إلى خصائص الكائن وتعديلها.
أصبح بإمكان Dog الآن تنفيذ bark():
class Dog(val name: String, val breed: String) {
def bark(): String = {
s"${name} says Woof!"
}
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Max", "Labrador")
println(myDog.bark())
}
}كلمة `object` في Scala (الكائنات الأحادية)
في Scala، تعرّف الكلمة المفتاحية object كائنًا أحاديًا. وهذا يعني أنه لا يمكن أن توجد منه إلا نسخة واحدة. لا تستخدمون new لإنشائه؛ بل تشيرون إلى اسمه مباشرةً.
تُستخدم هذه الكائنات غالبًا لأساليب الأدوات أو كنقطة دخول واحدة.
object MathUtils {
def add(a: Int, b: Int): Int = a + b
def subtract(a: Int, b: Int): Int = a - b
}
object Main {
def main(args: Array[String]): Unit = {
val sum = MathUtils.add(5, 3)
println(s"5 + 3 = ${sum}")
}
}الكائنات المرافقة
الكائن المرافق هو object يحمل الاسم نفسه لصنف class ويُعرّف في الملف المصدر نفسه. ويملك كل منهما صلاحية خاصة للوصول إلى الأعضاء الخاصة للآخر.
- يحتوي الصنف على البيانات والأساليب الخاصة بكل نسخة.
- يحتوي الكائن المرافق على أساليب شبيهة بالأساليب الساكنة أو أساليب إنشاء الكائنات.
class Circle(val radius: Double) {
def area: Double = Circle.PI * radius * radius
}
object Circle {
// This is the companion object for the Circle class
val PI: Double = 3.14159
def apply(r: Double): Circle = new Circle(r) // Factory method
}
object Main {
def main(args: Array[String]): Unit = {
val c = Circle(5.0) // Using the apply method from companion object
println(s"Circle area: ${c.area}")
}
}تنظيم الشيفرة باستخدام الحزم
الحزم وسيلة لتنظيم أصنافكم وكائناتكم في مجموعات منطقية، مما يمنع تعارض الأسماء ويحسّن قابلية صيانة الشيفرة.
فكّروا فيها كمجلدات لشيفرتكم. تعلن الكلمة المفتاحية package عن الحزمة في أعلى ملف Scala.
package com.coddykit.animals
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
// This class is now inside com.coddykit.animals packageاستيراد الأعضاء من الحزم
لاستخدام أصناف أو كائنات معرّفة في حزمة أخرى، يجب أن تقوموا باستيرادها. تجعل الكلمة المفتاحية import أعضاء الحزمة متاحةً في النطاق الحالي.
لنستورد صنف Cat:
package com.coddykit.app
// Define a class in a package first for import example
package com.coddykit.animals {
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
}
import com.coddykit.animals.Cat
object Main {
def main(args: Array[String]): Unit = {
val myCat = new Cat("Whiskers")
println(myCat.meow())
}
}اختبار سريع: صنف أم كائن؟
لقد تعلّمتم عن الأصناف والكائنات والحزم. لنختبر مدى فهمكم!
مراجعة: الأصناف والكائنات والحزم
أحسنتم! لقد تعلّمتم أساسيات البرمجة كائنية التوجه في Scala:
- الأصناف مخططات تحدّد الخصائص والسلوكيات.
- الكائنات نسخ تُنشأ من الأصناف باستخدام
new. - تنشئ الكلمة المفتاحية
objectفي Scala كائنات أحادية، وهي مفيدة للأدوات أو لإنشاء الكائنات. - تترافق الكائنات المرافقة مع الأصناف لتوفير أعضاء شبيهة بالأعضاء الساكنة.
- تنظّم الحزم شيفرتكم، فتمنع تعارض الأسماء وتحسّن البنية.
سنواصل البناء على هذه الأساسيات باستكشاف الوراثة وتعدد الأشكال!
الأسئلة الشائعة
هل درس «الفئات والكائنات وحزم البرمجيات» مجاني؟
نعم — نص درس «الفئات والكائنات وحزم البرمجيات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 2 دروس في المجموع.
ماذا ستتعلم في «الفئات والكائنات وحزم البرمجيات»؟
افهم كيفية تعريف الفئات وإنشاء الكائنات وتنظيم التعليمات البرمجية باستخدام الحزم في Scala تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟
لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 2.
كم من الوقت يستغرق درس «الفئات والكائنات وحزم البرمجيات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟
نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الفئات والكائنات وحزم البرمجيات
- الوراثة وتعدد الأشكال