Oop with java lectures 45 classes and objects

Page 1

‫✓ ما هي األصناف ‪Classes‬‬ ‫✓ ما هي الكائنات ‪Objects‬‬ ‫✓ أمثلة على األصناف و الكائنات من الواقع‬ ‫✓ كيف نصنع صنفــًا و كائنـًا جديدًا و نستخدمه ؟‬ ‫✓ ما هي الـ ‪ Access modifier‬؟‬


‫ما هي األصناف (‪ )Classes‬و الكائنات (‪)Objects‬؟‬ ‫✓ قبل ذلك سألتُك ماذا ترى في الغرفة ؟ فكانت اإلجابة كراسي‪ ،‬طالب ‪.... ،‬‬ ‫✓ هذه األشياء كال منها يعتبر صنفـًا له خصائصه و صفاته و مع تغيير قيم‬ ‫الصفات و الخصائص هذه نحصل على أشكال و صور مختلفة من كل شيء من‬ ‫هذه األشياء‪.‬‬ ‫✓ هذه األشكال هي الكائنات فمثال‪:‬‬ ‫▪ صنف الكراسي بتغيير الصفات التالية نحصل على كائن جديد‪:‬‬ ‫❖ اللون ‪ :‬أحمــر‬ ‫❖ المادة‪ :‬خشب‬ ‫❖ الحجم ‪ :‬وسط‬


‫ما هي األصناف (‪ )Classes‬و الكائنات (‪)Objects‬؟‬


‫ما هي األصناف (‪ )Classes‬و الكائنات (‪)Objects‬؟‬

‫تدريب ذاتي ‪1‬‬

‫في بيتك يوجد العديد من األصناف و الكائنات استخرج خمس منها مع‬ ‫التوضيح بالمثال الصنف و الكائنات المنبثقة منه‪.‬‬


‫كيف أفكر في صناعـة صنفــًاجديدًا ؟‬ ‫✓ دائما عند صناعة صنفــًا جديدًا ابدأ بالتفكير في هذا األمر من منطلق الرسم التالي‬ ‫‪ ،‬و أن أي شيء له صفات و له سلوك لتقوم بعد ذلك بتمثيل هذه األمور على‬ ‫صفحة البرمجة‪.‬‬ ‫صفات‬ ‫‪Attributes‬‬

‫كل واحدة يقابلها متغير‬ ‫داخل الـ ‪Class‬‬

‫أي شيء‬ ‫‪Any Thing‬‬

‫معلومة‬ ‫مفيدة‬

‫سـلوك‬ ‫‪Behavior‬‬

‫كل واحد يقابله دالة‬ ‫داخل الـ ‪Class‬‬

‫الصنف الجديد يعامل معاملة األنواع في لغة البرمجة و بالتالي يمكنك تعريف‬ ‫متغيرات (‪ )Objects‬منه و كذلك تعريف مصفوفة من نوعه و هكذا ‪...‬‬


‫هكذا أبني ‪:Class‬‬ ‫كلمة محجوزة تعبر عن تعريف الـ ‪Class‬‬

‫اسم الـ ‪ Class‬و يشترط في تسميته‬ ‫ما يشترط لتسمية المتغيرات‬ ‫{ ‪Access_modifiers class class_name‬‬ ‫{ )(‪Access_modifiers class_name‬‬ ‫}‬ ‫هذه الدالة تسمى ‪Constructor‬‬ ‫و هي الزمة لبناء و استخدام كل ‪Class‬‬ ‫و اسمها مطابق السم ال‪ Class‬تماما‬

‫تمرين ذاتي‬

‫ارجع لكافة األمثلة التي أخرجتها من غرفتك و طبق عليها هذه الشريحة‬

‫}‬


‫هذا أصغر ‪Class‬‬

‫هذا الـ ‪ testclass‬يقوم‬ ‫فقط بإظهار رسالة تعريفية عنه‬

‫هذا الـ ‪ Class‬الرئيسي و‬ ‫منه يتم استدعاء ال‬ ‫‪ testclass‬و بهذا فقط يتم‬ ‫التفاعل و االستفادة من‬ ‫‪testclass‬‬

‫الناتج و تالحظ فيه‬ ‫الرسالة المكتوبة‬ ‫في ‪testclass‬‬


‫تدريب ‪: 1‬بناء و استخدام الـ ‪Classes‬‬ ‫✓ انشيء نوع جديد باسم ‪ Student‬تتمكن من خالله من تمثيل أي طالب بالكلية مع‬ ‫توفير الدوال التي تمكننا من التعامل مع بياناته‪.‬‬


‫التفكيــر ‪:‬بناء و استخدام الـ ‪Classes‬‬


‫التخطيط ‪:‬بناء و استخدام الـ ‪Classes‬‬


‫تخطيط التعامل بين وحدات المشروع‬

‫تخطيط عمل‬ ‫المشـروع‬ ‫‪Main‬‬

‫‪Student‬‬ ‫‪ : 1‬يقوم بإنشاء كائنات من‬

