المُنشئ (_init)
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 7 من 65.
يتطلب تعيين كل خاصية بعد new() عدة أسطر، ومن السهل نسيان إحداها. يهيّئ المُنشئ الكائن عند إنشائه. في GDScript، المُنشئ هو الأسلوب _init():
# book.gd
class_name Book
extends RefCounted
var title: String
var author: String
var pages: int
func _init(book_title: String, book_author: String, page_count: int) -> void:
title = book_title
author = book_author
pages = page_countتُمرَّر الوسائط التي تقدّمها إلى new() إلى _init()، والتي تعمل تلقائيًا قبل أن تُعيد new() الكائن:
var dune := Book.new("Dune", "Frank Herbert", 412)
print(dune.title) # Dune
print(dune.pages) # 412عندما تكون لـ _init() معاملات، يجب أن تمررها new(): استدعاء Book.new() دون وسيطات يُعد خطأً يُبلّغ عنه قبل تشغيل البرنامج. المعامل ذو القيمة الافتراضية اختياري:
func _init(book_title: String, book_author: String = "Unknown") -> void:باستخدام هذا المُنشئ، تنشئ Book.new("Notes") كتابًا يكون مؤلفه "Unknown".
تختلف أسماء المعلمات أعلاه عن أسماء الخصائص. لو كانت متطابقة، لكتبتَ self.title = title، كما في درس self.
التحدي
سهلأكمل الصنف Book في book.gd:
- يخزّن المُنشئ
_init(book_title, book_author, page_count)وسيطاته في الخصائصtitleوauthorوpages - تعيد
describe()القيمة'TITLE' by AUTHOR, PAGES pages، مع وضع العنوان بين علامتي اقتباس مفردتين
يقرأ الكود المزوّد عدد الكتب التالية، ثم يقرأ سطرًا لكل كتاب يحتوي على العنوان والمؤلف وعدد الصفحات، مفصولة بعلامة ;. ينشئ كل كتاب باستخدام Book.new()، ويطبع describe()، ثم يطبع إجمالي قيم الخصائص pages. بالنسبة إلى السطر Dune;Frank Herbert;412، يطبع:
'Dune' by Frank Herbert, 412 pages
Total pages: 412ضع الكود في book.gd. يحتوي main.gd على كود الإدخال والإخراج المزوّد، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال/الإخراج المُقدَّم: اتركه كما هو
var count := int(OS.read_string_from_stdin())
var total := 0
for i in count:
var parts := OS.read_string_from_stdin().split(";")
var book := Book.new(parts[0], parts[1], int(parts[2]))
print(book.describe())
total += book.pages
print("Total pages: %d" % total)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت