تقدم DataCamp حديثاً بدورتهم الأولى في Scala: مقدمة لـ Scala. اشاهدوها!
وأيضاً، تأكدوا من الاطلاع على التعليمات التالية:
المقدمة

في العموم، البرمجة الوجهية الموجهة (OOP) تتألف من الصفوف والأجسام وتهدف إلى تنفيذ الكيانات الواقعية مثل التمايز والوراثة.
تجعل البرمجة الموجهة الوجهية البرمجة أسرع وأرخص بشكل كبير مع إمكانية الصيانة الأفضل للبرمجيات. السبب الرئيسي لهذا السحر هو عدد المزايا التي تدعمها؛ لديك الصفوف والأجسام التي يمكن استعمالها بسهولة في المستقبل وفقاً للحاجة، على النقيض من البرنامج الذي يفتقر إلى الصفوف والأجسام. هذا، وبالتالي، يؤدي إلى برمجيات من عالية الجودة التي يمكن توسيعها بطرق جديدة وصفات.
ar
أنت تمتلك معرض سيارات؛ كل عدة أشهر، سيتم إطلاق سيارة جديدة، ولإبلاغ الجمهور بأسمائها ومواصفاتها، عليك أن تحدد طرق جديدة وصفات من الصفر. ومع ذلك، إذا كان لديك برنامج تمركز على الأجسام يحتوي على صنف سيارة، فإن ما ستقوم به فقط هو إضافة جسم لتلك السيارة الجديدة، والذي سيتصل بواسطة طرق الصنف والصفات بمعلومات السيارة.
يمكن التفكير في الصنف كتمثيل أو تصميم للأجسام. الصنفات ستحتوي على طرق (سلوك) وصفات خاصة بها.
الصفات هي الكيانات الفردية التي تميز كل جسم عن الآخر وتحدد مختلف الصفات لجسم. بينما الطرق، تشبه أكثر كيفية عمل الوظيفة التي تعمل في البرمجة. إنها تحدد كيفية عمل مثيل للصنف. وهو أغلبا بسبب الطرق (السلوك)؛ لدي الأجسام القدرة على القيام بأشياء عليها.