‫‪Class‬‬

‫‪Class‬‬ ‫هذا الـ ‪ Class‬يقوم بتمثيل‬ ‫الطالب بمعلوماته كاملة‬ ‫و هو مجرد كائن برمجي ال‬ ‫حياة فيه و إنما مجرد تخطيط‬ ‫و تمثيل‬

‫هذه الكائنات (‪ )Objects‬التي تم إنشاءها من الـ‬ ‫‪ Class‬و هي كائنات حقيقة تحتوي على بيانات‬ ‫لتصف طالب معين و يتم إنشاءها داخل ‪Class‬‬ ‫آخر غير الذي تم اشتقاقها منه‬

‫‪Obj3‬‬ ‫‪Obj4‬‬

‫‪Obj1‬‬ ‫‪Obj2‬‬


‫التنفيذ ‪ :‬بناء ‪Student Class‬‬ ‫هذه المتغيرات المحلية الخاصة بالـ ‪Class‬‬ ‫و التي تمثل صفات هذا الـ ‪Class‬‬ ‫و يكون لها حدود للمشاهدة من خالل استخدام‬ ‫‪Access Modifiers‬‬

‫‪Instance variable‬‬

‫‪Constructor‬‬

‫هذه دالة بدء ال ‪ Class‬و التي من خاللها يتم‬ ‫إعطاء قيم بدائية للكائنات ‪ Objects‬التي يتم‬ ‫إنشاءها من هذا الـ ‪Class‬‬ ‫و مثلها مثل كافة الدوال يمكن أن يتم إنتاج‬ ‫صور متعددة منها كما تشاهد‬

‫‪Constructor‬‬


‫التنفيذ ‪ :‬بناء ‪Student Class‬‬ ‫هذه دالة لطباعة بيانات‬ ‫الكائنات التي سيتم إنشاءها‬ ‫من هذا الـ ‪Class‬‬

‫هذه دالة لتعديل اسم أو‬ ‫رقم الكائنات التي سيتم‬ ‫هذا‬ ‫من‬ ‫إنشاءها‬ ‫ال ‪ Class‬علما بأن لها‬ ‫صور متعددة الختالف‬ ‫طريقة التعديل‬

‫‪Method‬‬

‫‪Overloaded‬‬ ‫‪Method‬‬


‫التنفيذ ‪ :‬إدارة ‪ Student Class‬من خالل ‪ Class‬آخر‬ ‫بهذه الجملة يتم إنشاء كائن جديد‬ ‫من ‪ Student‬اسمه ‪st1‬‬ ‫معتمدًا على القيم االفتراضية‬ ‫الموجودة داخل ‪Student‬‬ ‫بعد ذلك يتم التعامل مع ‪st1‬‬

‫بهذه الجملة يتم إنشاء كائن جديد من‬ ‫‪ Student‬اسمه ‪ st2‬مع إعطاءه قيم‬ ‫من خالل استخدام الـ ‪Overloaded‬‬ ‫‪constructor‬‬ ‫بعد ذلك يتم التعامل مع ‪ st2‬كتعديل‬ ‫البيانات أو طباعتها‬

‫تدريب ذاتي ‪2‬‬

‫انشيء نوع جديد باسم ‪car‬تتمكن من خالله من تمثيل أي سيارة في بيئتك‬ ‫مع توفير الدوال التي تمكننا من التعامل مع بياناته ‪.‬‬


‫تدريب ‪: 2‬بناء و استخدام الـ ‪Classes‬‬ ‫✓ انشيء نوع جديد باسم ‪ Account‬تتمكن من خالله من تمثيل أي حساب بنكي مع‬ ‫توفير الدوال التي تمكننا من التعامل مع بياناته‪.‬‬


‫تخطيط التعامل بين وحدات المشروع‬

‫تخطيط عمل‬ ‫المشـروع‬ ‫‪Main‬‬

‫‪Account‬‬ ‫‪ . 1‬يقوم بإنشاء كائنات من‬

‫‪Class‬‬

‫‪Class‬‬ ‫هذا الـ ‪ Class‬يقوم بتمثيل‬ ‫الطالب بمعلوماته كاملة‬ ‫و هو مجرد كائن برمجي ال‬ ‫حياة فيه و إنما مجرد تخطيط‬ ‫و تمثيل‬

‫هذه الكائنات (‪ )Objects‬التي تم إنشاءها من الـ‬ ‫‪ Class‬و هي كائنات حقيقة تحتوي على بيانات‬ ‫لتصف طالب معين و يتم إنشاءها داخل ‪Class‬‬ ‫آخر غير الذي تم اشتقاقها منه‬

‫‪Obj3‬‬ ‫‪Obj4‬‬

‫‪Obj1‬‬ ‫‪Obj2‬‬


