1 New system technology Mahmoud said Object-Oriented Programming in C ++ Cookbook 1

ملفّات مشابهة
Microsoft Word - SolutionOOPFinal2011.doc

Microsoft Word - C#2

) NSB-AppStudio برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( ) برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( NSB-AppStudio الدرس األول ) 1 ( الدرس

Slide 1

الأول في السي شارب((c#للمبتدائين

How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i

المحاضرة الثانية

ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة : اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة ا

السالم عليكم ورحمة هللا وبركاتة كتاب تعلم برمجة االلعاب بأستخدام محرك االلعاب Unity 3D الكتاب مقدم من االستاذ : عماد عارف التوي موقع : Home OF Games ا

Microsoft Word - new.doc

Microsoft Word - Excel VBA

ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long i

The Global Language of Business دليل ارشادي الستخدام صفحة خدمات الشركات األعضاء Members Area 1

PowerPoint Presentation

السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات

التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما

Microsoft Word - 1-NURSE CALL SYSTEM

Microsoft Word - Access VBA

أساسيات البرمجة بلغة الجافا

المملكة العربية السعودية م ق س ..../1998

جمعية زمزم للخدمات الصحية التطوعية بإشراف وزارة الشؤون االجتماعية تصريح رقم )411( نظام إدارة الجودة Quality Management System إجراءات الئحة تقنية املع

اردوينو – الدرس الثامن – تغيير درجة الالوان لـ RGB LED

Certified Facility Management Professional WHO SHOULD ATTEND? As a Certified Facility Management Professional course, Muhtarif is the ideal next step

Banner – Hold Information SOAHOLD

قوانين اإلستعارة هذه هي قوانين اإلستعارة التي تسري في المكتبات الشعبية في كل من بيورهولم, نوردمالينغ, روبيرت فورش, اوميو, فيندلن و فيينسس. بطاقة المكت

دولة فلسطين و ازرة التربية والتعليم العالي المبحث: تكنولوجيا المعلومات / النظري بسم هللا الرحمن الرحيم مدة االمتحان : ساعتان نموذج تجريبي مجموع العالم

كيفية تفعيل خدمة IIS ونشر موقع ويب على الشبكة احمللي السالم عليكم اصدقائي الكرام في هذا الكتاب سنتناول ما هي خدمة المعلومات وكيفية التفعيل ونشر الموقع

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :-

NUBIX for Information Technology

االدارة العامة لمنطقة العاصمة التعليمية مدرسة قرطبة الثانوية بنات أسرار احتراف التصميم فربما ال تستهين بهوايتك تفوق خبرة المحترفين أكتوبر 2018 اعداد ا

الدوال في اكسل الدوال: هي صيغ معرفة مسبقا تقوم بإجراء عمليات حسابية بإستخدم قيم محددة ووسائط مسماة في ترتيب بنية معينة بناء الدالة: إغالق. يبدأ بناء ا

Allomani Warehouse User Guide

Principles of C++ (Precedence)

untitled

مدرسة هارون الرشيد الثانوية للبنين المهارات العملية / تكنولوجيا المعلومات ( الثاني عشر) إعداد/ أ. خالد الح

FS Future Series دليل البدء السريع الرجاء قراءة التعليمات التالية من أجل تثبيت وتنشيط 3D. Visualizer برنامج

وزارة التربية والتعليم مجلس االمارات التعليمي 1 النطاق 3 مدرسة رأس الخيمة للتعليم الثانوي Ministry of Education Emirates Educational Council 1 Cluster

النشرة األسبوعية للواجبات المدرسية الصف: االول أ ب ج د ه و النشرة رقم : 6 اليوم والتاريخ المادة الواجبات اختبار بالدرس الثالث حرف الباء من صفحة 23 إلى

PowerPoint Presentation

اختر عنوان مناسب

Slide 1

دليل تدريبي : الحلول لما بعد اختراق الحسابات إعداد : محمد المسقطي Mohammed Al-Maskati بمساعدة : علي السباعي Ali Sibai

حقيبة الدورة التدريبية التخزين السحابي Google Drive حقيبة المتدربة إعداد املدربة : عزة علي آل كباس Twitter 1438 ه

جامعة حضرموت

عرض تقديمي في PowerPoint

الفصل الثاني

استمارة تحويل طالب يتعلم في الصف العادي لجنة التنسيب إلى )التقرير التربوي( استمارة لتركيز المعلومات حول العالج المسبق الذي حصل علية الطالب\ة الذي يتعل

متطلبات النظام متطلبات جهاز الكمبيوتر الشخصي معالج Pentium 1 Intel غيغا هرتز أو أسرع نظام التشغيل Windows 2000 أوXP Windows مع Service Pack 2 أو Vista

إيناس السيد محمد الشعراوى أستاذ مساعد قسم الحاسب كلية التربية - الجبيل المعلومات الشخصية الجنسية : مصرية تاريخ الميالد / 11 / م القسم علوم الحاس

الصف السادس االبتدائي الفصل الدراسي االول بسم هللا الرحمن الرحيم الصفحة محتويات الفصل الدراسي األول الموضو

SP-1101W/SP-2101W eciug niitallatini kciuq 1.0v /

بسم هللا الرحمن الرحيم المادة: مقدمة في بحوث العمليات )100 بحث ) الفصل الدراسي األول للعام الدراسي 1439/1438 ه االختبار الفصلي الثاني اسم الطالب: الرق

نموذج السيرة الذاتية

خطـــــة المركــــــز التدريبيـــــة خلال شهر كانون ثاني من عام 2004

برمجة متقدمة -1-

رسالة كلية التمريض: تلتزم كلية التمريض - جامعة دمنهور بتقديم سلسلة متصلة من البرامج التعليمية الشاملة إلعداد كوادر تمريضية ذوى كفاءة عالية فى مهارات ا

PowerPoint Presentation

المواصفات الاوربية لإدارة الابتكار كخارطة طريق لتعزيز الابتكار في الدول العربية

Microsoft Word - Sample Weights.doc

Our Landing Page

Oligopoly

اململكة العربية السعودية وزارة التعليم العالي جامعة اجملمعة عماده خدمه اجملتمع كليه الرتبية بالزلفي دبلوم التوجيه واالرشاد الطالبي ملخص منوذج توصيف مق

بسم اهلل الرمحن الرحيم الوحدة الثانية الفيجول بيسك Microsoft VISUAL BASIC احلمد اهلل الذي أكرمين و منحين الفرصة لتوفري لكم هذا امللخص املنقى للوحدة ال

التقديم الإلكتروني

عرض تقديمي في PowerPoint

Microsoft Word - Oracle1

دائرة اللغة العربية المادة المطلوبة المتحان اإلعادة للعام الدراسي : الصف: الثامن المهارة )الفهم واالستيعاب + التحليل األدبي( النحو المادة ال

Microsoft Word - moneybookers

Our Landing Page

المحاضرة الرابعة التكامل المحدد Integral( (Definite درسنا في المحاضرة السابقة التكامل غير المحدد التكامل المحدد لها. ألصناف عدة من التوابع وسندرس في ه

Microsoft Word - ترتÙ−ب جدًٗ اٗآÙ−ٗتس.docx

دبلوم متوسط برمجة تطبيقات الهواتف الذكية

Al-Furat Model Schools Dear parents, Once again, fun moments are in the sky. Its our pleasure to inform you about Alfurat school our awesome activity

األثنين الثالثاء األحد السبت األربعاء الخميس 2 1 اليوم الساعة ميكروبيولوجيا تطبيقية )عملى $ ) T311 التطور وديناميكية العشائر ( عملى ) ميكروبيولوجيا تط

تنصيب و إعداد تقانة التستجابة الذكية (SRT) التخزين المؤقت باتستخدام أقراص الحالة الصلبة SRT Intel Smart Response Technology Installation Guide (SSD Ca

الشريحة 1

Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of

كيفية استخدام موقع 4shared لرفع الملفات وتنظيمها على النترنت للمبتدئين. والمتقدمين في الحاسب. كتاب ل ابراهيم شاهين

المكونات

السلطة الوطنيـة الفلسطينية

المحاضرة الثانية عشر مقاييس التشتت درسنا في المحاضرة السابقة مقاييس النزعة المركزية أو المتوسطات هي مقاييس رقمية تحدد موقع أو مركز التوزيع أو البيانات

الذكاء

عرض تقديمي في PowerPoint

وزارة الترب ة بنك األسئلة لمادة علم النفس و الح اة التوج ه الفن العام لالجتماع ات الصف الحادي عشر أدب 0211 / 0212 األولى الدراس ة الفترة *************

الرسالة األسبوعية/ الصف السادس 2018 / 9 - األحد 16 أولياء األمور الكرام : إليكم الرسالة األسبوعية وما سيتم إنجازه هذا األسبوع: األسبوع الماضي : تم اال

8 مادة إثرائية وفقا للمنهاج الجديد األساسي الثامن للصف الفصل الدراسي األول إعداد املعلم/ة: أ. مريم مطر أ. جواد أبو سلمية حقوق الطبع حمفوظة لدى املكتبة

عرض تقديمي في PowerPoint

لقانون العام للمساواة في المعاملة - 10 أسئلة وأجوبة

Morgan & Banks Presentation V

جاهعة الوسيلة هركز الشبكات و أنظوة اإلعالم و االتصال والتعلين الوتلفز و التعلين عن بعد مودل Moodle التعل م نظام استخدام "دل ل االلكترون للطلبة" نظام ا

ص)أ( المملكة العرب ة السعود ة وزارة التعل م اإلدارة العامة للتعل م بمحافظة جدة الب ان النموذج ة ( تعل م عام ) انفصم اندراسي األول انفترة انثانثت العام

Our Landing Page

Microsoft Word - dériv sc maths.doc

مقدمة عن الاوناش

برمجة NXT والخوارزميات تتبع الخط سلسلة دروس الروبوت التعل م قسم برمجة NXT والخوارزم ات تتبع الخط )حساس الضوء واأللوان( 1

الرقابة الداخلية والرقابة الخارجية

النسخ:

1 Object-Oriented Programming in C ++ Cookbook 1

2 المحتويات لماذا البرمجة الكائنية OOP I. Chapter 1: II. Chapter 2: OOP تعريفات هامة ل (important for interviews) االختالف بين الهيكل والكالس Classes) III. Chapter 3: (structure & استخدام الكالس (Class) IV. Chapter 4: نطاق الكالس ( scope )و درجة الوصول modifier).v Chapter :5 (Access الوراثة (inheritance) VI. Chapter 6: تعدد االوجه (polymorphism) VII. Chapter 7: الفئات المتقدمة Classes( VIII. Chapter 8: )Advanced امثلة وتمارين 9: IX. Chapter?ما الذي ينتظرني بعد اكمال دراسة (OOP).X Tips 2

3 About writer : - محمود سعيد : Name Nationality: Egypt Job : instructor of computer science Full stack developer logic design and algorithms How To Content : لتتواصل الشخصي https://www.facebook.com/mahmoud.said.nst للتواصل مع منظمة التعليمية new system technology: https://www.facebook.com/nstechnologyo My channel: Name : new system technology URL : https://www.youtube.com/channel/ucsu- YBmsmjSlPTKtlKx_img 3

4 هذا الكتاب مقدم من المنظمة التعليمية new system technology: https://www.facebook.com/nstechnologyo 4

5 Suggestions: ارحب بكل المقترحات او النقد الهادف للكتاب فيمكنكم التعليق و ارسال رسالة لي علي صفحتي الشخصية علي facebook ال اقبل االتي في الرسائل : الملفات او أي شيء يمكن ان أقوم بتحميله استخدام الروابط المختصرة أيا كان الموقع موثوق به 5

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

7 CHAPTER 1 Why learn Object-Oriented الموجهه لماذا البرمجة الكائنية الفرق بين البرمجة االجرائية والبرمجة من منظور الشركات و فريق العمل مميزات البرمجة الكائنية ملخص الكالم 1 2 3 4 5 7

8 لماذا البرمجة الكائنية :- السؤال الذي حير الكثير من المبرمجين حديثي الدخول لعالم البرمجة الكائنية او البرمجة بشكل عام لما علي استخدام األساليب المختلفة في البرمجة نستخدم هذه األساليب لنجعل االكواد اكثر تنظيم واكثر فهم واختصار في الكتابة وكذلك هي لغة تفاهم بين فريق العمل فال يعمل أي فريق علي مشروع اال ويستخدمون هذا األسلوب. اذا هل انت تحتاج اليه وانت تعرف ان البرامج التي تقوم بعملها ال تتجاوز 100 اسطر فقط اإلجابة هي نعم. فانت اذا حاولت ان تقوم بالتطوير في البرنامج لكي يقوم بالعمل بطريقة اسرع او ان يتواجد به اكثر من حل ألي مشكلة تواجهه التي صمم من اجل حلها فانت اذا كنت ال تستخدم البرمجة الكائنية فستحتاج الي إعادة كتابة البرنامج حتي يتماشى مع الرؤية الجديدة او الحل فلماذا هذا العناء وانت يمكنك ان تقوم ببناء برنامج مميز تقوم بتطوير كل جزئية به منفصلة عن اختها هكذا تقوم بعمل برنامج اكثر ثبات ودقة. الفرق بين البرمجة اإلجرائية الموجهة : و سوف اريكم نوعين من االكواد كالهما لهما لكي نري الفرق. نفس التأثير ولكن كتبا بطريقة مختلفة 8

9 النوع األول البرمجة اإلجرائية :- #include<iostream> using namespace std; int main(int argv,char **argc) { int width; int length; int area; cout << "please enter (width):" << endl; cin >> width; cout << "please enter (length):" << endl; cin >> length; area = length*width; cout << " your area is : " << area << endl; } return 0; هذا الكود بسيط قد كلفني بعض الخطوات واالسطر البسيطة داخل الدالة الرئيسية ولكن تخيل معي اذا احتجنا ان نقوم بعمل هذه العملية 10 مرات سوف نقوم بنسخ ولصق هذه االسطر 10 مرات هذا هو المرهق في هذا النوع من البرمجة القديمة. اذا ما رايكم اذا اختزلنا هذه االكواد داخل كبسولة كل مرة نستدعي هذه الكبسولة حتي ينفذ الكود بمعني اننا سوف نقوم بكتابته مرة واحدة فقط وكل مرة نقوم باستدعائه سوف نكتب فقط امر او اثنين في االستدعاء هكذا وفرنا في جهد الكتابة والتعديل واصبح مفهوما اكثر. الطريقة الثانية البرمجة الموجهة: #include<iostream> using namespace std; - 9

10 using namespace std; class Rect{ public: int width; int length; int area; void get_area() { cout << "please enter (width):" << endl; cin >> width; cout << "please enter (length):" << endl; cin >> length; area = width*length; cout << " your area is : " << area << endl; } }; int main() { // code call only Rect r1; r1.get_area(); return 0; } من منظور الشركات و فريق العمل : من اكثر األسئلة الشائعة عند تقدمك لوظيفة مبرمج داخل أي شركة تتحدث معك عن مفهوم البرمجة الكائنية وعن حل المشكالت ولكن دعونا من جزئية حل المشكالت فلدينا كتاب كامل يتحدث عن هذه الفقرة ولكن االن الشركات تستخدم احدث أنظمة التشغيل واحدث األدوات البرمجية وبيئات التطوير حتي تسهل عليك البرمجة ولكن يجب ان تضمن انها حين تجعلك من موظفيها انك مؤهال الستخدام هذه التقنيات وهي تعتمد اعتماد كامل علي أسلوب البرمجة الموجه. اما بالنسبة للفريق فكما ذكرنا من قبل فهي لغة التفاهم الخاصة بالمبرمجين فانت لن تقوم ببرمجة برنامج كامل بنفسك فكيف نقوم بجعل كل شخص من الفريق يعمل علي الجزئية الخاصة به وهو عن طريق البرمجة الموجه فيمكن ان نقوم بجمع وتركيب جميع االكواد التي انشاها الفريق ومن ثم تجربتها وتحسين أدائها الخ.. كذلك قد وفرنا الكثير من الوقت والجهد واصبح البرنامج سهل القراءة والفهم ويمكن التعديل عليه بسهولة. 10

11 مميزات البرمجة الكائنية : (Encapsulation). التغليف 1. Hiding). (Data إخفاء البيانات 2. (Inheritance). الميراث 3. (Polymorphism). تعدداألشكال 4. ملخص الكالم : 1 يوجد فرق بين البرمجة اإلجرائية والبرمجة الكائنية 2- البرمجة الكائنية الموجهة مطلوبة من الشركات وفريق العمل 3 اكتب هيكل الكود مرة واحد ثم قم باستدعائه بدال من كتابة الهيكلة كل مرة وأخيرا هذه الصورة توضح الكثير 11

12 CHAPTER 2 definitions about Object-Oriented 1 ما هو ال Class 12

13 2 ما هو الكائن (Object) 3 ما هي ال Methods 4 ما هو ال Encapsulation 5 ما هي الوراثة Inheritance 6 ما هو تعدد االشكال Polymorphism ما هو ال CLASS هو عبارة عن قالب تقوم بتخزين به مجموعة من األوامر والتي تنقسم الي قسمين خصائص و سلوكيات. لكل كالس اسم حتي يسهل الوصول اليه او معرفة وظيفته من قبل ان تستخدمه. 13

14 لكل كالس هيكل يضم البيانات والوظائف التي تتم علي هذه البيانات. CLASS Name DATA input (humen/machine) Methods attributes ولماذا احتاج الي كالس حتي أقوم بتجميع األوامر البرمجية وتصنفيها حيث يمكن ان تجعل االكواد الخاصة بالشبكات في كالس و تسميه باسم محدد وكذلك االكواد الخاصة بالجرافيك واالكواد الخاصة باتصال قواعد البيانات. ما هو الكائن( Object ) الكائن هو نسخة او صورة من الكالس تصنع داخل الذاكرة بحيث ان الكائن يوجد لديه نفس الخصائص والسلوكيات بداخل الكالس. لماذا أقوم بعمل كائن 14

15 حتي أقوم باستدعاء جميع الخصائص والسلوكيات التي قمت بتعريفها في الكالس مثال : اذا كان لديك ورقة تريد ان تضع بها بياناتك وأرسالها الي بعض الشركات حتي يتعرفوا علي ما هي صفاتك والوظائف التي تقدر ان تقوم بها ولكن مع مراعات ان تقوم بتغير أولويات الوظائف علي حسب كل شركة واحتياجاتها فيجب عليك ان تقوم بتصوير هذه الورقة او طباعة اكثر من نسخة ولكنك لن تقوم بكتابتها مرة اخري بل تقوم فقط بعمل منها صورة.. اذا هذا هو الكائن. قوانين كتابة الكائن :- لكل كائن اسم خاص به ال يمكن إعادة استخدام االسم لكائن اخر الصفات السلوكيات له معلومات مخزنة لكل كائن وظائف يقوم علي تنفذها ما هي ال Methods 15

16 هي مجموعة من الوظائف تكتب داخل الكالس تضم بعض البيانات الخاصة بها وتستخدم بعض البيانات العامة التابعة للكالس يمكن ان تقوم بإرسال اليها بعض البيانات لكي تقوم بعمل معالجة و تقوم بإرجاع قيمة او نتيجة هذه العملية. خصائصها :- 1 لها اسم وال يمكن ان تستخدم هذا االسم مرة اخري اال باستخدام بعض التكنيك المختلفة overriding) (overloading, 2 يجب تحديد نوع البيانات التي تعمل عليها معالجة 3 ال يمكن استدعائها اال من خالل عمل كائن من كالس او استخدام اسم الكالس نفسه. ما هو ال Encapsulation 16

17 هو عبارة عن مجموعة تتشابه في الخصائص والسلوكيات مخزنة في Module اذا ما فائدة هذا التكنيك هو تجميع جميع الصفات والسلوكيات داخل كالس. عمل تحكم علي ظهور المعلومات والسلوكيات والتحكم في الوصل اليها. فهو يقوم علي عمل إخفاء لبعض المعلومات او التحكم في طريقة معالجتها للبينات المدخلة حتي ال تحدث أخطاء بين المبرمجين الذين يقوموا بتطوير كالس معين. state behaviour Access Control Encapsulation ما هي الوراثة (Inheritance) 17

18 هي السماح بصنع كالس جديد بواسطة كالس قديم موجود بالفعل. تقوم بوراثة كل شيء بداخل الكالس القديم من خصائص وسلوكيات بمراعاة إمكانية الوصول الي بعض الخصائص والسلوكيات التي يحتويها الكالس القديم. ولكن يجب ان يكون داخل الكالس الجديد ما يميزه بحيث ال يقوم باستعمال نفس االسم ويكون بداخله بعض الخصائص والسلوكيات الخاصة به. حينما يكون لديك كالس بهه بعض خصائص وسلوكيات التي يمكن ان تكرر في االكواد فيمكنك ان تقوم باستغالل هذا الكالس بحيث تقوم بأخذ كل ما بداخله من غير ان تكرر كتابته مرة اخري وان تضيف ما تريده في الكالس الجديد مثال : لدينا كالس ألنواع الحيوانات اسمه Animal ويوجد بداخله الصفات االتية : االسم و النوع و الصوت. ويوجد لديه هذه السلوكيات : (do_walk, do_stop, do_sit, do_sound) كل هذه السلوكيات والخصائص توجد في جميع الحيوانات فال يوجد حيوان بال صوت او اسم. المشكلة هنا عندما تقوم بتخصيص نوع محدد من الحيوانات فاذا تحتاج ان تقوم بعمل كالس يعبر عن الكالب مثال فسوف تقوم بنسخ ولصق كل هذه الصفات والسلوكيات وإعادة كتابتها مرة اخري. فعندما تشعر بانه يوجد تكرار داخل الكود الخاص بك فاعلم انك لست علي الطريق الصحيح.فما الحل هو ان تقوم بعمل كالس جديد وتقوم بوراثة الصفات التي توجد في الكالس القديم الذي قد انشاته وهكذا قد نجحنا في حل مشكلة تكرار الكود واصبح لديك بعض التنظيم واختالف مستوي كفاءة البرنامج. ما هو ال Polymorphism 18

19 هو تكنيك برمجي يسمح ان تقوم بعمل أوجه كثيرة لنفس الكائن او االجراء البرمجي. والتسمية العلمية الخاصة به هو تعدد االشكال. وهو يتمثل في لغة السي ++ في ثالث حاالت هما : POLYMORPHISM MEANS THAT SOME CODE OR OPERATIONS OR OBJECTS BEHAVE DIFFERENTLY IN DIFFERENT CONTEXTS. Overloading Overwriting/Overriding Instance from child-class pointer to parent-class 1 تكرار ال Methodsبنفس االسم ولكن تغير في عدد ال Parameters او نوع الرجوع بالقيم. 2 استخدام Virtual methods 3 استخدام New keyword كما موضح في هذا الشكل كيف يقوم الكائن باإلشارة الي كالس اخر عندما يكون الكالس الخاص بالكائن قد ورث من الكالس الذي يشير عليه الكائن وهذا ما يجعل له الصالحية بان يقوم باستخدام بعض خصائص الكالس. 19

20 او كما موضح في هذه االكواد : Employee *emplp; emplp = &empl; // make point to an Employee cout << "Pay: " << emplp->pay(40.0); // call Employee::pay() emplp = &mgr; // make point to a Manager cout << "Pay: " << emplp->pay(40.0); // please--manager::pay()? 20

21 21

22 CHAPTER 3 The difference between structure & Classes كيف تقوم بعمل structure كيف تقوم بعمل Class ما االختالف بينهم وايهم افضل 22

23 كيف تقوم بعمل Structure اذا قد وصلنا أخيرا الي قسم االكواد والذي يفضله الكثير من المبرمجين عن التعاريف واالشياء النظرية ولكن دائما ما أقول انه يجب ان نقوم بتعلم البرمجة وليس تعلم االكواد )ال تتعلم الكود ولكن تعلم كيف تصنعه ) هذا هو مبدأنا من البداية وحتي تصبح مبرمج قوي في مجالك يجب ان تقوم بتعلم النظريات أوال لتكون قادر علي تنفيذها. ما هو الهيكل : هو أحد أنواع هياكل البيانات, يمكن أن يضم أنواعا متغيرة من البيانات. هو انك تقوم بعمل نوع جديد من أنواع البيانات ولكنه يضم بعض المتغيرات والتي تضم أنواع بيانات اخري مجتمعين داخل نوع جديد انت قمت بصنعه من خالل تنفيذك لكود الهيكل. كيف تكتب الهياكل : struct NameOfStruct{ // Code هنا تقوم بكتابة المتغيرات // int testnum; }; كيف نقوم بتعريف الهيكل داخل الدالة الرئيسية : int main() { NameOfStruct instance; instance.testnum = 5; cout << "print value : " << instance.testnum << endl; return 0; } 23

24 كيف تقوم بعمل Class class nameofclass{ public: int width; int legnth; int area = width * legnth; }; ملحوظة : كلمة Publicهي نوع من أنواع Access modifier والذي سوف نتعرف عليه الحقا. int main(){ nameofclass object1; object1.width = 5; object1.legnth =4; int calc_area = object1.area; cout << calc_area << endl; return 0; } كيف أستخدم الكالس داخل الدالة الرئيسية : 24

25 ما الفرق بين الهيكل والكالس : يوجد مميزات كثيرة في الكالس لم تكن موجودة بالهياكل ولكن األهم في انهم مجتمعين علي انك يمكنك ان تقوم بصنع كائن او نوع جديد من المتغيرات. ولكي توضح الصورة اكثر انظر في هذا الجدول الذي يقارن الكالس بالهيكل :- classes يمكن التحكم في الوصول الي بعض المغيرات والدوال ويمكن جعلها خاصة او محمية يستخدم الوراثة و الوراثة المزدوجة يتبع أسلوب تعدد األوجه والحاالت يدعم Interface class and abstraction class Structures جميع المتغيرات والدوال بداخله يمكن ألي احد ان يقوم باستخدامها )ال يوجد مفهوم الكبسولة( ال يمكن الوراثة منه ال يمكن جعل الكائن ان يكون لديه عددت حاالت مختلفة polymorphism ال يدعم Interface 25

26 CHAPTER 4 using Classes 1 ما هو UML 2 ما هو class diagram ما هي العالقات وكيفية تصميمها - انشاء كالس لتكوين لعبة 3 4 26

27 ما هو :UML لغة التصميم الموحدة تقدم صيغة لوصف العناصر البرمجية. للنظم الرئيسية تستخدم هذه اللغة لعمل رسوم تخطيطية لوصف برامج الكمبيوتر من حيث العناصر المكونة لها أو خط سير العمليات الذي يقوم به البرنامج. أنواع العالقات المستخدمة : النوع األول : One-to-One في هذا النوع من أنواع العالقات هو ان تقوم بصنع عالقة كائن واحد مع كائن اخر مثال علي هذا النوع. عالقة المدرس بالمكتب الخاص به فلكل مدرس في المدرسة او الجامعة مكتب خاص به واحد فقط. 27

28 Teacher Office النوع الثاني : One-to-Many في هذا النوع من العالقات هو ان تقوم بصنع عالقة بين كائن ومجموعة من الكائنات التي تتشارك في بعض الخصائص. مثال المدرس وعالقته بالطلبة فلكل مدرس لديه عدد من الطالب يقوم بتعليمهم فالمدرس كائن واحد والطلبة مجموعة من الكائنات يتشاركون في صفات الطالب. 28

29 student 1 student 2 student 3 Teacher النوع الثالث : Many-to-Many هذا النوع من العالقات يكون بين مجموعة من الكائنات ومجموعة اخري ويرمز اليه M N OR (* *) يمكن ان يكون عدد الكائنات االولي ليست مساوية لعدد الكائنات األخرى مثال : الطالب و عالقتهم بكمية المواد الخاص بهم. 29

30 ما هو class diagram يستخدم على نطاق واسع لوصف أنواع الكائنات Diagram" "Class مخطط الفئة الموجودة في النظام و عالقاتها ببعضها "objects" أشياء : ثالثة من الفئات وتتألف 30

31 "name" والصفات "attributes" والعمليات "operations" "class" هذا مثال على الفئة. ما هي العالقات وكيفية تصميمها : هو العالقة بين الكالس الوالد والكالس االبن بحيث يقدر : Aggregation ان يكون كالس االبن مستقل عن كالس االب اذا قد تم حذف كالس الوالد فال يؤثر علي وجود كالس االبن. هو عالقة الكالس االبن بكالس الوالد بحيث اذا تم حذف: Composition كالس االب لن يكون بمقدرة كالس االبن بالعمل مثال : البيت اذا لم يكن. موجود فلن يكن للغرف وجود االعتمادية هي تكون اضعف بكثير من العالقة فهي : Dependency تقوم فقط علي استقبال المعامالت او نوع البيانات الراجع. انشاء كالس لتكوين لعبة : االن سوف نقوم بعمل تصميم لهيكل لعبة ولكن عن طريق تصميم الكائنية. البرمجة المتطلبات :- 31

32 كالس اللعبة كالس الخاص بالشخصيات كالس خاص بالبيئة الخاصة باللعبة 1 2 3 هيا بنا نبدأ في التصميم : الخطوة االولي : كالس اللعبة قمت بتصميم الكالس بهذا الشكل الذي يفهمه Class diagram الجميع وهو ما يسمي : الخطوة الثانية : كالس الخاص بالشخصيات 32

33 هو يمثل الالعب والشخصية الخاصة به وميكانيكية تحريك الشخصية و القصة. الخطوة الثالثة : كالس خاص بالبيئة الخاصة باللعبة 33

34 وهذا التصميم يمثل البيئة التي تعيش بداخلها الشخصيات والكثير من الكائنات المتحركة والساكنة وبداخله أيضا دوال تتعلق بالتحكم في زاوية الرؤية و االحداث التي تتم عند الضغط علي mouse or keyboard في هذا الوقت يأتي دور صنع العالقات وتكوينها بين الكالس واألخر وهو الموضح في هذه الصورة. 34

35 CHAPTER 5 scope of class & Access modifier 1 ما هو Scope 2 ما هو Access modifier 35

36 ما هو Scope هو نطاق عمل المكونات انها تابعة لهذا الكالس. يمكن بحيث للكالس الداخلية استخدامه إلثبات المكونات امثلة علي كيفية طريقة الكتابة ( ::,., ->) -: مثال 1 class test{ int walk; string name; public: void set_walk(int); void set_name(string); void set_element_name(void); int get_walk(void); string get_walk(void); string get_element_name(); }; // class scope // :: is pointer for scope void test::set_walk(int w) { this.walk = w; }... -: مثال 2 int main(){ test object; // this shape is a scope (.function_name() ) object.set_walk(24); object.set_name("bosi"); object.set_element_name("cat"); 36

37 return 0; } -: مثال 3 int main(){... // scope of pointers to call members of class ( -> ) test *objr; objr = object; cout << "the fast of walk is: " << objr->get_walk() << endl string name = objr->get_name(); string nameofelement = objr->get_element_name(); return 0; } ما هو Access modifier هي مجموعة من كلمات رئيسية داخل لغة البرمجة تعبر عن تحديد إمكانية الوصول الي مكونات الكالس فمنها : هي كلمة رئيسية في اللغة تقوم بإظهار المكونات الرئيسية للكالس : Public لجميع النطاقات البرمجية األخرى هي كلمة رئيسية في اللغة تقوم بإخفاء جميع المكونات داخل : Private الكالس حتي ال يستطيع احد تغيير القيم الداخلية او التالعب بها هي كلمة رئيسية في اللغة تقوم بإخفاء المكونات لدي الكالس : Protected اال من يقوم بالوراثة من هذا الكالس 37

38 CHAPTER 6 Inheritance الوراثة : inheritance Single الوراثة المتعددة : Multi-Inheritance 38

39 الوراثة المنفردة : inheritance Single هو ان يكون لدي الكالس االبن, كالس والد واحد فقط يرث منه. كيفية الوراثة :- class staff { private: char name[50]; int code; public: void getdata(); void display(); }; class typist: public staff { 39

40 }; private: int speed; public: void getdata(); void display(); الوراثة المتعددة : Multi-inheritance هو وراثة كالس واحد من اكثر من كالس. وهي ميزة خاصة بلغة السي ++ وقد انتهت في بعض اللغات المنشأة علي لغة السي. كيفية االستخدام :- 40

41 class Person { // Data members of person public: Person(int x) { cout << "Person::Person(int ) called" << endl; } }; class Faculty : public Person { // data members of Faculty public: Faculty(int x):person(x) { cout<<"faculty::faculty(int ) called"<< endl; } }; class Student : public Person { // data members of Student public: Student(int x):person(x) { cout<<"student::student(int ) called"<< endl; } }; // multi-inherited class TA : public Faculty, public Student { public: TA(int x):student(x), Faculty(x) { cout<<"ta::ta(int ) called"<< endl; } }; int main() { TA ta1(40); return 0; } 41

42 CHAPTER 7 Polymorphism 1 تعدد اشكال الدوال methods) (overloading 2 ما هي الدوال الوهمية method) (virtual 3 كيفية تعدد اشكال الدوال الوهمية (override) 42

43 تعدد اشكال الدوال methods) (overloading هو ان تقوم بتكرار دالة واحدة بنفس االسم داخل كالس واحد. اذا سوف يأتي احد االن ويقول كيف اكرر الدالة اكثر من مرة بنفس االسم سوف يقوم المترجم بإخراج أخطاء الن االسم قد تكرر وبماذا استفيد من هذا التكرار. أوال : يوجد قواعد محددة لتكرار الدالة بنفس االسم وهذا ما يجعل إمكانية التكرار مسموحة بالنسبة للمترجم. ثانيا : انت ال تقوم بتكرار االسم فقط ولكن تريد ان تقوم بتكرار االسم لعمل كذا حدث ولكن بنفس الدالة وهذا ما سوف نقوم بتوضيحه االن. مثال : اذا كان لديك دالة تجمع رقمين واسمها Add قد تريد جمع ثالث ارقام في المرة األخرى فيجب عليك عمل دالة اخري وتوجد لها اسم اخر وقد تريد جمع رقمين بصيغة عشرية فيجب ان تقوم بعمل دالة اخري وباسم اخر ولكن بهذا األسلوب سوف يكون لديك الكثير من الدوال تقوم بنفس العمل تقريبا ولكن بأسماء مختلفة وهكذا يصعب عليك حفظ كل هذه الدوال التي صنعتها فما بالك بالمكاتب التي لم تصنعها ولهذا قد وفرت لنا لغات البرمجة هذه الميزة حتي ال نقع في الكثير من المشاكل. قواعد الكتابة :- 1 يجب ان تكون المعامالت Parameter متغيرة في العدد او في نوع البيانات 43

44 تغيير نوع رجوع البيانات. 2 كيفية الكتابة :- class printdata { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } }; void print(char* c) { cout << "Printing character: " << c << endl; } ما هي الدوال الوهمية methods) (virtual هي دوال يمكن إعادة تعريفها داخل الكالس المشتقة من الكالس المتواجد به الدالة الوهمية. عن طريق وراثة من هذا الكالس او اإلشارة اليه ب Reference كيفية تعدد اشكال الدوال الوهمية:- class Weapon 44

45 { }; public: virtual void loadfeatures() { cout << "Loading weapon features.\n"; } class Bomb : public Weapon { public: void loadfeatures() { cout << "Loading bomb features.\n"; } }; class Gun : public Weapon { public: void loadfeatures() { cout << "Loading gun features.\n"; } }; int main() { Weapon *w = new Weapon; Bomb *b = new Bomb; Gun *g = new Gun; w->loadfeatures(); b->loadfeatures(); g->loadfeatures(); } return 0; 45

46 CHAPTER 8 Advanced classes الكالس المتداخل ) (inner-classes Interface class 46

47 الكالس المتداخل (inner-classes) Public هو كالس يعرف داخل كالس اخر ويسمي : class Nested يعرف علي اغلب األوقات انه :- مثال : class Host { public: class Nested { public: void PrintMe() { cout << "Printed!\n"; } }; }; int main() { Host::Nested n1; n1.printme(); return 0; } ما هو Interface class 47

48. واجهة تصف سلوك أو قدرات الكالس دون االلتزام بتنفيذ معين من هذا هو تعتمد علي بعض أنواع الدوال وهي تسمي : function Pure الصنف مثال :- // Base class class Shape { public: // pure virtual function providing interface framework. virtual int getarea() = 0; void setwidth(int w) { width = w; } void setheight(int h) { height = h; } protected: int width; int height; }; // Derived classes class Rectangle: public Shape { public: int getarea() { return (width * height); } }; class Triangle: public Shape { public: int getarea() { return (width * height)/2; } }; 48

49 CHAPTER 9 examples and Exercises مثال علي ) (encapsulation مثال علي ) overloading (operator مثال علي (polymorphism) أسئلة علي البرمجة الكائنية OOP 49

50 مثال علي( (encapsulation class Box { public: double getvolume(void) { return length * breadth * height; } }; private: double length; double breadth; double height; // Length of a box // Breadth of a box // Height of a box مثال علي ) overloading (operator 50

51 مثال :- class Test { private: int count; public: Test(): count(5){} }; void operator ++() { count = count+1; } void Display() { cout<<"count: "<<count; } int main() { Test t; // this calls "function void operator ++()" function ++t; t.display(); return 0; } مثال علي (polymorphism) 51

52 class Addition { public: void sum(int a, int b) { cout<<a+b; } void sum(int a, int b, int c) { cout<<a+b+c; } }; void main() { clrscr(); Addition o; o.sum(4, 2); cout<<endl; o.sum(14, 20, 50); return 0; } أسئلة علي البرمجة الكائنية OOP هنا في هذه النقطة سوف نتحدث عن اهم األسئلة واكثرهم شيوعا في جميع لغات البرمجة فقط اذا اجبت علي هذه األسئلة فانت قد اتممت جزء كبير واساسي في أي لغة برمجة الن األسلوب واحد ولكن الصيغة قد تتغير. ناسف اننا لم نستطع كتابة هذه األسئلة مترجمة ألنها سوف تفقد المعاني االصلية لها ولذا قد وفرناها لك باللغة اإلنجليزية البسيطة التي يسهل فهمها وهناك فائدة اخري حينما تريد التقدم الي وظيفة وتم تحديد لك مقابلة كمهندس برمجيات لن يكن مرغوبا 52

53 بك اذا كنت تريد ان تترجم كل هذه المصطلحات فالبعض ليس له ترجمة بنفس المعني. 1) What is a class? 2) What is objects? 3) What is a pure virtual function? 4) What is a inheritance 5) How many type of inheritance? 6) What is a polymorphism? 7) Abstraction class VS Interface class? 8) What is encapsulation? 9) What is a deferent between overloading / overriding? 10) Make program do some operations like (*, /, -, +) 11) What is a constructor? CHAPTER Tips What the next? 53

54 يمكن ان يكون لك الف وظيفة بعد ان تنتهي من اساسيات علم البرمجة الكائنية هذا العمل هو :- مثال 1 تصنيع برمجيات سي ++ بكل انوعها فانت قادر علي ان تفهم أي مكتبة برمجية او ان تقوم بعمل مكتبة خاصة بك 2 التعمق داخل اللغة وتطوير المكاتب البرمجية. 3 عمل برامج اندرويد او ويندوز وبيعها علي المتاجر الخاصة بهم 4 العمل علي بيئة تطوير QT 54

55 دراسة لغات برمجية اخري مثل :- (python, java, swift, kotlin, go, c#, etc..) التقدم الي شركة تصميم البرمجيات اذا توافرت بك الشروط التي تريدها الشركة تصميم الخوارزميات والذكاء االصطناعي برمجة تطبيقات مفتوحة المصدر 9 تصنيع تطبيقات للشبكات والتحكم بها IOT تدريب الطالب االخرين... 5 6 7 8 10 55

56 56