عبدالوهاب العليوي | Abdulwahab Al-Alawi
267 subscribers
58 photos
3 files
12 links
هنا نحكي عن البرمجة، التقنية، الأدوات، وأشياء تهم كل مبرمج بطريقة بسيطة وممتعة.
Download Telegram
كثيرٌ من الناس يعيشون في دوّامة الانشغال المستمر، لكنهم مع ذلك لا يشعرون أنهم يحققون تقدماً حقيقياً. والسبب في ذلك أنهم يخلطون بين الحركة والتقدّم.

ليس كل جهدٍ مبذول يؤدي إلى نتائج ملموسة، فقد نقضي ساعات طويلة في تصفح المعلومات دون أن نخرج بفكرة مفيدة، وقد ننشغل بالعمل ليلاً ونهاراً دون أن نحقق نقلة نوعية في حياتنا.

السر لا يكمن في كثرة الجهد، بل في حُسن توجيهه. التركيز على الأمور الجوهرية هو الذي يصنع الفارق، أما تشتيت الجهد في كل الاتجاهات، فإنه يؤدي في النهاية إلى الإرهاق دون جدوى.

د. عبدالكريم بكار

#نصائح
2
استخدام super مع override

class Animal {
public String sound() {
return "Generic animal sound";
}
}

class Dog extends Animal {
@Override
public String sound() {
return super.sound() + " + Bark";
}
}

public class Main {
public static void main(String[] args) {
Dog d = new Dog();
System.out.println(d.sound());
}
}
اختر الإجابة الصحيحة
public class Main {
public static void main(String[] args) {
int x = 5;
int y = 2;
System.out.println(x + y * x);
}
}
نحن المهندسون!
2
استخدام super للوصول لحقل الأب
class A {
int x = 5;
}
class B extends A {
int x = 10;
int get(){ return super.x; }
}
B b = new B();
System.out.println(b.get());
int[] arr = {2, 4, 6, 8};
int sum = 0;
for(int i = 0; i < arr.length; i += 2){
sum += arr[i];
}
System.out.println(sum);
من ابرز الكتب المشهوره في مجال OOP سنقوم ان شاء الله بتنزيل ملخص للكتاب بالغة العربية بشرح بسيط و جداً مفهوم

المحتوى منقول من صفحة المهندس المصري
abdulaziz aldeeb على فيسبوك
شاركوا رابط القناة لكي تعم الفائدة وجزاكم الله الف خير
2
عبدالوهاب العليوي | Abdulwahab Al-Alawi
Photo
اول منشور


هنبدأ نتكلم عن كتاب Object-Oriented Thought Process وإن شاء الله نحاول نلخص أهم الأفكار في الكتاب.

الكاتب بدأ الكتاب بحرفين بس وهما OO ومش OOP، وبالتالي في سبب
مهم للتسمية دي، وهو أنه بيقول إن أغلب الناس بتبدأ تتعلم الـOO وهي بتتعلم لغة البرمجة، مثلًا زي C++ أو C#، بحيث إنه دخل على طول في مفهوم الـOOP وهو بيتعلم لغة البرمجة كأنها جزء منها، ولكن الحقيقة إن الـOO ليها طريقة تفكير مختلفة تمامًا، وما ينفعش حد يتعلمها كأنها أداه أو جزء من لغة معينة. وعلشان كدا الكاتب بيقول إنك بمجرد ما تفهم الـOO هتفهم كويس كل المصطلحات التانية زي الـOOA والـOOD والـOOP.

الفرق بين الـOO والـProcedural: هنا الكاتب بيتكلم عن فرق قوي جدًا بين البرمجة الإجرائية وما بين الـOO. والفرق الجوهري ده في كلمة Both، أو كلاهما. والكلمة دي عائدة على الخصائص والسلوكيات، والمقصود هنا هو إن الـOO قدرت تجمعلك البيانات والوظائف في مكان واحد مقفول عليهم، وده بالظبط مفهوم الـEncapsulation، على عكس الـProcedural اللي عبارة عن سلوكيات (وظائف) منفصلة عن الخصائص أو الداتا. يعني ممكن الداتا تبقى في الـGlobal عادي خالص، وأي حد يقدر يوصلها وكمان يقدر يعدل عليها. وبالتالي مفيش تحكم في الداتا بتاعتي أصلًا لأنها متاحة لكل الوظائف.
وبالتالي المقصود بكلمة Both هنا معناه إن ال OO قدرت تجمعلك الأتنين مع بعض في نفس المكان والعملية دي بنقول عليها Encapsulation.

مفهوم الـEncapsulation: الكاتب عرف الـEncapsulation إنه عملية تجميع الخصائص والسلوكيات في مكان واحد، والحقيقة ده كلام مظبوط، ولكني عايزك تفرق ما بين التطبيق السليم والمظبوط للمفهوم وما بين المفهوم نفسه. يعني بكل بساطة أنا أقصد إن كل حاجة ليها طرق كتير جدًا علشان تتنفذ، يعني ممكن أقول أنا لما عملت تجميع للـAttributes والـMethods في مكان واحد وبكدا عملت Encapsulation. كلامك صح، بس هل دي أفضل Encapsulation ممكنة؟ وهنا بقى بيدخل معانا مفهوم جديد بيعزز الـEncapsulation ويخليه أقوى، والمفهوم ده هو الـData Hiding.

مفهوم الـData Hiding: إحنا قولنا إن بمجرد ما عملنا تجميع للخصائص (Fields) والسلوكيات (Methods) في مكان واحد وهو الـClass، وقولنا إن ده كدا اسمه Encapsulation، بس الحقيقة إن كل مفهوم ليه مستويات من القوة، وعلشان نوصل لقوة الـEncapsulation لازم نشرح مفهوم الـData Hiding، وهو بكل بساطة كدا بيقولك بما إنك جمعت السلوكيات (Methods) والخصائص (Attributes) في مكان واحد، بقيت قادر تمنع أو تسمح بالوصول لبعض الخصائص والسلوكيات.

ملحوظة: الكاتب بيقول إن مصطلح ال Object Data أو بيانات الكائن في سياق الـOOP بنقول عليها Attributes. والسلوكيات أو الوظائف بنقول عليها Methods. وبيقولك إن التحكم في الوصول لأي من الـMethods أو الـAttributes بنقول عليه Data Hiding.

يعني بكل بساطة كدا الـData Hiding مش بس تخص التحكم في الوصول للـ Attributes ، لكن بتتحكم في الوصول للـAttributes والـMethod مع بعض عن طريق ما يسمى بالـAccess Modifiers، ودي مسموح تستخدمها سواء مع الـAttributes أو مع الـMethod.

الـAccessors والـMutator: أحيانًا تسمى بالـSetters والـGetters. المفهوم ده بكل بساطة قدرنا نعمله بسبب وجود الـData Hiding. والفكرة كلها في الموضوع إنك بتمنع الوصول لل Attributes وبتخليها private وتسمح بالوصول ليها عن طريق وظائف public. والميزة دي قوية جدًا وبتعملك control قوي جداً على الداتا بتاعتك، وهنتكلم على الموضوع ده تاني بعدين. وعلشان أوضحلك جزء بسيط أوي من أهميتها خلينا نقول أنت عندك كلاس أسمه Date وجواه طبعاً Day و Month و Year لو أحنا مش عاملين الخصائص دي private وكان أي حد يقدر يعدل عليها ممكن يخليلك ال Month يبقي ب 13 مثلاً, وممكن يخليلك اليوم ب 32 مثلاً وده مش منطقي لأن أخر حاجه في الشهور 12 وأخر حاجه في عدد الأيام في الشهور هو 31 وكمان علي حسب الشهر. وبالتالي لما بتعمل Setter بشكل مظبوك بتقدر تحط لوجيك معين علشان يمنع أي تعديل مش مظبوط علي ال Object بتاعك.

كفايه لحد هنا علشان المنشور بقي طويل أوي, المره الجايه هنكمل كلامنا مع الفصل الأول.


صفحة المهندس على فيسبوك
Abdulaziz aldeeb

#ملخص #oop #شرح
2
عبدالوهاب العليوي | Abdulwahab Al-Alawi pinned «شاركوا رابط القناة لكي تعم الفائدة وجزاكم الله الف خير»