0% found this document useful (0 votes)
15 views6 pages

موهفم Class موهفم لبامم Object

تتناول الوثيقة مفهوم البرمجة الكائنية (OOP) من خلال توضيح الفرق بين الكائن (Object) والفئة (Class)، حيث يُعتبر كل شيء كائنًا يتكون من خصائص (Attributes) وأفعال (Actions). يتمثل الكائن كنسخة من الفئة، والفئة هي وصف عام للكائنات التي يمكن إنشاؤها. كما توضح الوثيقة كيفية تمثيل الخصائص والأفعال برمجيًا باستخدام لغات البرمجة مثل Java.

Uploaded by

Abdulrahman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views6 pages

موهفم Class موهفم لبامم Object

تتناول الوثيقة مفهوم البرمجة الكائنية (OOP) من خلال توضيح الفرق بين الكائن (Object) والفئة (Class)، حيث يُعتبر كل شيء كائنًا يتكون من خصائص (Attributes) وأفعال (Actions). يتمثل الكائن كنسخة من الفئة، والفئة هي وصف عام للكائنات التي يمكن إنشاؤها. كما توضح الوثيقة كيفية تمثيل الخصائص والأفعال برمجيًا باستخدام لغات البرمجة مثل Java.

Uploaded by

Abdulrahman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

‫مفهوم ‪ Class‬ممابل مفهوم‪Object‬‬

‫للبدء بشكل لوي و ثابت فً عالم برمجة الكائنات أو ‪ Object Oriented Programming‬فنحن نحتاج إلى فهم‬
‫عدد من المواعد البسٌطة التً ستساعدنا بإذن هللا تعالى على فهم الكثٌر من األمور المتعلمة بهذا المفهوم بشكل جٌد و‬
‫لوي‪ ،‬بحٌث ٌسهل أٌضا ً كل ما ٌخص هذا المفهوم من مواضٌع متمدمة بنٌت على تلن المواعد‪.‬‬

‫الماعدة األولى ‪ :‬كل شًء عبارة عن كائن‪ ، Everything is an object،‬وهذا ٌعنً أن كل ما تنظر إلٌه من حولن‬
‫هو عبارة عن كائن‪ ، Object‬أي السٌارة‪ ،‬الطٌارة‪ ،‬الكمبٌوتر‪ ،‬وحتى أنت كشخص تعتبر كائن ‪.‬وأما الماعدة الثانٌة فتمول‬
‫‪:‬كل كائن ٌتكون من خصائص ‪ Attributes‬و أفعال‪Actions.‬‬

‫لتوضٌح األمر‪ ،‬دعنا نفرض أن لدٌنا شخص اسمه خالد كما هو موضح فً الشكل ‪ 1-1‬وهو عبارة عن كائن‪، Object‬‬
‫ووفما ً للمواعد السابمة‪ ،‬سٌحتوي على خصائص‪ ، Attributes‬وأفعال‪Actions.‬‬

‫الشكل ‪ٌ 1-1‬وضح شكل الكائن وٌوضح الخصائص المرتبطة به ‪ Attributes‬واألفعال ‪ Actions‬التً ٌموم بها‬

‫لو لمنا باستبدال كائن الشخص (خالد) هنا بأي كائن آخر‪ ،‬فسنجد أن الخصائص واألفعال ستكون موجودة معه وستتغٌر‬
‫بنا ًء على نوع الكائن نفسه‪ ،‬وهنا نمول أن الكائن مهما كان نوعه‪ ،‬سٌتكون من خصائص و أفعال‪.‬‬

‫خصائص الكائن‪Object Attributes‬‬


‫تعلمنا مما سبك‪ ،‬أن كل شًء عبارة عن كائن‪ ،‬وأن كل كائن ٌتكون من خصائص‪ Attributes‬وأفعال‪ ، Actions‬وبنا ًء‬
‫علٌه‪ ،‬سنموم بالتفصٌل فً أول مكون من مكونات الكائن‪ ،‬وهو الخصائص ‪ Attributes.‬وٌمكننا المول بأنها عبارة عن‬
‫مواصفات الكائن‪ ،‬بكالم آخر‪ ،‬الخصائص ‪Attributes‬هً األشٌاء التً تأتً على صٌغة‪ ، name = value‬ماذا ٌعنً‬
‫هذا الكالم؟‪.‬‬

