إعلان
دورة تطوير التطبيقات باستخدام لغة 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++ النوع class

    مفهوم الكلاس

    الكلاس عبارة عن نوع جديد يتم تعريفه بواسطة الكلمة class و هذا النوع يمكنه أن يحتوي على دوال, متغيرات, مصفوفات إلخ..

    النوع الذي تقوم بتعريفه بوسطة الكلمة class يشبه بشكل كبير النوع الذي تقوم بتعريفه بواسطة الكلمة struct التي تعرفنا عليها في الدرس السابق.
    لهذا السبب سنبدأ بذكر الفرق بينهما حتى لا ترتبك من شدة التشابه الذي ستلاحظه بينهما.

    الفرق الأساسي بين النوع الذي يتم تعريفه بواسطة الكلمة class و النوع الذي يتم تعريفه بواسطة الكلمة struct هو أن هذا الأخير يمكن الوصول لأي شيء موجود فيه بشكل مباشر, بينما في النوع class أنت تحدد ما إن كان يمكن الوصول للأشياء التي تضعها فيه بشكل مباشر أم لا.

    إمكانية تحديد الطريقة التي يمكن فيها الوصول للأشياء الموجودة في الكلاس تمكننا من تطبيق كل مبادئ البرمجة الكائنية ( OOP ) المتعارف عليها.
    لهذا سنركز بشكل كبير في الدروس القادمة على التعامل مع الكلاس بشكل خاص.

    تعريف كلاس

    لتعريف كلاس جديد نكتب الكلمة class ثم نعطيه إسم, ثم نفتح أقواس تحدد بدايته و نهايته.


    المثال التالي يوضح طريقة تعريف كلاس فارغ إسمه Book.

    مثال

    class Book {
    	// هنا يمكنك تعريف كل ما سيحتويه الكلاس
    };
    		

    معلومة تقنية

    في المشاريع الحقيقية, أي كلاس جديد نريد تعريفه نقوم في العادة بإنشاء ملف نوعه cpp خاص له و نضع الكود الخاص به بداخله.
    بعدها في أي مكان نريد أن نتعامل معه نقوم بتضمين الملف الذي يحتويه.
    الآن, بهدف جعل الشرح بسيط و سهل الفهم سنكتب الكود كله بداخل نفس الملف و في آخر الدرس سنعلمك كيف تنشئ الكلاس في ملف خاص أيضاً.

    مفهوم الخصائص

    الخصائص ( Attributes ) هي الأشياء (المتغيرات, المصفوفات و الكائنات) التي يتم تعريفها بداخل الكلاس و التي سيملك نسخة خاصة منها أي كائن ننشئه منه.

    أي شيء تنوي تعريفه في الكلاس لا بدل لك من تحديد كيفية الوصول إليه كما قلنا سابقاً.
    لتحدد كيفية الوصول للأشياء التي تضعها في الكلاس يمكنك استخدام الكلمات المخصصة لذلك و التي يقال لها Access Specifiers, أي الكلمات التالية.

    الكلمة إستخدامها
    public تستخدم لتحديد أن الأشياء الموضوعة في الكلاس يمكن الوصول لها من أي مكان.
    private تستخدم لتحديد أن الأشياء الموضوعة في الكلاس لا يمكن الوصول لها من خارجه.
    protected تستخدم لتحديد أن الأشياء الموضوعة في الكلاس يمكن الوصول لها عند وراثتها.
    ملاحظة: سنتعلم الوراثة في دروس لاحقة.

    ملاحظة

    ستعرف متى يجب أن نستخدم الكلمتين private و protected بشكل عملي في دروس لاحقة و لكن الآن يكفي أن تعرف أنها من الخيارات المتاحة في C++ و معرفة كيف يمكن وضعها بداخل الكلاس.


    المثال التالي يوضح طريقة وضع الكلمات public و private و protected في الكلاس.

    المثال الأول

    class Book {
    	
    	public:
    		// public هنا أي شيء نقوم بتعريفه يعتبر أنه
    		
    	private:
    		// private هنا أي شيء نقوم بتعريفه يعتبر أنه
    		
    	protected:
    		// protected هنا أي شيء نقوم بتعريفه يعتبر أنه
    	
    };
    		

    في المثال التالي قمنا بتعريف كلاس إسمه Book و بداخله قمنا بتعريف 4 متغيرات نوعهم public.
    ملاحظة: لم نضع الكلمتين private و protected في الكلاس لأننا لم نحتاجهم.

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

    class Book {
    	
    	public:
    		string title;
    		string author;
    		double price;
    		int numberOfPages;
    	
    };
    		

    إنشاء كائن من كلاس و إعطاؤه قيم

    إنشاء كائن من كلاس أمر بغاية السهولة, فكل ما عليك فعله هو اعتماد نفس الطريقة التي تعتمدها لإنشاء متغير عادي.
    و بالنسبة للوصول للأشياء التي يملكها الكائن, فيمكنك الوصول لأي شيء موجود فيه طالما أن نوعه public من خلال كتابة إسم الكائن ثم وضع نقطة ثم وضع إسم الشيء الذي تريد الوصول إليه.


    في المثال التالي قمنا بتعريف كلاس إسمه Book و بداخله قمنا بتعريف 4 متغيرات نوعهم public.
    بعدها قمنا بإنشاء كائنين منه و إعطاء قيم للمتغيرات الموجودة فيهما.

    مثال

    main.cpp
    #include <iostream>
    
    using namespace std;
    
    // يحتوي على 4 متغيرات Book هنا قمنا بتعريف كلاس إسمه
    class Book {
    	
    	public:
    		string title;
    		string author;
    		double price;
    		int numberOfPages;
    
    };
    
    int main()
    {
    	// book2 و الثاني إسمه book1 الأول إسمه ,Book هنا قمنا بتعريف كائنين من
        Book book1;
        Book book2;
    
    	// book1 هنا قمنا بإعطاء قيم لمتغيرات الكائن
        book1.title = "C++ for beginners";
        book1.author = "Mhamad Harmush";
        book1.price = 9.99;
        book1.numberOfPages = 420;
    
    	// book2 هنا قمنا بإعطاء قيم لمتغيرات الكائن
        book2.title = "Network 1";
        book2.author = "Nadine Masri";
        book2.price = 22.49;
        book2.numberOfPages = 310;
    
    	// book1 هنا قمنا بعرض قيم الكائن
        cout << "Book 1 ----------- \n";
        cout << "Title: " << book1.title << "\n";
        cout << "Author: " << book1.author << "\n";
        cout << "Price: " << book1.price << "$\n";
        cout << "Number of pages: " << book1.numberOfPages << "\n\n";
    
    	// book2 هنا قمنا بعرض قيم الكائن
        cout << "Book 2 ----------- \n";
        cout << "Title: " << book2.title << "\n";
        cout << "Author: " << book2.author << "\n";
        cout << "Price: " << book2.price << "$\n";
        cout << "Number of pages: " << book2.numberOfPages;
    
        return 0;
    }
    		

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

    Book 1 -----------
    Title: C++ for beginners
    Author: Mhamad Harmush
    Price: 9.99$
    Number of pages: 420
    
    Book 2 -----------
    Title: Network 1
    Author: Nadine Masri
    Price: 22.49$
    Number of pages: 310
    		

    مفاهيم مهمة حول الكلاسات


    المفهوم الأول

    هنا وضعنا مثالين حول كيفية تعريف دالة بداخل كلاس ( Member Function ) بالإضافة إلى كيفية إستدعاءها منه.

    شاهد الأمثلة »



    المفهوم الثاني

    هنا وضعنا مثال حول كيفية تعريف دالة تأخذ باراميتر عبارة كائن ( Object Parameter ) من كلاس بالإضافة إلى كيفية إستدعاءها.

    شاهد المثال »



    المفهوم الثالث

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

    شاهد الأمثلة »



    المفهوم الرابع

    الكونستركتور ( Constructor ) عبارة عن دالة مميزة يتم استدعاؤها بشكل تلقائي عند إنشاء كائن من الكلاس.
    هذه الدالة تجعلك قادر على تمرير قيم أولية للكائن بشكل مباشر له لحظة إنشائه.

    شاهد الأمثلة »



    المفهوم الخامس

    الدستركتور ( Destructor ) عبارة عن دالة مميزة يتم استدعاؤها بشكل تلقائي عندما يتم مسح الكائن من الذاكرة.
    هذه الدالة تجعلك قادر على فعل أي عملية تريدها بشكل مباشر قبل أن يتم حذف الكائن من الذاكرة.

    شاهد الأمثلة »



    المفهوم السادس

    الدالة الصديقة ( Friend Function ) عبارة عن دالة يمكنها الوصول لأي شيء يمكله الكائن حتى إن كان في الكلاس نوعه private أو protected.

    شاهد الأمثلة »



    المفهوم السابع

    هنا وضعنا مثال حول كيفية تعريف دالة تأخذ باراميتر نوعه مؤشر لكائن من كلاس ( Pointer to class ) بالإضافة إلى كيفية إستدعاءها.

    شاهد المثال »



    المفهوم الثامن

    الأشياء المشتركة ( Static Members ) عبارة عن أي شيء يتم تعريفه في الكلاس بشكل يكون موّحداً بالنسبة لجميع الكائنات التي يتم إنشاءها منه.

    شاهد المثال »

    إعلان

    Eqla3Tech.com

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

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

    الدورات

    أدوات مساعدة

    الأقسام

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