ماهو الكونستركتر ؟.. Constructor.. وأنواعة
ما هو الكونستركتر
CONSTRUCTOR هو طريقة خاصة لفئة أو بنية معينة في البرمجة، وتستخدم لتهيئة كائن تم إنشاؤه حديثا، حيث يتم استدعاء الكونستركتر تلقائيا عند إنشاء الكائن، ويشبه بطريقة المثيل التي عادة ما يكون لها نفس اسم الفئة، وتستخدم لتعيين قيم أعضاء الكائن، ويمكن أن تكون القيم الافتراضية أو القيم المعرفة من قبل المستخدم، ولا يمكن اعتبار الكونستركتر طريقة مناسبة لأنه لا يحتوي على نوع الإرجاع، وبدلا من ذلك يقوم بتهيئة الكائن بدلا من تنفيذ مهمة عن طريق تنفيذ تعليمات برمجية محددة، ولا يمكن أن يكون ثابتا أو مجردا أو متزامنا.
يتمثل تعريف الكونستركتر في كونه نوعا خاصا من الوظائف التي لا تعيد قيمة، ويجب أن يحمل نفس اسم الفئة، وتحديد الطريقة داخل الفئة، ويمكن تعريفه داخل الفئة، ويتم استدعاؤه تلقائيا عندما ننشئ كائنا من الفئة، ولا يمكن استدعاؤه بشكل صريح ومباشر.
ما هو الكونستركتر في البايثون
الكونستركتر هو طريقة تستدعى عند إنشاء كائن، وتعرف في فئة معينة وتستخدم لتهيئة المتغيرات الأساسية. إذا قام المستخدم بإنشاء أربعة كائنات، سيتم استدعاء كونستركتر الفئة أربع مرات، حيث لكل فئة كونستركتر خاص بها. في كل مرة يتم فيها إنشاء كائن، يتم استدعاء الكونستركتر، ويسمى هذا الأسلوب بالكونستركتر. يتم إنشاء الكونستركتر باستخدام التابع init وتحتوي على الكلمة الأساسية الذاتية التي تشير إلى الكائن. يتم تنفيذ العملية على النحو التالي
بجانب المتغير الرئيسي في البرمجة، يمكن أن يحتوي الكائن على متغيرين آخرين، الساق واليد. وفي بعض الأحيان، يتم استخدام المتغيرات كخصائص لتسمية المتغيرات في سياق البرمجة، حيث يتم إنشاء كائن واحد وتهيئة متغيراته عن طريقه.
شرح constructors في c++
إن أهم شيء من الممكن أن يتم التفكير به عندما يتم إنشاء كلاس جديد في لغة البرمجة c++ هو العمل على تسهيل طريقة إنشاء الكائنات من هذا الكلاس، ومن هذه النقطة تم الانطلاق والبدء بفكرة الكونستركتور، وهو عبارة عن دالة، يتم استدعاء هذه الدالة عندما يتم إنشاء كائن من الكلاس حتى يعطي قيمة أولية للخصائص المتواجدة فيه.
يجب أن نلاحظ أن أي صنف يتم تعريفه يجب أن يحتوي على كونستركتور افتراضي خاص به، حتى إذا لم يتم تعريفه بشكل صريح. فلا يمكن إنشاء أي كائن من الصنف إلا عن طريق استدعاء الكونستركتور المرتبط بهذا الصنف. لذلك، يجب أن تعلم أن مترجم لغة C++ سينشئ كونستركتور افتراضي فارغ إذا لم يتم تعريف كونستركتور خاص في الصنف. وهناك بعض النقاط الهامة المتعلقة بالكونستركتور في لغة C++
- يحتوي كل كلاس في لغة C++ على كونستركتور خاص به، وعندما لا يتمتعريف كونستركتور خاص به، يقوم المترجم بإعطاء الكلاس كونستركتور افتراضي، وكل كلاس يحتوي على كونستركتور واحد على الأقل.
- عند إنشاء كائن جديد من الفئة، يجب استدعاء كونستركتور من الفئة لإنشاء الكائن.
- يجب اتباع قاعدة أساسية عند إنشاء كائن، وهي أن يحمل الكونستركتور نفس اسم الكلاس ويكون نوعه عام .
- إذا تم تعريف دالة البناء في لغة C++، فإن المترجم لن ينشئ بناء افتراضي واحد.
- يمكن للمبرمج تعريف أكثر من كونستركتور، ويمكن كذلك إنشاء كونستركتور فارغ واستخدامه إذا لم يتم تحديد القيم الأولية للخصائص عند إنشاء الكائن.
يتم استدعاء الكونستركتور في لغة البرمجة c++ بتمرير قيمة لكل باراميتر من خلال وضع قوسين بعد اسم الكائن، وتتم عملية تمرير القيم في هذه القوسين.
أنواع ال constructor
إن هناك عدة أنواع للكونستركتور في لغة البرمجة c++تتجلى في:
- Default Constructor وهو المنشئ الافتراضي
- Parameterized Constructor وهو المنشئ ذو معلمات
- Copy Constructor وهو المنشئ النسخ
- Static Constructor وهو منشئ ثابت
- Private Constructor وهو منشئ خاص
سنقوم بشرح كل نوع من هذه الأنواع على حدة، وستظهر التفاصيل في:
يمكن إنشاء منشئ افتراضي في C# compiler دون تحديد أي معلمة، وسيتم استخدامه في حالة عدم وجود منشئ افتراضي داخل الفئة، ويمكن تحديد المنشئ الافتراضي أيضا باستخدام بعض الرموز، وسنوضح ذلك من خلال المثال التالي
في هذا المثال، نجد أنه تم تعريف فئة واحدة تسمى Adminclass، بالإضافة إلى وجود منشئ افتراضي واحد يحمل نفس اسم الفئة. تم استخدام المنشئ الافتراضي لتعيين قيمة للخصائص الخاصة بالفئة. يتم استدعاء هذا المنشئ تلقائيا عند إنشاء كائن من هذه الفئة. يتم إنشاء المنشئ الافتراضي بواسطة الترجمة عند إنشاء منشئ داخل الفئة، ولا يأخذ أي معلمات.
المنشئ الذي يحتوي على معلمات محددة، حيث يتم إنشاؤه بواسطة المطور ويتطلب هذا النوع من المنشئ وجود معلمة واحدة على الأقل.
في هذا المثال، نجد أنه تم تعريف فئة واحدة تسمى Adminclass ولديها منشئ يتألف من معلمتين. تم استخدام هذا النوع من المنشئ أو الكونستركتور لتعيين قيم لخصائص الفئة الخاصة به. يتم استدعاء هذا المنشئ أو الكونستركتور تلقائيا عند إنشاء كائن من هذه الفئة. بالتالي، يمكننا استنتاج أن هذا النوع من الكونستركتور يتم إنشاؤه بواسطة المطور ولا يقوم المترجم بإنشاء أي كونستركتور يحتوي على معلمات. يتطلب هذا النوع المنشئ معلمة واحدة على الأقل ويتم استدعاؤه عند إنشاء كائن من الفئة.
– المنشئ الثابت هو المنشئ الذي يستخدم لتهيئة الأعضاء الثابتة، حيث يمكنه الوصول إلى الأعضاء غير الثابتة، وينفذ بواسطة الـ Static، ولا يمكننا تحديد وقت تنفيذ هذا المنشئ ولا يتم تنفيذه عبر كائن الفئة.
يتم استخدام المنشئ الخاص (Private Constructor) لتقييد إنشاء مثيل ووراثة الفئة، ويتم استخدام المنشئ الخاص عندما يحتوي الفصل على عضوين ثابتين فقط.
أما أنواع الكونستركتور في لغة الجافا تتجلى في :
- المنشئ الافتراضي Default Constructor هو منشئ تلقائي يتم إضافته من قبل مترجم جافا في التعليمات البرمجية الخاصة بشكل افتراضي، ولن يتم العثور عليه في ملف الشفرة البرمجية لأنه يتم إدراجه في الكود أثناء التجميع.
- تنشئ no-arg constructor هذا المنشئ بدون وسيطات، وقد يحتوي الجسم على أي رمز يعاكس المنشئ الافتراضي الذي يكون جسمه فارغا.
- المنشئ هو طريقة إنشاء الكائن التي تحتوي على معلمات، وتحتاج إلى معرف واسم لكل معلمة. عند إنشاء كائنين obj1 و obj2 باستخدام هذا المنشئ، يجب تمرير وسيطين لاستدعاء هذا المنشئ بعد إنشاء obj1 و obj2.