‫اآلن لو أردت شراء سٌارة‪ ،‬فإنن ستسأل عن سعرها‪ ،‬لونها‪ ،‬وغٌرها من المواصفات التً تهمن أثناء الشراء‪ ،‬وكما للنا أن‬
‫السٌارة عبارة عن كائن‪ ،‬فإن سعرها‪ ،‬ولونها تمثل خصائص ‪ Attributes‬لهذا الكائن (السٌارة)‪ ،‬ولكً نوضح الممصود‬
‫باستخدام صٌغة‪ ، name = value‬أواسم الخاصٌة = لٌمتها‪ ،‬الحظ كٌف نضع المواصفات فٌما ٌلً‬

‫‪car.color = red‬‬
‫‪car.price = 66500‬‬

‫نستنتج مما سبك أن ‪ color‬تمثل اسم الخاصٌة‪ ، name‬وأن ‪ red‬تمثل لٌمة الخاصٌة‪ ، value‬ونفس األمر ٌنطبك‬
‫على الخاصٌة‪ ، price‬ولتأكٌد الفهم أكثر‪ ،‬دعنا نمول أننا أردنا كتابة الخصائص ‪ Attributes‬للشخص الذي أسمٌناه‬
‫خالد‪ ،‬عندها ستكون خصائصه كما هو موضح فً الشكل ‪.2-1‬‬

‫الشكل ‪ 2-1‬لائمة بخصائص ‪ Attributes‬الكائن الذي ٌمثل شخص اسمه خالد‬

‫تعتمد معرفة الخصائص لكائن ما على مدى معرفة الشخص الذي ٌحاول وصف ذلن الكائن من ناحٌة المعلومات التً‬
‫ٌمتلكها حول ذلن الكائن‪ ،‬ومن ثم كتابتها باستخدام صٌغة ‪ name = value‬كما هو موضح فً الشكل ‪.3-1‬‬
‫الشكل ‪ 3-1‬الماعدة العامة لخصائص الكائن‪Object Attributes‬‬

‫أفعال الكائن‪Object Actions‬‬

‫سنتحدث هنا عن ثانً مكون من مكونات الكائن‪ ،‬وهو األفعال‪ ، Actions‬ولد تجدها‬
‫بإسم ‪Behavior‬و ‪ Methods‬وغٌرها‪ ،‬وٌمكننا المول بأنها عبارة عن األشٌاء التً ٌموم بها الكائن‪ ،‬أو بكالم آخر‪ ،‬هً‬
‫األشٌاء التً ٌفعلها الكائن‪.‬‬

‫لو عدنا للكائن السابك‪ ،‬السؤال هنا‪ ،‬ما هً األشٌاء التً ٌستطٌع أن ٌفعلها خالد؟‪ ،‬المشً‪ ،‬والجري‪ ،‬والتولف‪ ،‬وغٌرها‪،‬‬
‫وهذه كلها أفعـــال‪ ، Actions‬والشكل ‪ٌ 4-1‬وضح لائمة ببعض األفعال‪.‬‬

‫الشكل ‪ 4-1‬لائمة ببعض األفعال ‪ Actions‬التً ٌمكن لخالد المٌام بها‬


‫ٌظهر لنا هنا جلٌا ً أن مفهوم األفعال هو مفهوم بسٌط للغاٌة‪ ،‬كوننا نموم بكل تلن األشٌاء بشكل ٌومً تمرٌباً‪ ،‬و لد تم ذكرها‬
‫على سبٌل المثال ال الحصر كون الشخص ٌستطٌع المٌام بالكثٌر من األفعال‪ ،‬ولس على ذلن لبمٌة الكائنات من األنواع‬
‫األخرى‪.‬‬

‫‪Class‬و ‪ Object‬والعاللة بٌنهما‬

