إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    C++ التفرقة بين باراميترات الدوال و خصائص الكلاس

    العامل this-> يقال له This Pointer, و هم يستخدم للتفرقة بين باراميترات الدوال و الخصائص الموجودة في الكلاس مما يجعلك قادر على وضع نفس الأسماء للبارميترات و الخصائص و تجنب حدوث أي أخطاء منطقية بسبب الأسماء المتشابهة.

    الآن, سنضع لك عدة أمثلة حتى تلاحظ الأخطاء المنطقية التي قد تقع فيها بسبب الأسماء المتشابهة و كيف أن العامل this-> يحل لك هذه المشكلة.


    في المثال التالي, قمنا بتعريف كلاس إسمه Book يمثل المعلومات التي يمكن أن يتضمنها أي كتاب كعنوانه, إسم المؤلف, سعره و عدد صفحاته.
    في الكلاس Book بتعريف دالة إسمها setTitle() عند استدعاءها نمرر لها نص فيتم وضعه كعنوان للكائن الذي قام باستدعائها.

    المثال الأول

    main.cpp
    #include <iostream>
    
    using namespace std;
    
    // يحتوي على 4 متغيرات Book هنا قمنا بتعريف كلاس إسمه
    class Book {
    
    public:
    	// هنا قمنا بتعريف خصائص الكلاس
    	string title;
    	string author;
    	double price;
    	int numberOfPages;
    	
    	// Book عند استدعاءها من أي كائن ننشئه من setTitle هنا قمنا بتعريف دالة إسمها
    	// الذي يملكه الكائن title فتقوم بوضعها كقيمة للمتغير t نمرر لها قيمة مكان الباراميتر 
    	void setTitle(string t)
    	{
    		title = t;
    	}
    };
    
    
    // main() هنا قمنا بتعريف الدالة
    int main()
    {
    	// book إسمه Book هنا قمنا بتعريف كائن من
        Book book;
    
    	// book الخاص بالكائن title و تمرير نص لها حتى تقوم بتخزينه في المتغير book من الكائن setTitle() هنا قمنا باستدعاء الدالة
    	book.setTitle("C++ for beginners");
    	
    	// للتأكد ما إن كانت قد تغيرت أم لا book الموجود في الكائن title هنا قمنا بطباعة قيمة المتغير
    	cout << "Title: " << book.title;
    	
        return 0;
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    Title: C++ for beginners
    		


    في حال قمنا بإعادة المثال السابق مع إجراء تعديل بسيط عليه بحيث نجعل إسم الباراميتر الموضوع في الدالة setTitle() هو نفسه إسم المتغير title الموجود في الكلاس سيظهر لنا مشكلة منطقية عند تشغيل البرنامج كما سنرى في نتيجة التشغيل.

    المثال الثاني

    main.cpp
    #include <iostream>
    
    using namespace std;
    
    // يحتوي على 4 متغيرات Book هنا قمنا بتعريف كلاس إسمه
    class Book {
    
    public:
    	// هنا قمنا بتعريف خصائص الكلاس
    	string title;
    	string author;
    	double price;
    	int numberOfPages;
    	
    	// title نمرر لها قيمة مكان الباراميتر  Book عند استدعاءها من أي كائن ننشئه من setTitle هنا قمنا بتعريف دالة إسمها
    	void setTitle(string title)
    	{
    		// الموجود في الكلاس title بداخله من جديد. أي لن يتم تمريرها للمتغير title هنا كأننا قلنا, أعد وضع القيمة التي نمررها للباراميتر
    		// لأنهما يملكان نفس الإسم title سبب هذه المشكلة أن المترجم لن يعرف أنك تقصد أنك تريد تمرير القيمة التي تمررها للدالة, إلى المتغير
    		title = title;
    	}
    };
    
    
    // main() هنا قمنا بتعريف الدالة
    int main()
    {
    	// book إسمه Book هنا قمنا بتعريف كائن من
        Book book;
    
    	// book الخاص بالكائن title و تمرير نص لها حتى تقوم بتخزينه في المتغير book من الكائن setTitle() هنا قمنا باستدعاء الدالة
    	book.setTitle("C++ for beginners");
    	
    	// للتأكد ما إن كانت قد تغيرت أم لا book الموجود في الكائن title هنا قمنا بطباعة قيمة المتغير
    	cout << "Title: " << book.title;
    	
        return 0;
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.
    لاحظ أن القيمة التي مررناها للدالة setTitle() لم يتم تمريرها للمتغير title الموجود في الكائن book و هذا ما كنا نقصده بخطأ منطقي.

    Title:
    		


    لحل المشكلة المنطقة التي شاهدناها في المثال الثاني, أي لجعل المترجم قادر على التفرقة بين البارميترات و المتغيرات الموجودة في الكلاس سنستخدم العامل this-> كلما أردنا الإشارة إلى المتغيرات الموجودة في الكلاس.

    المثال الثالث

    main.cpp
    #include <iostream>
    
    using namespace std;
    
    // يحتوي على 4 متغيرات Book هنا قمنا بتعريف كلاس إسمه
    class Book {
    
    public:
    	// هنا قمنا بتعريف خصائص الكلاس
    	string title;
    	string author;
    	double price;
    	int numberOfPages;
    	
    	// Book عند استدعاءها من أي كائن ننشئه من setTitle هنا قمنا بتعريف دالة إسمها
    	// الذي يملكه الكائن title فتقوم بوضعها كقيمة للمتغير title نمرر لها قيمة مكان الباراميتر 
    	void setTitle(string title)
    	{
    		this->title = title;
    	}
    };
    
    
    // main() هنا قمنا بتعريف الدالة
    int main()
    {
    	// book إسمه Book هنا قمنا بتعريف كائن من
        Book book;
    
    	// book الخاص بالكائن title و تمرير نص لها حتى تقوم بتخزينه في المتغير book من الكائن setTitle() هنا قمنا باستدعاء الدالة
    	book.setTitle("C++ for beginners");
    	
    	// للتأكد ما إن كانت قد تغيرت أم لا book الموجود في الكائن title هنا قمنا بطباعة قيمة المتغير
    	cout << "Title: " << book.title;
    	
        return 0;
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    Title: C++ for beginners
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب