Lesson 6

بسم الله الرحمن الرحيم

والصلاة والسلام على سيدنا محمد صل الله عليه وسلم

النهارده إن شاء الله هنتكلم عن ال OOP .
اولاً: ما هو ال OOP :
هو اختصار ل object oriented programming  وهوعباره عن طريقه لتنظيم الكود ولسهولة التعامل معه .
وسمات ال OOP ثلاث :

1-   Encapsulation
2-   Inheritance
3- Polymorphism

-          Encapsulation: وهى عباره عن تجميع الاشياء التى لها نفس الصفات وتؤدى نفس الوظائف ووضعها فى Class واحد ، وزى ما شرحنا فى عمل ال Class ان الصفات هى ال properties وان الوظائف هى ال methods والجزء ده احنا شرحناه فى شرح ال class وشرح ال method بس هنا مهم نعرف اسم ال Concept نفسه.

-         Inheritance: وده بقه معناه التوريث ، يعنى ايه توريث ؟ اولاً لازم يكون فيه parent class وهو بمثابة الclass الأب اللى هيورّث كل صفاته ووظائفه ل child classes وال Classes  ديه كأنها أبناء هذا ال Class الأب .
علاقه ال inheritance بتكون is a relationship بمعنى مثلا لما اقول Ahmed is a male يبقى كده احمد هو ال Child و male هو ال parent.

n    مميزات خاصية ال inheritance :
1-   طبعاً بتوفر علينا كتابة كود كتير يعنى لما نعمل class ونلاقى ان صفاته ووظائفه زى class  تاني موجود واحنا عملناه قبله يبقى نستخدم ال inheritance وهى هتوفر علينا كتابه كود ال class التاني.
2-   Reusing code وده معناه انها زى ما بتوفر فى كتابه الكود برده بتعلمنا اننا نعمل reusing للكود اللى احنا عملينه اصلا وتخلينا نستخدمه اكتر من مره.



n    إزاى بنقدر نستخدم خاصية ال inheritance ؟ طبعا احنا الاول اللى بنحدد ايه اللى نستخدم فيه inheritance  وايه اللى مش ضرورى
وده مثال على استخدام ال inheritance :

 اولاً: ده شكل ال class  ال parent وفى المثال ده انا سميت ال class برده parent:



-         Parent class عبارة عن class عاديه بنكتب فيها ال properties وال methods  اللى احنا عايزينه .
ثانياً: ده شكل ال child class 

-         وزى ما احنا واخدين بالنا هنلاقى فى الصورة كلمه extends وبالكلمه ديه كأنى بالظبط خدت كل ال properties and methods بتاعت ال parent class ووضعتها فى ال child class ، وبنكتب جنب كلمه extends اسم ال class اللى عايزين نورث منها.
-         فى الصورة السابقه انا مش كاتب اى كود داخل ال child class ومع ذلك لو خدت منه object هلاقى جواة الحاجات بتاعت ال parent class كما فى الصورة التاليه :



-         هنلاقى x ,y ومكتوب جنبهم parent يعنى دول بتوع ال parent classوهنلاقى تحت ال sum method ومكتوب برده جنبها parent
-         بكده نفهم ال child class تقدر تستخدم كل الحاجات بتاعت ال parent طالما الحاجات ديه مش private لان لو اى properties and method عباره عن private يبقى ال child class مش هتشوفها ولا هتقدر تستخدمها لكن لو اى access modifier تانيه يبقى هتشوفها وتستخدمها .
-         وطبعا لو عايزين نكتب كود داخل ال child class نقدر بس ال child بس هى اللى هتستخدمه لكن ال parent ما يقدرش يستخدم الكود بتاع ال child class كما فى المثال ده :


-         فى المثال السابق welcomMethod  ديه موجوده فى ال child class بس غير موجوده فى ال parent .
-         ملخص اللى فات ان ال child class بتورث من ال parent class كل الproperties and methods  بس ما يكونوش private يعنى تقدر تستخدمها على طول كأنها موجوده فيها اصلا لكن العكس غير صحيح .

ملحوظات :

-         لو عندى variable فى ال Class ممكن بدل ما نستخدمه باسمه على طول نكتب this.variable name وthis بتعبر عن ال class اللى احنا فيها ، كما فى المثال :

-         هنلاقى فى المثال السابق اتنين j بس كل واحده مختلفة عن التانيه وهى ديه ميزة this بتخلينا نقدر نفرق مين من ال variable يخص الclass  ومين داخل ال method
-         لو عايزين نستخدم variable او method من ال parent class داخل ال child class هنعمل ايه ؟ فيه اكتر من طريقه ، ممكن نكتب اسمه على طول او نكتب super.name وال name بيعبر عن اسم اى حاجه عايزين نستخدمها سواء variable او method
-         لو عندنا class ومش عايزين اى class تانيه تورث منها نعمل ايه ؟
بكتب قبل الclass  كلمه final
-         كما فى الصورة السابقه اول ما نضع كلمه final  قبل ال class كده معناه اننا مش هنقدر نورث من ال class ديه .
وممكن تجربوها تعملوا ال parent class تبقى final وبعد كده تعملوا فى ال 
child class extends parent البرنامج هيطلع error ويقولك ما ينفعش لأن ال parent عباره عن final

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

السلام عليكم ورحمة الله وبركاته
  

No comments:

Post a Comment