‫فً مفهوم برمجة الكائنات‪ ، OOP‬هنان ما ٌعرف بـ‪ ، Class‬وهنان ما ٌعرف بـ‪ ، Object‬ولد ٌحصل خلط لدى المتلمً‬
‫فً الفرق أو العاللة بٌنهما‪ ،‬والشكل ‪ٌ 5-1‬وضح األمر‪.‬‬

‫الشكل ‪ 5-1‬شكل ٌوضح العاللة بٌن ‪ Class‬و الكائنات المستخرجة منه‪Objects‬‬

‫نستنتج من الشكل ‪ 5-1‬أن الكائن ‪ Object‬عبارة عن نسخة من‪ ، Class‬وهذه هً العاللة‪ ،‬أي أن ‪Class‬لد ننشًء‬
‫منه عدة نسخ‪ ، Instances‬وجمٌع هذه النسخ هً عبارة عن كائنات‪ ،Objects‬ونستطٌع أن نستنتج أٌضا ً أن الكائن‬
‫ال ٌمكن الحصول علٌه من غٌر‪ ، Class‬أي ٌبنى ‪ Class‬أوال ً و من ثم تصدر منه النسخ المختلفة من الكائنات‪.‬‬
‫ٌمكننا المول أن ‪ Class‬هو عبارة عن طرٌمة لوصف الكائنات التً ستنشأ منه‪ ،‬أو أن‪ٌ Class‬مثل المالب أو الشكل العام‬
‫للكائنات التً ستستنسخ منه‪ ،‬ولد ٌكون مثال صنع الحلوٌات جٌدا ً فً هذا السٌاق‪ ،‬فمد نموم بتصمٌم لالب على شكل نجمة‪،‬‬
‫ومن ثم نصب المادة فٌه لتنتج لنا حلوى على شكل نجمة‪ ،‬هنا نمول أن المالب الذي نصب فٌه هو‪ ، Class‬وأن الحلوٌات‬
‫التً تنتج على شكل نجمة هً الكائنات‪ ،‬بحٌث تمثل كل حلوى على شكل نجمة كائنا ً مستمالً‪.‬‬

‫بعد هذا التوضٌح نمول‪ٌ ،‬موم المبرمج غالبا ً بكتابة ‪ Class‬لٌصف من خالل لغة البرمجة التً ٌعمل علٌها شكل الكائنات‬
‫التً ستصدر منه‪ ،‬وبعد ذلن ٌصبح ‪ Class‬مجرد نوع جدٌد فً تلن اللغة‪ ، Data Type‬لٌستخدم مثله مثل بمٌة األنواع‬
‫بكالم آخر‪ ،‬نحن‬
‫ٍ‬ ‫األخرى المعرفة مسبما ً فً اللغة أو التً أتت ضمن المكتبات البرمجٌة التً أتت مع تلن اللغة‪،‬‬
‫نبنً ‪ Class‬لنعرف نوع بٌانات جدٌد ٌصف لنا شكل البٌانات المراد تخزٌنها فً ذلن النوع‪.‬‬

‫التمثٌل البرمجً لكل من ‪ Class‬و‪Object‬‬

‫تدعم لغة ‪ 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‬والذي ستنتج منه الكائنات األخرى التً تمثل أشخاصا ً بعٌنهم مثل «خالد»‬
‫سابما ً‪.‬‬

‫{ ‪class Person‬‬ ‫‪.1‬‬


‫‪.2‬‬
‫;‪public String name‬‬ ‫‪.3‬‬
‫;‪public int age‬‬ ‫‪.4‬‬
‫;‪public boolean gender‬‬ ‫‪.5‬‬
‫‪.6‬‬
‫}‪public void eat() {...‬‬ ‫‪.7‬‬
‫}‪public void sleep() {...‬‬ ‫‪.8‬‬
‫}‪public void run() {...‬‬ ‫‪.9‬‬
‫}‬ ‫‪.10‬‬
‫الشٌفرة ‪ 1-1‬شٌفرة برمجٌة توضح ‪ Person Class‬مكتوب بلغة‪Java‬‬

