موهفم Class موهفم لبامم Object
موهفم Class موهفم لبامم Object
للبدء بشكل لوي و ثابت فً عالم برمجة الكائنات أو Object Oriented Programmingفنحن نحتاج إلى فهم
عدد من المواعد البسٌطة التً ستساعدنا بإذن هللا تعالى على فهم الكثٌر من األمور المتعلمة بهذا المفهوم بشكل جٌد و
لوي ،بحٌث ٌسهل أٌضا ً كل ما ٌخص هذا المفهوم من مواضٌع متمدمة بنٌت على تلن المواعد.
الماعدة األولى :كل شًء عبارة عن كائن ، Everything is an object،وهذا ٌعنً أن كل ما تنظر إلٌه من حولن
هو عبارة عن كائن ، Objectأي السٌارة ،الطٌارة ،الكمبٌوتر ،وحتى أنت كشخص تعتبر كائن .وأما الماعدة الثانٌة فتمول
:كل كائن ٌتكون من خصائص Attributesو أفعالActions.
لتوضٌح األمر ،دعنا نفرض أن لدٌنا شخص اسمه خالد كما هو موضح فً الشكل 1-1وهو عبارة عن كائن، Object
ووفما ً للمواعد السابمة ،سٌحتوي على خصائص ، AttributesوأفعالActions.
الشكل ٌ 1-1وضح شكل الكائن وٌوضح الخصائص المرتبطة به Attributesواألفعال Actionsالتً ٌموم بها
لو لمنا باستبدال كائن الشخص (خالد) هنا بأي كائن آخر ،فسنجد أن الخصائص واألفعال ستكون موجودة معه وستتغٌر
بنا ًء على نوع الكائن نفسه ،وهنا نمول أن الكائن مهما كان نوعه ،سٌتكون من خصائص و أفعال.
اآلن لو أردت شراء سٌارة ،فإنن ستسأل عن سعرها ،لونها ،وغٌرها من المواصفات التً تهمن أثناء الشراء ،وكما للنا أن
السٌارة عبارة عن كائن ،فإن سعرها ،ولونها تمثل خصائص Attributesلهذا الكائن (السٌارة) ،ولكً نوضح الممصود
باستخدام صٌغة ، name = valueأواسم الخاصٌة = لٌمتها ،الحظ كٌف نضع المواصفات فٌما ٌلً
car.color = red
car.price = 66500
نستنتج مما سبك أن colorتمثل اسم الخاصٌة ، nameوأن redتمثل لٌمة الخاصٌة ، valueونفس األمر ٌنطبك
على الخاصٌة ، priceولتأكٌد الفهم أكثر ،دعنا نمول أننا أردنا كتابة الخصائص Attributesللشخص الذي أسمٌناه
خالد ،عندها ستكون خصائصه كما هو موضح فً الشكل .2-1
تعتمد معرفة الخصائص لكائن ما على مدى معرفة الشخص الذي ٌحاول وصف ذلن الكائن من ناحٌة المعلومات التً
ٌمتلكها حول ذلن الكائن ،ومن ثم كتابتها باستخدام صٌغة name = valueكما هو موضح فً الشكل .3-1
الشكل 3-1الماعدة العامة لخصائص الكائنObject Attributes
سنتحدث هنا عن ثانً مكون من مكونات الكائن ،وهو األفعال ، Actionsولد تجدها
بإسم Behaviorو Methodsوغٌرها ،وٌمكننا المول بأنها عبارة عن األشٌاء التً ٌموم بها الكائن ،أو بكالم آخر ،هً
األشٌاء التً ٌفعلها الكائن.
لو عدنا للكائن السابك ،السؤال هنا ،ما هً األشٌاء التً ٌستطٌع أن ٌفعلها خالد؟ ،المشً ،والجري ،والتولف ،وغٌرها،
وهذه كلها أفعـــال ، Actionsوالشكل ٌ 4-1وضح لائمة ببعض األفعال.
فً مفهوم برمجة الكائنات ، OOPهنان ما ٌعرف بـ ، Classوهنان ما ٌعرف بـ ، Objectولد ٌحصل خلط لدى المتلمً
فً الفرق أو العاللة بٌنهما ،والشكل ٌ 5-1وضح األمر.
نستنتج من الشكل 5-1أن الكائن Objectعبارة عن نسخة من ، Classوهذه هً العاللة ،أي أن Classلد ننشًء
منه عدة نسخ ، Instancesوجمٌع هذه النسخ هً عبارة عن كائنات ،Objectsونستطٌع أن نستنتج أٌضا ً أن الكائن
ال ٌمكن الحصول علٌه من غٌر ، Classأي ٌبنى Classأوال ً و من ثم تصدر منه النسخ المختلفة من الكائنات.
ٌمكننا المول أن Classهو عبارة عن طرٌمة لوصف الكائنات التً ستنشأ منه ،أو أنٌ Classمثل المالب أو الشكل العام
للكائنات التً ستستنسخ منه ،ولد ٌكون مثال صنع الحلوٌات جٌدا ً فً هذا السٌاق ،فمد نموم بتصمٌم لالب على شكل نجمة،
ومن ثم نصب المادة فٌه لتنتج لنا حلوى على شكل نجمة ،هنا نمول أن المالب الذي نصب فٌه هو ، Classوأن الحلوٌات
التً تنتج على شكل نجمة هً الكائنات ،بحٌث تمثل كل حلوى على شكل نجمة كائنا ً مستمالً.
بعد هذا التوضٌح نمولٌ ،موم المبرمج غالبا ً بكتابة Classلٌصف من خالل لغة البرمجة التً ٌعمل علٌها شكل الكائنات
التً ستصدر منه ،وبعد ذلن ٌصبح Classمجرد نوع جدٌد فً تلن اللغة ، Data Typeلٌستخدم مثله مثل بمٌة األنواع
بكالم آخر ،نحن
ٍ األخرى المعرفة مسبما ً فً اللغة أو التً أتت ضمن المكتبات البرمجٌة التً أتت مع تلن اللغة،
نبنً Classلنعرف نوع بٌانات جدٌد ٌصف لنا شكل البٌانات المراد تخزٌنها فً ذلن النوع.
تدعم لغة Javaمفهوم ، Object Oriented Programmingوهذا ٌعنً أنها لغة تتعامل
بمفهوم Classesو ، Objectsولكً نعرف الكمبٌوتر بشكل كائن ما و تفاصٌله ،البد لنا من إنشاء ٌClassشرح تلن
التفاصٌل ،والكائنات التً ستنتج منه تتكون من خصائص Attributesوأفعال ، Actionsوعندما نأتً إلى
الخصائص Attributesفإنه سٌتم تمثٌلها بما ٌسمى المتغٌرات Variablesبرمجٌا ً ،وعندما نأتً إلى
األفعال Actionsفإنه سٌتم تمثٌلها كذلن برمجٌا ً بما ٌسمى الدوال FunctionsأوMethods.
لتوضٌح األمر ،دعنا نفرض أن لدٌنا ، Person Classوالذي سٌمثل شخص ما ،فإنه البد لنا من تعرٌف مجموعة
متغٌرات Variablesتمثل الخصائص Attributesمثل nameو ageوغٌرها ،وأٌضا ً البد لنا من عمل مجموعة
المول بأن نستطٌع وهنا األفعال Actionsمثل eatو sleepوغٌرها، الدوال Methodsتمثل من
من مجموعة عن عبارة هو إال هو ما النظري المفهوم الكائن Objectمن
الخصائص Attributesواألفعال ، Actionsوأن الكائن Objectمن المفهوم البرمجً هو عبارة عن مجموعة من
المتغٌرات VariablesوالدوالMethods.
الشٌفرة 1-1توضح Person Classوالذي ستنتج منه الكائنات األخرى التً تمثل أشخاصا ً بعٌنهم مثل «خالد»
سابما ً.
الحظ كٌف تم فتح األلواس من السطر 1إلى السطر ، 10ومن ثم وصف شكل الكائنات التً ستصدر من، Person
أي كأننا نمول أن كل شخص سٌحتوي على ثالثة خصائص هً nameو ageو ، genderوثالثة أفعال ٌموم بها
هً eatو sleepو ، runبعد ذلن فإن إنشاء أي كائن من النوع Personسٌحتوي على تلن األشٌاء ،وهذا هو كل ما
فً األمر بصورته البسٌطة.
تنبٌه :تم وضع الخصائص Attributesفً تعرٌف Personعلى أنها publicألغراض الشرح ،ورغم أن هذا األمر
ال مشكلة فٌه ،إال أنه ٌتعارض مع ما ٌسمى بإخفاء البٌانات.
بعد أن لمنا بإنشاء Personأصبح بإمكاننا اآلن إنشاء عدد ال نهائً من الكائنات التً تكون من النوع، Person
والشٌفرة 2-1توضح إنشاء كائن ٌمثل «خالد» الذي تحدثنا عنه سابما ً.
الحظ المتغٌر (الكائن ) khaledفً السطر ، 1وكٌف استخدمنا كلمة newإلنشاء كائن أو نسخة جدٌدة من، Person
ومن ثم لمنا بتعبئة البٌانات الخاصة بتلن النسخة التً تمثل “خالد” ،بحٌث وضعنا االسم والعمر والجنس ،وهكذا لبمٌة
الكائنات األخرى التً ستنشأ منPerson.
جمٌع الكائنات أو المتغٌرات التً سنموم بإنشائها ستتبع التفاصٌل الموجود فً تعرٌف ، Personوهذا ٌعنً أنه فً حال
لمنا بتعدٌل بعض األمور فً Person Classفإن جمٌع الكائنات Objectsالتً تم تعرٌفها فً البرنامج ستتأثر بذلن
التعدٌل ،وهذا األمر ٌعتبر مٌزة وعٌب فً نفس الولت ،فهو مٌزة فً حال أدخلت تحسٌنات على الشٌفرة البرمجٌة ،فسٌكون
األمر سرٌع ومرن ،ولد ٌكون عٌب فً حال تم تعدٌله بالخطأ فإنه لد ٌعطً نتائج غٌر متولعة على نتائج البرنامج الذي
ٌستخدمه.
تنبٌه :لغات البرمجة تختلف فً كٌفٌة إنشاء الكائنات ،فمثالً لغة Swiftال تستخدم كلمة newعند اإلنشاء ،ولس على
ذلن بمٌة اللغات فً اختالفها،وٌبمى المفهوم واحد ،وهذا هو المهم.
المصدر / http://blog.algorithmers.com/object-vs-class:
تم نسخه بواسطة Ahmed Monier
Ahmed Monier Face Book
الرجاء الدعاء