الرسم التوضيحي أعلاه يعطيك إحساس أكثر بتدفق البرمجة التمركزة على الأجسام أو، لتكون أكثر تحديداً، ما يبدو عليه الصنف. في الصورة أعلاه، يوجد class car
والتي تمتلك صفات: الوقود، السرعة القصوى
، ويمكن أن تمتلك صفات أخرى كـ الموديل
، الصنع
، إلخ. وتمتلك مجموعات مختلفة من الطرق
كـ refuel()
، getFuel()
، setSpeed()
، ويمكن أن تكون الطرق الإضافية تغيير القرص
، تشغيل المحرك
، إيقاف المحرك
، إلخ.
إذا، عندما تتحدث عن سيارة محددة، سيكون لديك جسم، وهو تجسيم لصنف.
الآن ، دعونا نتحدث عن برنامج البحث التشديدي في Scala.
الصفات والأوبجكتوريات في Scala
مثل C++ و Java، يتبع Scala نفس القواعد البسيطة للبحث التشديدي. يوجد فكرة تعريف الصفات
و الأوبجكتوريات
و داخل الصف ال بناءات
للصفات، وهذا كل ما يتم به البحث التشديدي في Scala.
الاعلان للصف
في Scala يتم تعريف الصف بكلمة class
تتبعها اسم الصف، وعادةً يبدأ اسم الصف بحرف كبير. هناك قليل من الكلمات التي تستخدم بخيار ولكن يمكن استخدامها في اعلان الصف في Scala مثل: class-name
، يجب أن يبدأ بحرف كبير: superclass
، تسمى الصف الوالد قبل الكلمة extend
: traits
، هي قائمة من الأصفار من الصف التي يتم تنفيذها بواسطة الصف قبل الكلمة extend
.
الصف يمكن في Scala توريث والد واحد فقط، ما يعني أن Scala لا تدعم التوريث المتعدد. ومع ذلك يمكن تحقيق ذلك باستخدام Traits
.
class Class_name{ وأخيراً يحيط جسم الصف في Scala باقامة الأعمدة
{}
. }
class Car { var make: String = "BMW" var model: String = "X7" var fuel: Int = 40 def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { def main(args: Array[String]) { var obj = new Car(); obj.Display(); } }
arabic
يمكنك حفظ الكود أعلاه بالاسم class.scala
وتشغيله في الطرفية كـ scala class.scala
، وسترون الناتج كما تلك أدناه。

حسنًا، الكود أعلاه لا يستفيد بالكامل من الإمتيازات التي يمكن للبرنامج الواعد التمثيلي أن يتمكن من إتاحتها. ولأن الناتج من الكود أعلاه سيعطي نفس النتيجة بغض النظر عن كم مرة تشغلها. لقد تعرّفت على المتغيرات الثابتة داخل الصنف، وستبقى قيم هذه المتغيرات ثابتة، حتى وإن كان لديك كائنات جديدة لا نهائية. وفي الختام، لا يمكنك توقعها لإعطاء تفاصيل عن سيارة Mercedes Benz أو Ferrari.
البناء في Scala
تستخدم البنائات عادة لتهيئة حالة الكائن. تحدث هذه التهيئة للكائن في وقت خلق الكائن، وتُنادي فقط مرة واحدة.
هناك نوعين من البنائات في Scala: الأساسي
و الاحضاري
. في هذا البرنامج التعليمي، ستتعلم عن البناء الأساسي (المصدر: O’Reilly).
class Class_name(Parameter_list){ // طرق، ممتلكات }
يحتوي البناء الأساسي على نفس الجسم مع الصنف، ويتم إنشاؤه تلقائيًا مع تعريف الصنف. يبدأ في تعريف الصنف ويمتد على جميع جسم الصنف. وأيضًا، عندما يوجد بناء واحد فقط في برنامج Scala، يُعرف بـ “البناء الأساسي”. يمكن للبناء الأساسي أن يكون بدون متغيرات أو مع واحد أو أكثر.
تقوم بالتالي بترجمة النص إلى اللغة العربية وإبقاء الحددات الخاصة بدون تغيير:
إذاً، دعونا نأخذ العينة السابقة، ولكن هذه المرة نضيف ميزة البناء الأساسي إليها ونرى التأثير.
أيضًا، ستتعلم هنا ميزة جديدة للفئة، أي أن الفئة يمكن أن تحتوي على عدة كائنات أو مثيلات ولكن كلاهما مستقلين من بعضهما.
// الاسم الفئة هو Car class Car(make: String, model: String, fuel: Int) { // طريقة الفئة def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { // الطريقة الرئيسية def main(args: Array[String]) { // عدة كائنات الفئة var obj1 = new Car("BMW", "X7", 40); var obj2 = new Car("Mercedes Benz", "S350D", 50); obj1.Display(); obj2.Display(); } }
دعونا نرى الناتج بسرعة:

حسنًا، أليس هذا عظيم؟ مع مساعدة البناء، تمكنت من إنتاج نتائج أكثر فعالية.
إعلان الكائنات في Scala
يمكن أيضًا تعبير إعلان الكائنات في Scala بأنه إستئناف فئة أو تنطيق فئة. تمامًا مثل الفئات، الكائنات أيضًا وحدة أساسية للبرمجة القائمة على الكائنات.
يمكن أن يتكون الكائن من ثلاثة ميزات (المصدر: GeeksforGeeks:
الحالة:
الصفات الخاصة بالكائن تمثله. يعكس أيضًا خصائص الكائن.السلوك:
طرق الكائن تمثله. يعكس أيضًا ردة الفعل الكائن مع الكائنات الأخرى.الهوية:
يعطي الاسم الفريد للكائن ويمكنها من التفاعل بين الكائنات.
plaintext
أنظر إلى الكلب كما كائن وراجع الرسم البياني أدناه للهوية والحالة والسلوك.

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

الكود أدناه مفهوم بذاته بشكل كبير؛ على مستوى عالٍ، يتم فحص إن كان محرك الدراجة الهوائية on
أو off
. في البداية، يُضع المحرك في حالة الإيقاف، وسيخطر بحالته ويقوم بتشغيله.
class Motorcycle(make:String,color:String) { var engineState: Boolean = false; def startEngine() { if (engineState == true){ println("The engine is already on."); } else { engineState = true println("The engine is now on."); } } def showAtts() { println("This motorcycle is a "+ color + " " + make); if (engineState == true){ println("The engine is on."); } else{ println("The engine is off."); } } } object Main { def main (args: Array[String]) { var m = new Motorcycle("BMW K 1600 GTL","White"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); println("------"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); } }

تهانينا!
تهانينا بإنهاء هذا التعليم.
أنت الآن تعرف كيفية إعلان الصنفات والأساليب، وتنشيط الكائنات، وتعيين صفاتهم، وإتصال بأساليب الكائن في Scala. تلك المفاهيم ستكون مفيدة لك ليس فقط في Scala بل أيضًا في لغات البرمجة الأخرى.
تمثال البرمجيات الواجهة المتكاملة مثيرة وفي الوقت نفسه قوية للغاية. تضيف مجالًا جديدًا للبرمجيات الخاصة بك، وتجعلها قابلة للتكرار. كلما زاد مجموعتك البرمجية بحجمها، ستنمو تعقيداتها. وهناك الكثير من المواد الجاذبية في مفاهيم البرمجيات الواجهة المتكاملة مثل التخصيص، التعددية الأشباه، والأدوات الحالية. وميزة قوية أخرى هي المجموعة الواحدة. تساعد مبادئ التصميم على إبقاء برمجياتك منظمة وقابلة للقراءة. لمعرفة المزيد عن الأنماط التصميمية، أعتقد أن يتم القيام بقراءة هذا الكتاب هذه الصفحة.
يرجى تخبري بأي أسئلة تتعلق بهذا التوريتال في قسم التعليقات أسفل.
وأخيرًا، لا تنسى أن تأخذ الدورة الجديدة لـ Scala على DataCamp، دورة مبادئية لـ Scala.
Source:
https://www.datacamp.com/tutorial/scala-classes-objects