‫الحظ كٌف تم فتح األلواس من السطر ‪ 1‬إلى السطر‪ ، 10‬ومن ثم وصف شكل الكائنات التً ستصدر من‪، Person‬‬
‫أي كأننا نمول أن كل شخص سٌحتوي على ثالثة خصائص هً‪ name‬و ‪ age‬و‪ ، gender‬وثالثة أفعال ٌموم بها‬
‫هً ‪ eat‬و ‪ sleep‬و‪ ، run‬بعد ذلن فإن إنشاء أي كائن من النوع ‪ Person‬سٌحتوي على تلن األشٌاء‪ ،‬وهذا هو كل ما‬
‫فً األمر بصورته البسٌطة‪.‬‬
‫تنبٌه ‪ :‬تم وضع الخصائص ‪ Attributes‬فً تعرٌف ‪ Person‬على أنها‪ public‬ألغراض الشرح‪ ،‬ورغم أن هذا األمر‬
‫ال مشكلة فٌه‪ ،‬إال أنه ٌتعارض مع ما ٌسمى بإخفاء البٌانات‪.‬‬
‫بعد أن لمنا بإنشاء ‪ Person‬أصبح بإمكاننا اآلن إنشاء عدد ال نهائً من الكائنات التً تكون من النوع‪، Person‬‬
‫والشٌفرة ‪ 2-1‬توضح إنشاء كائن ٌمثل «خالد» الذي تحدثنا عنه سابما ً‪.‬‬

‫;)(‪Person khaled = new Person‬‬ ‫‪.1‬‬


‫;”‪khaled.name = “Khaled‬‬ ‫‪.2‬‬
‫;‪khaled.age = 25‬‬ ‫‪.3‬‬
‫;‪khaled.gender = true‬‬ ‫‪.4‬‬
‫الشٌفرة ‪ 2-1‬شٌفرة برمجٌة توضح إنشاء كائن أو متغٌر من‪Person Class‬‬

‫الحظ المتغٌر (الكائن ‪) khaled‬فً السطر‪ ، 1‬وكٌف استخدمنا كلمة ‪ new‬إلنشاء كائن أو نسخة جدٌدة من‪، Person‬‬
‫ومن ثم لمنا بتعبئة البٌانات الخاصة بتلن النسخة التً تمثل “خالد”‪ ،‬بحٌث وضعنا االسم والعمر والجنس‪ ،‬وهكذا لبمٌة‬
‫الكائنات األخرى التً ستنشأ من‪Person.‬‬

‫جمٌع الكائنات أو المتغٌرات التً سنموم بإنشائها ستتبع التفاصٌل الموجود فً تعرٌف‪ ، Person‬وهذا ٌعنً أنه فً حال‬
‫لمنا بتعدٌل بعض األمور فً ‪ Person Class‬فإن جمٌع الكائنات ‪ Objects‬التً تم تعرٌفها فً البرنامج ستتأثر بذلن‬
‫التعدٌل ‪ ،‬وهذا األمر ٌعتبر مٌزة وعٌب فً نفس الولت‪ ،‬فهو مٌزة فً حال أدخلت تحسٌنات على الشٌفرة البرمجٌة‪ ،‬فسٌكون‬
‫األمر سرٌع ومرن‪ ،‬ولد ٌكون عٌب فً حال تم تعدٌله بالخطأ فإنه لد ٌعطً نتائج غٌر متولعة على نتائج البرنامج الذي‬
‫ٌستخدمه‪.‬‬

‫تنبٌه ‪ :‬لغات البرمجة تختلف فً كٌفٌة إنشاء الكائنات‪ ،‬فمثالً لغة ‪ Swift‬ال تستخدم كلمة ‪ new‬عند اإلنشاء‪ ،‬ولس على‬
‫ذلن بمٌة اللغات فً اختالفها‪،‬وٌبمى المفهوم واحد‪ ،‬وهذا هو المهم‪.‬‬
‫المصدر ‪/ http://blog.algorithmers.com/object-vs-class:‬‬
‫تم نسخه بواسطة ‪Ahmed Monier‬‬
‫‪Ahmed Monier Face Book‬‬
‫الرجاء الدعاء‬

You might also like