Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

8 تغريدة 97 قراءة Oct 30, 2019
1. الDynamic Dispatch أهم مفهوم بالنسبة للOOP و كثير من الشركات الكبيرة تركز عند مقابلات التوظيف على فهم المبرمج له قبل أن تدخل معه في تفاصيل او مزايا اقل اهمية. اهمية الDynamic Dispatch ليست تقنية فحسب بل لأن الشركات تحتاج لاكثر من مجرد برنامج يعمل (سلسلة مهمة لمبرمجي الOOP)
2. عندما نقول أن الOOP تسهل صيانة البرنامج فليس بالضرورة أن يكون المقصود بالصيانة هو التعديل على الكود الموجود لإصلاح مشكلة او اضافة ميزة جديدة يتطلبها السوق. بل يمكن ذلك حتى لو فقدنا الSource Code او غادرنا المبرمج الذي قام بتطويره.
3. اذا كنا قادرين على تطوير برنامج من دون الحاجة إلى كوده فذلك يعني ان برنامجنا Extensionable. خذ مثلاً برامج مثل إكسل او وورد او اوتلوك ستجد ان هناك المئات من الPlugins فاموا مطورين اخرين من خلالها بإضافات مهمة لتلك البرامج من دون الحاجة إلى الSource Code!
4. من قرأ عن مباديء SOLID لـUncleBob خصوصا المبدأ الثاني OCP اختصار لـOpen Close Principal فسنجد انه ينص على ان تجعل برنامجك يمتنع عن التعديل و يسمح بالإضافة عليه Extensionable . مقفل عن التعديل بمعنى إذا كتبت Class معين و اشتغل فلا تعدله ابدأً.
5. لو قمنا بعمل كلاس لحساب اسعار المنتجات فقد نحتاج إلى Switch Case نقول فيها إن كان هذا المنتج فحسب سعره هكذا و إن كان الآخر فحسبه هكذا و إن كان الثالث ... و هكذا.
استخدامك لSwitch Case للأسف لا يمت بصلة للOOP فهي مجرد Goto متنكرة و ما تقوم به هو Procedural Programming.
6. الOOP سهلت لنا الPolymorphism فيمكن ان نقوم بإنشاء كلاس لكل منتج يرث من كلاس أب و لهم جميعاً نفس الميثود و لتكن CalculatePrice و من هذه الكلاسات يمكن توريث كلاسات اخرى و في كل كلاس يتم احتساب السعر بطريقة مختلفة. هذا هو الPolymorphism المعروف أو الStatic Dispatch
7. ما ذكرناه يتم من خلال تعديل الكود الأصلي قبل عملية الCompile و بعدها لا يمكن إضافة أي منتج جديد له طريقة تسعير جديدة إلا من خلال الSource Code. لكن ماذا لو تم بيع المنتج و تركنا او اتحنا للعميل إن كان لديه مبرمجين امكانية ذلك دون ان نعطيه الكود ؟
لمثل هذا خُلقت الOOP.
8. هذا الشيء ممكن من خلال الDynamic Dispatch أي يتم تنفيذ ميثود معينة خارجية وقت الRuntime و ليس الCompile. بحيث يبحث البرنامج على احدث Override تم على ميثود معينة. هذه هي الصيانة الحقيقية و اضافة المميزات للبرامج حتى بعد اطلاقها دون أن يتأثر البرنامج الأصلي. (انتهى)

جاري تحميل الاقتراحات...