طب يا جماعة السلام عليكم اليوم
إن شاء الله يا جماعة هنكمل في موضوع اللي .. اللي
بدأنا فيه المحاضرة الماضية اللي هو ال object
oriented programming أو البرمجة الشيئية بدأنا
المحاضرة الماضية أعطانا مقدمة إيش هو الشيء أو إيش
هو ال object وقلنا إن ظهور البرمجة الشيئية الهدف
منه إنه تحسين هيكلة التطبيقات وترتيبهايعني بدون
object oriented programming كنت أنا مثلا مضطر ان
اتعامل مع عدد كبير جدا من المتغيرات اللي هتكون
موجودة في ملف واحد وضررنا مثال مثلا بيانات طلاب
الجامعة كل طالب له ميت او الف معلومة متعلقة باسمه
ورقمه والقسم اللي سجل فيه والمساقات وكل مساقة جتجا
في علامة ومتى أخد المساق ومعدلات الفصلية ومعدل
التراكم وغير وغيرلأن انا لو بدى اتعمل بدون object
in line of programming معناه ان كل هذه البيانات
بدى اعرفلها متغيرات داخل ال main صح بلا string
مثلا تمثل الاسم string تمثل ال ID array of strings
هتتمثل ال courses array of integers هتتمثل علاماته
في ال courses وكذا لما اخلص كل بيانات اضطر بالواحد
وبدى اضطر اعمل متغيرات تانيةللطالب التاني صح ولا
طالب التالت و هكذا فهعوم في بحر من المتغيرات و هو
يتذكر هذا ال ID تعمل و هذا الاسم لمن لأ موجود ال
object oriented programming برتب الموضوع هذا كيف
بجمع بيانات الشيء الواحد كلها مع بعض و بصير أتعامل
معاه زي كأنه كتلة واحدة يعني الآن أنا الطالب كله
بتعامل معاه انه شيء واحد ايش هو الشيء هذا انه
object من نوع studentجوا طبعا تفاصيل الطالب عامل
زي اللي يرتب الشغلات في ملفات صح ولا يا جماعة؟
وبدأنا المحاضرة الماضية وقلنا ان انت لما تجي تعمل
اي تطبيق فكر في الأشياء الموجودة في التطبيق هذا
مثلا انت بتعمل تطبيق لمدرسة او جامعة الكيانات
الموجودة في المدرسة او الجامعة هي الطالب المدرس
المساقتعال فكر هتلاقي الطالب اللي بيانات متعددة
المساقر اللي بيانات متعددة المدرس اللي بيانات
متعددة يعني على طول كل واحد من هدولة بدك تعمله إيش
لأ جابل ال object class نعمل class عشان ننشئ منها
objects وحكينا الفرق ما بين ال class و ال object
ال class زي مخطط تمام؟ لكن على أرض الواقع مش موجود
ال class صح ولا؟ زي خريطة العمارة مهمة جدا أنك
تعملهالكن هي بتخزنش في ال class بيانات انت بعد ما
تنشق ال class بتعمل object من ال class ال object
من ال class هو هذا اللي بيحجزلك أماكن في الذاكرة و
بخزن فيها بيانات بناء على شكل مين على شكل ال class
صح ولا لأ يعني ال class لسه فيها خمس متغيرات و
أنشأت object من ال class هذا بيروح بيحجزلك في
الذاكرة خمس متغيرات زي ما هو موجود في ال class
شرحنا الكلام هذا المحاضر الماضي صح ولا لأ يا جماعة
فمثلا انا الآن بدي في التطبيق تبقى عندي حاجة اسمها
student فبنتروح اعمل object جديد class سميتها
student وزي ما حكينا دايما اسم ال class بتبدأ ب
capital لان تعالي فاكر ايش ال attributes بتاعت ال
students سمناهم المتغيرات اللي بنعرفها داخل ال
class ايش سمناها attributes مددليش بكرا في
المتحالة تقولي ايش يعني attributes قولي بسمع عن
الكلمة هذهattributes هم المتغيرات اللي بنعرفها جوا
ال class بتمثل بيانات أو المتغيرات اللي هنخزن فيها
بيانات الطالب مثلا String name Int Age String ID
String Department String College Float GPA معدل
التراكم
أنا انشأت هنا ال class و انا هستفيد منها و انا
هستخدمها مش هنا هروح على ال main method في الملف
التاني تمام و هقوله الان روح اعملي object جديد من
student student ايش سميته ال object X من نوع ايش
من نوع student طبعا هنا كإني عملت نوع جديد يا
جماعة مش احنا في عندنا primitive types تمام هدولة
الأساس في الجامعة و في class types اللي هي حاجات
معمولة ضمنيا من إيشمن الـ primitive time أنا الآن
عملت class type جديد اللي هو اسمه student student
x يساوي new student هذا كلمة new student أنا أنشأت
object جديد ايش هيروح يعمل على طول هيروح الذاكرة
هذه الأرض اللي بيبنوا عليها الذاكرة هيروح يحجز
فيها مكان في الذاكرةلمين؟ للـ X إيش في جوا المكان
في الذاكرة هذا؟ داخله إيش فيه؟ كام متغير؟ ست
متغيرات بنفس الأنواع هذه إيش فيهم بيانات؟ إيش
البيانات اللي موجودة جوا ال X؟ مافيش .. مافيش ..
هذه المتغيرات ال variables لكن إيش في ال variables
بيانات؟ولا حاجة تمام؟ ممكن أعمل متغيرات تانية
student y يسوا new student حجز
مكان في الذاكرة تاني و أيضا المكان التاني في name
و age و ID و GPA و department و كل شيء بس طبعا
أكيد ال name اللي تابع لل y غير ال name اللي تابع
لل xلأن إذا أنا بدي أعبي بيانات جوا ال object ممكن
أقوله x.name حطه مثلا أحمد y
.name حطه
علي الان
system.out.println x
.name عشان نطبع مينالاسم بتاع ال X و لو بنطبع اسم
التاني بدي أقوله ايش Y Dot Name لأن
نقطة مهمة يا جماعة ماتحولش
تطبع ال X لحالة ليش؟ مش هتجيب بيانات مفهومة ليش؟
لأن ال X مش هي البيانات انت البيانات موجودة داخل
الـ X كيف هتوصل للبيانات لازم تعمل X Dot عشان توصل
للحاجة اللي بدك إياها انت تمام فال object نفسه
مالوش قيمة تطبعه انت بتطبع الحاجات اللي جوا ال
object ال attributes تبعته هي اللي انت معنى معنى
فيها طب
الان تعالوا ناخد تمرين بسيط قبل ما ندخل على اشي
جديد لو قلنابدنا نعمل برنامج يطلب من المستخدم انه
يدخل بيانات خمس طلاب تفهم؟
يعني احنا الآن بدنا .. زي طالب جدي بده يسجل في
الجامعة بده يدخل بياناته صح ولا؟ وبياناته بعد هيك
يتم حفظ بيانات الخمس طلاب كلهم و بعد هيك مثلا بدي
اعمل loop انه يطبعلي تقرير عن كل طالبيعني كل طالب
يطبع للبيانات اللي دخلتله إياه خلّينا نحلل السؤال
هذا الأجزاء أول حاجة عملية إدخال بيانات احنا
بنعرفها صح ولا لأ يعني أكيد هحتاج لإيش يا جماعة لأ
Scanner Scanner S يسوى New Scanner System
.inطيب حكيت الآن انا بدأ دخل بيانات كام طالب؟ خمس
طلاب يعني هحتاج for loop صح ولا؟ عشان اقوله دخل
بيانات الطالب الأول و دخل بيانات الطالب التاني و
هكذا بعدين
بيانات الطلاب اللي بدأ أدخلها بدأ أحفظها ليش بدأ
أحفظها؟ عشان أرجع بعد هيك أطبعها صح ولا؟ مش انت في
الجامعة اللي لما بدأ دخل بياناتك بتضيع لما يسكر
البرنامج لأ بدأ أحفظها عندهطيب قبل ما نعمل for
loop و نعمل إدخال للبيانات بدنا نعمل الحاجة اللي
نحفظ فيها بيانات الطالب لأن احنا أخدنا مثال قبل
هيك أن نطلب من الشخص يدخل أرقام و بعدين نطبعها بعد
هيك الأرقام ممكن نحفظها في array صحيح ولا لا لأن
أيضا بدنا نعمل array عشان نحط فيها بيانات الطلاب
مرة تانية، قبل ما أبدأ عملية إدخال بدي أجهز array
ليش؟ عشان أحفظ فيها البيانات اللي دخلت طيب، ال
array هتكون من نوع إيش؟ فكروا معانا يا جماعة، من
نوع إيش؟ ليش string؟ أسماء بقى، ما هو الطالب SSM؟
هاي بيانات الطالب عندك من نوع student من نوع
student زي ما قلت منكم، أنا ليش عامل student؟خلاص
هلجيت انا بتطلع على الطالب انه مش string ولا
integer ولا float بتطلع عليه انه student عشان احفظ
بياناته ايش بالزمني array of students معايا ولا لأ
يا جماعة فبدنا نيجي نعمل هاي array ايش بنسميها
students يساوي new student وبنقصين جداش حجم ال
arrayخمسة أنا قلت هذه array ايش نوعها student قداش
حجمها خمسة ايش فيها حاليا فاضي مافيش فيها ولا حاجة
اذا انت بدك تحط في ال array integers اعملها من نوع
integer اذا بدك تحط فيها float اعملها من نوع float
انا ايش بده احط فيها بده احط فيها students وين هم
واحد بيقول وين ال students لسه بدنا ندخلهم صح ولا
يا جماعةطيب هاي عملنا ال array الان بدنا نعمل
عملية loop عشان ندخل بيانات الطالب و نحط البيانات
هذه جوا ال array students كيف؟ هالجيتها نشوف هاي
for loop integer I صفر I أصغر من خمسة أو نحط
students dot length أحسن عشان لو قررت بعد هيك أدخل
تلت طلاب أغير بس إيش أغير هذا طيب I زائد زائدالان
تعالى ندخل بيانات الطالب system.out.println enter
student name خلينا
ندخلهم أول حاجة واحدة ايش بدنا يعني هذه ال gate؟
بدنا اسم تمام فبنعمل متغير اسمه name ليش عملنا
name؟ عشان نقرأ الاسم وهي ال scanner.next
line الان نفس هذه في نفس ال loop لاحظ لماذا؟ لأن
انا الان في كل لفة بدأ أدخل بيانات الطالب الواحد
اللي هي مالها بيانات متعددة يعني الطالب الواحد
بدناش ندخل كل حاجة احنا بدنا تلت حاجات بدنا مثلا
ال name وبدنا ال ID وبدنا ال college
تمام؟ تلت حاجات هدولة كلهم جوا مين؟ جوا ال follow
يعني في اللفة الواحدة هيطلب مني تلت حاجات ال name
و ال ID و ال college طبعا بس إيش لما بنغير
المتغيرات هدولة يعني بنعمل string تاني اسمه ID و
string تاني اسمه college
أنتوا معايا باللي عملته لحتى الآن يا جماعة؟ كل
اللي سويته انه عملت scanner و عملت array of
students عشان نحفظ فيها بيانات الطالب بعدين بدأت
اعملت for loop بحجم ال array يعني خمس مرات في كل
مرة هيطلب مني أدخل ال name و ال ID و ال college ال
name هيحفظه في ال string name و ال ID هيحفظها في
ال string ID و ال college هيحفظه في ال string
collegeالان لسه اللي عملته مش كامل اول حاجة احنا
ماخزلنا حاجة صح ولا المفروض ان هذه البيانات نحطها
كلها وين؟ في ال Array هنا الان انا لحتى الان يا
جماعة مااستفدتش من ال class student اللي عملته صح
ولا انا ليش عملها ال class student مش عشان اتجمعلي
بيانات الطالب صح ولاالان ايجا الوقت اللي استفيد
منها انا عندى بيانات الطالب اسمه فرفطة ايش هي
بيانات الطالب اللي قرأتها ال name و ال ID و ال
college و ممكن يكون فيه حاجات تانية انا مابعملش
البرنامج كامل صح ولا لأ الان بدنا هدولة احنا ليه
اصلا عاملين ال object oriented programming ليش
عشان نتسهل حياتنا و نجمع بيانات الواحد كلها مع بعض
فاجهت الان بعد ما دخلت ال name و ال ID و ال
college قلتله عمللي object جديد
اسمه T مثلا يساوي new student شايفين؟ عملت object
جديد اسمه T من نوع إيش؟ من نوع student ليش؟ أنا
الآن جبت البيانات، بدي أحط ال name وال ID و ال
college وين؟ في هذا، مش أنا عامله عشان أجهزه، هذا
الملف اللي بيجمعلي البيانات فالأن بروح لل T و
بقوله name، حط فيه مين؟
الـ name و بروح لل T dot ID و بحط فيها ال ID و
بروح لل T dot college و بحط فيها ال college لأن
الواحد بيقول شو هذا T dot name يسمى name لأن في ال
name هذه بتختلف عن من عن ال name هذه ال name اللي
أنا معلم عليها الأخضر هذه اللي موجودة جوا من جوا
ال object Tتمام؟ مش أنا انشأت object T و راح حجز
مكان في الذاكرة تمام؟ فأنا قلت لخوض الموجود في ال
name اللي أنا قرأتها من ال scalar وحطها وين؟ وحطها
هنا أنا الآن قاعد بحط وين؟ بعب في ال object خوض ال
ID اللي دخلته من ال scalar وحطه في ال T.ID خوض ال
college اللي دخلته من هنا وحطه في ال T.College
يبقى أنا الآن في الأسطر هذه أنشأت object وعبيته
بالبيانات صار
الآن بيانات الطالب كلها موجودة وين؟ في الـT بدل ما
هي موجودة في name و ID و college و GPA ودخل ..
جمعتهم في T في حاجة واحدة
طبعا هي هذا الخطوة اللي ضايلة ايش الخطوة اللي
ضايلة الان ال object اللي أنشأته T هذا بتحطه في
الارة طبعا كيف؟ حط students I يساوي T ايش عن
students I؟ هذا مش loop الان في الاول I ايش
قيمتها؟ صفر هييجي عند students صفر ويحط فيها ال
object T وين حطه؟ في students صفرفي أول مكان في
الـ array بعدين هيرجع اللفة تاني ايش صارت ال I؟
بواحد هيطلب منك تدخل كمان اسم وكمان ID وكمان
college صح؟ و بعدين هيروح يعمل object تاني اسمه T
واحد بيقول طب انت عملت T قبل هيك خلاص ال T اللي
قبل هيك انحفظ وين في student 0 هرجعت في اللفة
التانية ال T الجديد هذا object تاني مختلفطبعا في
كل لفة احنا بنعرف انه اول ما تخلص اللفة المتغيرات
اللي كانت موجودة في ساختها مابطلت بس انا طبعا قبل
ما اطلع من اللفة روحت حفظت وين؟ في students 0 لأن
في اللفة التانية عمل object وحط فيه name لجديد و
ID لجديد وكل جديد جديد وحطه في students 1 طبعا و
بعدها رجع لللفة اللي بعدها صارت ال I ب2طلب مني
أدخل name و ID و college لأن بدي أجمعهم هدولة
أنشأت object T و حطيت في name و ال ID و ال college
و بعدين أخدت ال object T اللي عملته للمرة التالتة
و حطيته في students 2 و
هكذا في الآخر إيش هينتج بعد ما خلص ال loop array
of studentsبيانات خمس طلاب عندي خمسة objects من
نوع student من نوع student كلهم الخمسة كل واحد
فالخمسة فيه أيش؟ فيه بيانات متعددة الآن خلصنا ال
for loop بدنا نيجي بعدها نطبع بيانات الطلاب اللي
دخلناهم for loop على مين؟الـ Array of Students فور
نستخدم هذه الـ gate الـ for loop المختصرة لكل
student T موجود في أو A مثلا موجود في ال students
أطبع
لي system.out.println نقول له مثلا name a
.name
الـ A هذا الـ object اللي أنا بمر عليه لما بدي
أطبع بيانات من ال object لازم أقوله a.name و بعدين
وراها slash in college
a
.college و بعدين كمان مرة slash in id ذائد
a.college
ID Head Enhanced For Loop الـ For Loop المختصرة يا
بتعمل For Loop من I صفر إلى كذا يا بتستخدم الـ For
Loop هذا يعني
تعالوا نجرب إيش هيطبعلي .. إيش هيصير يعني أنا هاي
شغلت البرنامج بدأ في أول لفة طلب مني name هاي أحمد
ال IDCollege IT هاي التاني محمد هاي
medicine التالت علي الرابع
برضه
IT الخامس
هي IT او Art طيب الآن اعملها بس كلها وراها خلص هنا
هى ايه الشهادة اللى موجودة هنا هى الطباعة على طول
طبعة وراها هى لف على ال students name أحمد college
IT ID كده بعدين ارى علي بعدهم name محمد medicine
ورقمه وهى التالت وهى الرابع وهى الخمس
ونرجع للـ code هذا الان يا جماعة ال code هذا اكيد
طبعا هو استخدم الحاجات اللي احنا درسينها قبل صح
ولا؟ فيها scanner و فيها for loop هذه الحاجات
ضايلة احنا بنستخدمها اساسيات هذيك اذا انت ضعيف
فيها ده مش شغلي مش مشكلتي طبعا؟ لكن احنا استفدنا
من ال object oriented programming عشان نظم
البيانات تخيل انت الآن ماعندكاش objects طبعا؟طب
هيبقى بدك تعمل خمس متغيرات للاسم وخمس متغيرات لل
college وخمس متغيرات لل ID وخمس متغيرات للمعدل
وخمس متغيرات لل department صح ولا لأ وعوم عاد انت
في ايش في خمسين متغير الان لأ انا فعلا صح دخلت
name و ID و college بس في الآخر ايش عملت جمعتهم
كلهم زي اللي بيجمعهم في ملفبس مانعش نسميه ملف، إيش
مانعش نسميه object object من نوع student حطيت فيه
ال name و ال ID و ال college و بعدين أخدت ال
object هذا و خزنته في array array من نوع إيش؟ لازم
ال array تكون من نفس نوع ال data اللي بتخزنها
array من نوع students بعد ما خزنت كل حاجة عملت
loop و طبعت بيانات ل student
واضحة هذه يا جماعة كيف احنا .. يعني المرة الماضية
احنا ركزنا اكتر على كيف نعمل ال class و ايش في
يديتها هيني قاعد بفرجكها ال gate انه كيف هتسهل
علينا شغلنا و كيف بتجمع البيانات مع بعض الان انت
كل بيانات طلابك بكل تفاصيلها موجودة عندك في مكان
واحد اللي هي ايش ال array اللي اسمها students كل
حاجة كل تفاصيلها طبعا بدك تتشعب بعد هيك تعمل loop
على ال array هذه تدخل لكل object وكل object بتجيب
منه بياناتهمضحك كيف يا جماعة؟
طب
يا جماعة، من هنا نجيه ال gate نتعلم إش جديد ال
class بتاعتنا إيش محتوياتها لحد تلان؟
ال إيش سميناهم هدولة؟ attributesصح ولا لأ هذول
سمناهم attributes المتغيرات اللى بتتعامل معاهم ال
class بكل ال class ممكن تحط فيها حاجات تانية زى
ايش مثلا احد فوائد ال object oriented programming
لأ بدنا نعمل حاجة اسمها او نتعلم اشي جديد اسمه
encapsulation encapsulation
ايش يعني كلمةencapsulation من كبسولة هلجيت انت
الكبسولة في الأدوية مثلا بتبلبعها وانت مش عارف اش
فيه جواها صح ولا؟ خلاص حاجة هيك مغطية يمكن لو
فتحناها وشوفت اللي فيها تكش وما تاخدهاش هم حاطينا
كبسولة عشان انت ماتشوفش اش فيه جواهاهل جيت في
البرمجة عندنا ايضا من اهم مبادئ ال object oriented
programming اللي هو ال encapsulation ايش يعني
بيعملوا كبسولات؟ لأ بيجي بقولك احنا مش منطق انه
انا كل code اعمل .. يعني احنا في البرامج الكبيرة
اش اللي بيصير يا جماعة؟ بيصير انا اعمل code ويجي و
برمج تاني؟يكمل على ال code تبعي أو يستخدمه يجي
مبرمج تالت برضه يكمل عليه وإلا كيف ال projects أو
المشاريع البرمجية بتصل لحجوم هائلة وكبيرة انه لازم
ندعم ان الناس تكمل على بعض فمبدأ اتكمل على بعض
مثلا انا في عندنا method بتجيبلي مثلا ال factorial
واحد بدي عمل عمليات حسابية ومحتاجيحسب factorial
لأن هو مش لازم يروح يبدأ من الصفر يبرمج كيف ينعمل
ال factorial ممكن يكون فيه حاجات جاهزة تحسبله ال
factorial ممكن يعني واحد زميله يكتب code يحسب
factorial هو يستخدم يعني هذا معنى إيش أعادة
استخدام ال code لأن احنا مثلا في عندنا method
اسمها substring إيش في ديتها؟بتقطع في النص لأن هذه
الـ substring انت بس بتعمل تقوله dot على اسم ال
string صح ولا و بطلعلك substring و بتديله بس
المعلومات اللازمة و لحاله بنفذ لأن عارف ان ال
substring ضمنيا في ناس تعبت فيها لما عملتها ليش؟
راح تتعامل مع characters و تشوف انت وين ال index
اللي حطيته البداية و وين ال index النهاية و تروح
تقطعهم و ترجعلك إياهمكنص مستقل يعني في شغل تموين
جوا ال substring لكن ال substring قال لك احنا مش
كل واحد بده يقطع بده يروح يكتب ال code هذا احنا
بنريحه نديله ايش نقوله روح اكتب بس substring
وبرجعلك المعلومات اللي بدك إياها جاهزةequals
ignore case هذا الفكرة عملية بسيطة هذا ال equal
ignore case ايش بيعمل لما تديله انت string و
string تانية بده يقارن الحرف الأول بالأول و التاني
بالتاني و التالت بالتالت لحد ما يخلص ال strings و
في الآخر بيقولك انه true او false اذا كانوا كلهم
يسووا بعض الحروف بيقولك true لأن هذا انت لو بدك
تعملها بدك تضطر تعمل for loop صح و تمر على كل حرف
حرفلكن هو عملها جاهزة لك انت عشان ان رايحك مش كل
ما بدك تقارن جملتين تروح تعمل for loop وتقارن حروف
بعض لأ بنقول لك نفذ equals ignore case او equals و
بتعمل اللي بدك هي فالان في مفهوم في البرمجة اسمه
ال methodsالدوال ايش هي ال method بيجي البرمجين
بيقولك انا بده رايحك انا بده اعمل الخوارزمية و
اتعب في ال code و في الآخر بحطلكيها جوا ايش جوا
method بحيث ان انت ماعليك عشان تنفذ المطلوب تستدعي
ال method هذا واضح ان ايش بنعمله يا جماعة؟ احنا
كنا في السابق مستخدمين لل methodsكنا ننشط String
أو Scanner next to هذا الـ next to عبارة عن إيش؟
أو next int أو next line؟ هذا عبارة عن method
بتقرأ String ال substring و ال equals هذه كلها
عبارة عن methods برضه احنا كنا نستخدمها هل جد احنا
بنتعلم كيف نعمل methods مرة تانية إيش هي ال
method؟هي عبارة عن جزء من code بيعمل مهمة معينة
تمام؟ وانا بديش أخلي اللي يستخدم ال method هذه
يعرف التفاصيل بديش أعده بدي أقوله خلاص بدك تعمل
شيء معين روح استدعي اسم ال method هذا هذا هو ال
encapsulation وين ال encapsulation موجود؟ أنا ال
code تبعي كله حطيته في capsuleاللي هي مين؟ اللي هي
ال method تمام؟ و قلتله خلاص أنا بضريح أروح أستخدم
ال method هذه حط بس اسم ال method في الحالة هذه يا
جماعة طبعا حتى كودك كود المبرمج اللي بيستخدم يكون
ماله صغير صح؟ لأنه بس هيستدعي ال method كلمة واحدة
لو فيش method مضطر هو يروح إيش يعمل؟ يكتب ال code
كامللأن كل المكتبات أو المبرمجين اللي بيشتغلوا
حالياً مافيش حد بيبدأ يشتغل من الصفر كله بيستخدم
مكتبات و methods عملها مين؟ عملها مبرمجين تانين
مثلا اللي بيشتغل برمجة Android بيقولك هذا ال
method بتفتح لك نافذة جديدة هذا ال method بتحط لك
زر هذا ال method مثلا بتجيب لك .. بتقرأ بيانات من
الانترنت حاجات مالهامعظمها جاهزة تمام؟ انت ماعليك
إلا تستدعي ال method وطبعا هذه هي اللي خلت البرامج
مالها تتقدم و تكبر بشكل كبير لو فيش methods موجودة
كان مضطر كل واحد يعمل تطبيق يروح يبدأ من أين؟ من
الصفر و هياخد وقت كبير جدا لما يصل للمطلوب لكن
بوجود المكتبات و ال methods و ال encapsulation زغر
ال code ووفر عليك جهد كبير جداتمام؟ لأن احنا بدنا
نتعلم كيف نعمل methods احنا لحد الآن مستخدمين لل
methods بدنا نتعلم كيف نعملها كيف ننشأ methods كيف
أنت تنفذ مبدأ ال encapsulation طيب عشان نفهم
الموضوع هذا تعالوا نشوف المثال البسيط هذا يا جماعة
لأن نرجع لل code اللي احنا عملناه
الان لو انا قلتلك انه انا بده امر على بيانات
الطلاب اللي موجودة في ال array و اعمل منها تقرير
بشكل معين يعني بده اقول مثلا اكتب عنوان التقرير
تقرير الطالب و تحته ييجي مثلا ال name و تحته ييجي
ال college تمام؟ و بعدين ييجي عندى المعدل و بعدين
مثلا يحسب لقدش الطالب عليه غرامات او قدش عليه فلوس
تمام؟ يعني بده يعمل للطالب ايش تقرير متكامللأن
عشان نعمل زي هيك بدنا هتقوله بسيطة بنروح على مش
هاد ال for loop اللي بدها تطبع تمام؟ لكل طالب بدنا
نقوله نطبع system.out.println report
about student ونحط
ايش مثلا a.name تقرير عن طالب كذا كذا مثلالأن هترن
هذه برضه ايش طبعا
هدف السطر الأولاني و بعدين السطر التاني بدنا نطبع
خط تحتها طبعا بدنا نقوله اشي زيك مثلا يعني يطبع
الاسم و يطبع تحته ايش خط و بعدين system.out
.println يكتب مثلا student id اللي هو ايش student
idID و بعدين تحته هنا
college و هنا department
و هنا برضه college و هنا
department بيكفل هنا تمام هذا
زي تقرير مبسط عن عن الطالب لأن أنا لما أعمله بدي
يمر على يجيب كل object للطالب و يروح يطبعلي
البيانات البيانات هذه كلها طيب اللي أنا حابب أعمله
اللي حابب أسويه أنه أسوي إشي بدل ما أعمل أكتب
الخمس سطور هدولة أكتب سطر واحد أقوله a.print
report هذي
مش موجودة هي طالع علمليها بالأحمر ليش؟ مش موجودة
حاليا بدا أجي أقوله ايه؟ مين ايه؟ اللي هو ال
object بتاع ال student تمام؟ print report بس أقوله
print report إيش يعمل؟يطبع لي بيانات ال .. بدل ما
الخطوات هذه كلها تكون موجودة هنا بس بدي أقوله a
dot print report يطبع لي بيانات الطالب هرجيت هدا
علمليها بالأحمر لأن print report مالها مش موجودة
بدنا نعملها ال print report وين لازم نعملها؟ في ال
class احنا مابنعملش حاجة في ال object يا جماعة
احنا ال object بننشئه وبتم إنشاء ال object بناء
على مين؟ على ال classفالان انا عشان يكون عند ال
method هذه لازم اروح اتخططلها و اعملها في ال class
في ال class قولنا تاني ايش فايدة ال .. هذا ال
method هذا بنسميه method وظيفة انه تطبعلي تقرير عن
الطالب طيب روحت انا على ال student تعالي هنا هذه
ال attributes انزل تحتها و بدنا نعمل method جديدة
تمام ايش بنسميها printrepo يعني كيف تنشئ method
جديدة لحظة عشان تنشئ method جديدة طريقة إنشاء ال
method كانت تالية أول
حاجة لازم تكتب كلمة بنسميها أحلى ال scope حاليا
هنكتبها كلمة public هنفهمها بعدين بتكتب بس كلمة
public بعدين بتسيب مسافة و بتكتبreturn type إيش
يعني كلمة return type؟ نوع البيانات المرجعة من
تجربتنا قبل ذلك مع بعض ال method في method بترجع
integer وفي method بترجع string وفي method بترجع
إيش حاجة يعني
مثلا dot lengthبترجع integer dot substring dot
equals بترجع Boolean صح ولا يا جماعة فهنا انت
بيقولك لما تعرف method جديدة لازم تحدد الحاجات هذه
ايش بترجع ال method فبدك تحط ال return type بعدين
بتسيب مسافة هذه كلها مسافات وبتحط ال method name
اسم ال method و لاحظ ان اسم ال method دايما بكون
small letter زي نمط تسمية ال variable يعني مثلا
انت ال method اللي استخدمتها ال substring capital
ولا small بتكون small equals ما لها تكون small
next line برضه small بتحط اسم ال method و بعد اسم
ال method بتفتح cos
جوا القسين بتحط ال data types اللى
بتاخدها ال method هلجيت برضه احنا لما اتعاملنا مع
ال methods دى جماعة فى methods بتاخدش حاجة صح و لا
زى مين زى ال length مش ممكن نفتح القسين و خلاص فى
methods بتاخد بيانات زى index of صح و لا يا جماعة
مش بتاخد رقمفي كمان substring بتاخد رقم او رقمين
صح ولا يا جماعة؟ equals بتاخد بيانات؟ equals بتاخد
ولا بتاخدش؟ بتحط بين قصين ايش string تمام؟ فهنا
هذا optional ممكن تحط ممكن تسيبه فاضي ايش معناه
تسيبه فاضي؟ معناه ان مثلا بتاخدش حاجة اذا بتاخد
حاجة لازم تحط البيانات اللي هناأحنا قاعدين نحكي
بالصيغة العامة لتعريف method لأن لسه ما خلصناش بعد
القوسين بتفتح قوسين ال code لإيش قوسين ال code
اللي هو بتحط فيها ال code اللي بده يتنفذ لما
تستدعي ال method بالاسم يعني مرة تانية عشان تستدعي
ال method أول حاجة بتحط هنا public و بعدين بتسيب
مسافة بتحط نوع البيانات اللي بترجعهاالـ method إذا
بترجع integer بتحط integer إذا بترجع string بتكتب
string إذا بترجعش حاجة إيش بتكتب كلمة void؟ إيش
معنى void؟ يعني بترجعش حاجة زي غير معروف معناها أو
مجهول void بالإنقليزي معناها زي مجهول أو غير معروف
تمام؟ هد أمتى بتكتب كلمة void؟ إذا ال method
بترجعش حاجة إيش يعني بترجعش حاجة؟ ال method مثلا
بتطبع وخلاصوبعدين بتسيب مسافة بتكتب اسم ال method
ايش بنسميها ال method بتاعتنا print report
وبعدين تضع قوسين هل هنعطيها الحاجة ال method هذه؟
لن نعطيها حاجة حاليًا خلّيها إيش يبقى؟ تضع قوسين
فاضي وبتفتح قوسين وبتكتب ال code زي ما هنشوف في ال
gate طب هذا الكلام أو الصيغة العامة اللي حكيتها
بدنا نطبقها في المثال هذا وين بدنا نكتب الكلام
هذا؟ جوا ال class أول حاجة اتفاقنا بتكتب ايش؟
public وبعدين بتسيب مسافة ايش ال method بتاعتنا
بترجع؟ ولا حاجة هي void ايش اسم هذا ال method؟
سميها باسم اللي بدك هي بس دايما انت ساميها باسم
يدل على ايش بتعمل print report الان افتح قسين ايش
بدنا ناخد من القسين حاليا بدنا عشان نعطيها حاجة و
بعدين اعمل افتح code زي هي ايش بدنا نحط جوا ال
code تمام نرجع ل .. شايفين ال code هذا يا جماعة
تمام بدنا ناخد كله من هنا
وحطه وين؟ جوا ال print report طبعا
لسه فيه أخطاء الفكرة هال gate أنه أنا أول ما
أستدعي أو أكتب كلمة print report لحاله هينفذ مين؟
الأسطر هذه، بس لسه فينا غلط بسيط موجود، إيش هو؟
الآن هنا إيجاى اتقوله a.name، بقوله مين ال a هذه؟
أنا بعرفهاش، تمام؟ ال a هذه كانت موجودة في ال
main، صح أو لا؟ الآن أنا ال print report لاحظ أن
هي موجودة جوا ال object هتكون، تمام؟ فأكتب على طول
إيش؟ ال name
هذا الـ A mean هو لو أنا شغال في ال main و أنشأت
object عشان أصل للحاجات اللي جوا ال object لازم
أكتب اسمه dot لكن أنا مادام ده شغال جوا ال class
ما هي ال name موجودين فوق تمام بطبعها هنا على طول
احنا لسه هناخد 80 اكتر على ال method لأن هيك ال
method كاملةهذا ال method كامل استخدمتها لسه و اين
هستخدمها من ال main و لاحظ ال method هذه وين
موجودة جوا ال class يبقى عشان استخدمها لازم احط
اسم ال object dot زي ايش؟ زي ال name و ال age و ال
ID و ال department هدولة كلهم لما استخدمهم من ال
main ايش كنت عمل؟كنت أحط اسم ال object dot و نفس
الحاجة ال method هذه زيها زي مين زي اللي فوق عشان
أستخدمها لازم أقوله ايه أو اسم ال object dot إلى
أن ارجع على ال test هنا إلى
أن أنا هنا عملت loop على ال studentsبدي أطبع تقرير
عنهم بدل ما أقول له system.out title و أطبع لسطر و
كذا و كذا و حسب ليه لأ أقول له a dot تمام هلقيت
طالعش عندي هدول ال attributes و تحت انزل هنا تلاقي
حاجة بالغامض شايفها اسمها print report إيش بتاخد
بالقسيل؟ ولا حاجة إيش بترجع؟ void يعني إيش يعني
void؟ ولا حاجة هذا encapsulation أنا بس كتبت كلمة
print reportو إيش هيعمل هو؟ هينفذ لكل ال code
الموجود جوا ال print report تعالي أعمل run أجيتها
نورت في إيش؟
خليني أحط هذه تلاتة مثلا عشان طيب
أحمد
it.name.name
.name.name.name.name.name.name
.name.name.name.name.name.name.name.name.name.name
.name.name.name.
أحمد شايفين ولا لأ هدا مين نفذه ال method اللي
عملته و بعدها report about student علي و report
about student رامي الان
واضح مفهوم وين الـ encapsulation موجود يا جماعة؟
ال code اللي بتطبع التقرير عن الطالب كله جمعته وين
يا جماعة؟ جوا method وفي فادة تانية الآن في أي
مكان في التطبيق لو أنت محتاج تطبع مرة تانية تقرير
عن الطالب بس بتستخدم printer هل في زمان بدون
method؟كنت مضطر انك ال code تنسخه و تحطه تاني صح
ولا لأ؟ يعني انت لو عامل code عشر سطور و بدك
تستخدمه مرة تانية كنت اضطر تنسخه زمان هلجيت؟ لأ ال
code ورم كله موجود مجمع جوا method ماعليك إلا بس
تستدعي ال method لو استدعيته عشرين مرة عادي بس
بتنفّن تمام؟ فهذا برضه أحد الفائدات ان هو اريحك من
تكرار ال code تمام؟ واضح هذه يا جماعة؟خلاص المرة
الجادة نكمل