الأساطير OOP والواقع


( المصدر )

أريد أن أساهم بـ "5 كوبيل" في النزاع المستمر بين المعارضين ومؤيدي منظمة التحرير الفلسطينية. من المنشورات الحديثة حول هذا الموضوع ، يمكن للمرء أن يلاحظ عنوانًا سلبيًا ساطعًا "كلما نسيتم OOP بشكل أفضل ، كان ذلك أفضل لك وللبرامج الخاصة بك" ، و "توقف عن الجدال حول البرمجة الوظيفية و OOP" المحبة للسلام ، و "البرمجة الموجهة للكائنات بلغات الرسوم" بشكل إيجابي إلى حد ما.

لكن فكرة هذا المقال دفعتني إلى التعليق على مقال آخر:
مثال رائع على OOP هو مجرد فظيعة. ينفذ نظام السمات قضيتك تمامًا ، ولا يتطلب إطلاقًا الإجابة على السؤال الوجودي الخاص ببرمجة الكائن - "ما هو الكائن؟". [...] نسيان OOP ، كان استعارة ناجحة لواجهة المستخدم الرسومية ، والتي حاولوا رفعها إلى وضع الدين.

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

تجدر الإشارة إلى أنه في كل OO PL يوجد نهج OO مختلف ، وأحيانًا شديد الاختلاف ، وأحيانًا لا يختلف كثيرًا عن أساليب OO الأخرى. سأنتقل من النهج المعتدل والبسيط لـ OO Pascal ، الذي تم وضعه بالفعل في Turbo Pascal 5.5 وأخيراً تم تشكيله لـ Delphi 7 (يمكننا ملاحظة اللغات المفاهيمية للمصنعين الآخرين ، على سبيل المثال ، Think Pascal for MacOS). هناك مبادئ أساسية في هذا النهج OO: التغليف ، والميراث (بسيط) ، تعدد الأشكال. والقيود الكبيرة: على سبيل المثال ، ليس هناك أساسا ميراث متعددة معقدة للغاية.

كما كتبت بالفعل في التعليق على المقالة المذكورة أعلاه ، فإن الانتقال من الكلاسيكية باسكال إلى OO باسكال بدا ، في رأيي ، واضحة جدا ومبررة:

أبسط تغليف موجود بالفعل في السجلات. علاوة على ذلك ، فإن مفهوم الميراث يأتي في مثل هذه الأمثلة البسيطة:

type
TCoord = record //  
                    x, y : integer
                  end;
TRect = record // 
                     leftTop, RBot : TCoord;
               end;


«record» «class» ( ), «» .

— , , GUI. « „ ?“». — , — — . . , , ! ( ). — , , . — . , , , , , — , . , . , — . , . ? — : . , . .:

.., .., .. . .
. ., . . 3-, . .: , 2007


, . 3 , , . , . . , . : , . , - ;)

, , , ., , , . , . — . — , , :

[...] , .. IDE GUI, .

, , , . : « — ». , - , , , . : - . , . (, , : , , , .) — , , , , .

Source: https://habr.com/ru/post/ar453836/


All Articles