‫ما هي الـ ‪ Access modifiers‬؟‬ ‫✓ ‪ : Access modifiers‬هي مجموعة من الكلمات المحجوزة ‪ Keywords‬يتم‬ ‫من خاللها التحكم في التفاعل مع المتغيرات و الدوال‪.‬‬ ‫✓ و هي ثالثة‪:‬‬ ‫‪1. public‬‬ ‫‪2. private‬‬ ‫‪3. Protected‬‬ ‫✓ و هي البد أن تسبق أي عنصر من عناصر الصنف ‪ members‬و الصنف‬ ‫ذاته ‪Class‬‬


‫تأثير الـ ‪ public Access modifier‬؟‬ ‫✓ ‪: Public Access modifiers‬العنصر الذي يسبق تعريفه ‪ Public‬يعني أن‬ ‫هذا العنصر متاح استخدامه و التعامل معه من كافة األصناف الموجودة في هذا‬ ‫المشروع و بالتالي فإن أيضـًا أي كائن يتم اشتقاقه من هذا الصنف يمكنه التعامل‬ ‫مع هذا العنصر‪.‬‬ ‫هذا يعني أن الـ ‪ Class‬الذي اسمه‬ ‫‪ Student‬يمكن مشاهدته داخل‬ ‫المشروع الموجود هو بداخله‬

‫هذا يعني أن الـمتغيرات هذه ال يتم‬ ‫مشاهدتها إال داخل هذا الصنف و‬ ‫بالتالي عند إنشـاء كائن منه فإنه ال‬ ‫يمكنه مشاهدتها ‪.‬‬

‫هذا يعني أن الـدالة(‪)constructor‬‬ ‫التي اسمها ‪ Student‬يمكن مشاهدتها‬ ‫داخل المشروع الموجوده هي بداخلهـا‬ ‫و بالتالي يمكن االستفادة منها عند إنشـاء‬ ‫أي كائن من هذا الـ ‪Class‬‬


‫تأثير الـ ‪ public Access modifier‬؟‬ ‫هذا الـمشـروع الذي يضم أكثر‬ ‫من ‪ Class‬و فيه الـ ‪ class‬األساسي‬

‫الننا قمنا بتعريف الصنف ‪ student‬من نوع‬ ‫‪ public‬فإننا رأيناه في صنف آخر ينتمي‬ ‫لذات المشروع كما ترى ‪.‬‬


‫تأثير الـ ‪ private Access modifier‬؟‬ ‫✓ ‪ private Access modifiers‬العنصر الذي يسبق تعريفه ‪ private‬يعني أن‬ ‫هذا العنصر متاح استخدامه و التعامل معه فقط للعناصر الموجودة داخل الصنف‬ ‫و ال يمكن مشاهدته و التعامل معه إطالقا خارج هذا الصنف‪.‬‬

‫الحظ عند إنشاء كائن من الصنف ‪student‬‬ ‫فإنك لم تشاهد أي من العناصر التي تم‬ ‫تخصيص رؤيتها من خالل ‪Private‬‬


‫تأثير الـ ‪ private Access modifier‬؟‬ ‫✓ بحثـــًا عن األمان و عن تقنين استخدام العناصر الموجودة في الكائنات فإننا نقوم‬ ‫بوضع المتغيرات (الصفات) من نوع ‪ private‬و بالتالي فالوصول لهذه الصفات‬ ‫و تغيير قيمها ال يمكن أن يحدث مباشرة و بالتالي نقوم بتوفير دوال لتغيير قيمها‬ ‫أو الحصول على قيمها‪.‬‬ ‫‪ : Set Methods .1‬و هي دوال تستخدم من أجل وضع قيمة لمتغير معين و االسم‬ ‫‪ Set‬ليس فرضـًا أو إلزامـًا و إنما هو اسم يوضح الوظيفة‪.‬‬ ‫‪ :Get Methods .2‬و هي دوال تستخدم من أجل قراءة قيمة متغير معين و االسم‬ ‫‪ Get‬ليس فرضـًا أو إلزامـًا و إنما هو اسم يوضح الوظيفة‪.‬‬


‫ ؟‬protected Access modifier ‫تأثير الـ‬ protected ‫ العنصر الذي يسبق تعريفه‬protected Access modifiers ✓ ‫يعني أن هذا العنصر متاح استخدامه و التعامل معه فقط للعناصر الموجودة داخل‬ )‫الصنف االبن (أي االبن الذي ورث من االب‬ Parent Class

protected x; private z; public y;

Child Class

protected x; public y; private a;


‫تدريب ‪ : 3‬استخدام الـ ‪Access Modifiers‬‬ ‫✓ انشيء نوع جديد باسم ‪ Employee‬تتمكن من خالله من تمثيل أي موظف مع‬ ‫توفير الدوال التي تمكننا من التعامل مع بياناته‪.‬‬


‫تدريب ‪ : 3‬استخدام الـ ‪Access Modifiers‬‬ ‫✓ قم بإعادة برمجة جميع األنواع السابقة مع االستفادة من مفهوم ‪Access‬‬ ‫‪ Modifiers‬و من مفهوم ‪Set and get Methods‬‬


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.