التعرف على مفهوم الكلاس class و الفائدة من التجريد في لغة سي بلس بلس C++ الدرس|24| - Programmer Tech

Programmer Tech

تعلم البرمجة - علوم الكمبيوتر - أمن المعلومات - القرصنة الأخلاقية

إعلان اعلى المقالة

الثلاثاء، 9 مارس 2021

التعرف على مفهوم الكلاس class و الفائدة من التجريد في لغة سي بلس بلس C++ الدرس|24|


مفهوم الكلاس class في C++

قبل أن نتكلم عن الكلاسات هُناك مفهوم مهم جداً يجب معرفته أولاً و هو التجريد أو ما يسمى Abstraction و يعني هو أي شيئ تم تجريده من صفاته و معنى تجريد الكلمة أي خلوها من الزوائد و يحتوي على عناوين فارغة مرتبة بشكل واضح.

 

ما هو الكلاس و فائدة التجريد

لقد تَحدَثنا سابقاً عن المتغيرات في الدروس الأولى و كانت أنواعها (int, char, double, bool, string) و قٌلنا أنه عندما نقوم بإنشاء متغير جديد فإنه يتم إنشاء مكان خاص لهذا المتغير في الذاكرة و يحمل هذا المتغير اربع خواص و هي (الإسم, القيمة, النوع, عنوان التخزين).

إذا اردنا تخزين قيمة التاريخ مثلا Mar 23 1995 في الذاكرة, فهل التاريخ يمكن التعبير عنه برقم int او double او string.

 

كيف يتم تخزين قيمة تاريخ معين في الذاكرة؟

اولاً علينا أن نعرف ما هي الخواص التي نُريد تخزينها في التاريخ, فكل تاريخ به سنة و شهر و يوم و من هنا يجب أن نعلم ما هي المتغيرات الذي يجب إنشاءها لأي تاريخ, نحتاج إذاً لثلاثة متغيرات و هي:

int year  //للسنة

int day  //لليوم

int month //للشهر

و نوع المتغير يكون عددي int, سوف نأخذ مثال لفهم هذا التاريخ اكثر.

 

الشكل العام للكلاس

class Date{

    //تعريف محتويات الكلاس

};


نٌلاحظ أنه بدأنا إسم الكلاس بحرف كبير Capital و هي من العادات الجيدة في البرمجة أن نقوم ببدأ إسم الكلاس بحرف كبير, حيث يتم تفريقه عن المتغيرات و الفنكشن, حيث إذا أردنا تعريف متغير نكتبه بالشكل date بحروف صغيرة كعادة برمجية افضل فإن غالب المبرمجين يبدأون إسم الكلاس بحرف كبير, و في نهاية القوس المعكوف وضعنا فاصلة منقوطة ; في نهاية جسم الدالة بعكس الفنكشن مثل main لا تحتاج لفاصلة بنهاية جسم الدالة.

مثال 1

#include <iostream>
using namespace std;
class Date
{
public:
  int year;
  int month;
  int day;
};
int main ()
{
  Date birthday;
  birthday.year = 1995;
  birthday.month = 3;
  birthday.day = 23;
 
  cout << birthday.day <<"/"<<birthday.month<<"/"<<birthday.year<<endl;

    return 0;
}


شرح المثال السابق 1

قُمنا بإنشاء كلاس إسمه Date أي كلاس التاريخ و كان به ثلاث متغيرات عامة و هي للسنة year و للشهر month و لليوم day هذا كان في الكلاس و دخلنا للدالة main و قمنا بتعريف هذا الكلاس على أنه تاريخ ميلاد وضعنا له الكائن birthday من اجل الوصول لمحتويات الكلاس عن طريقه و قمنا بتعيين قيمة للسنة عبر الوصول لها عن طريق الكائن و كانت قيمتها 1995 و بنفس الأمر اسندنا قيمة للشهر و اليوم, ثم قُمنا ببناء دالة طباعة cout و طلبنا أن تُطبَق لنا في البداية اليوم ثم تفصله بإشارة سلاش / ثم يطبع الشهر ثم تفصله سلاش ثم يطبع السنة و عند تشغيل هذا الكود ستكون النتيجة هي

كما لاحظنا من شاشة التنفيذ السابقةأنه طبع لنا تاريخ الميلاد مثلما طلبنا منه.


مثال 2

قم بإنشاء كلاس عام يحتوي على تاريخي ميلاد مختلفين.

#include <iostream>
using namespace std;
class Date
{
public:
    int year;
    int month;
    int day;
};
int main ()
{
    Date birthday;
    birthday.year = 1995;
    birthday.month = 3;
    birthday.day = 23;

    cout << birthday.day <<"/"<<birthday.month<<"/"<<birthday.year<<endl;

    Date birthday2;
    birthday2.year = 1994;
    birthday2.month = 2;
    birthday2.day = 22;

    cout << birthday2.day <<"/"<<birthday2.month<<"/"<<birthday2.year<<endl;


    return 0;
}


شرح المثال السابق

قُمنا بإنشاء كلاس إسمه Date أي كلاس التاريخ و كان به ثلاث متغيرات عامة و هي للسنة year و للشهر month و لليوم day هذا كان في الكلاس و دخلنا للدالة main و قمنا بتعريف هذا الكلاس على أنه تاريخ ميلاد وضعنا له الكائن birthday من اجل الوصول لمحتويات الكلاس عن طريقه و قمنا بتعيين قيمة للسنة عبر الوصول لها عن طريق الكائن و كانت قيمتها 1995 و بنفس الأمر اسندنا قيمة للشهر و اليوم, ثم قُمنا ببناء دالة طباعة cout و طلبنا أن تُطبَق لنا في البداية اليوم ثم تفصله بإشارة سلاش / ثم يطبع الشهر ثم تفصله سلاش ثم يطبع السنة, و قُمنا بإنشاء كائن آخر إسمه birthday2 لنصِل لمحتويات الكلاس كما في التاريخ الأول و عند تشغيل الكود ستكون نتيجته هي

إضغط هنا للرجوع للدرس السابق

ليست هناك تعليقات:

إرسال تعليق

facebook

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *