مفهوم البرمجة الشيئية في بايثون
نشرت: 2020-12-01Object-Oriented هو نموذج برمجة يتبع مفهوم الفئات والكائنات بدلاً من الوظائف والمنطق. يُعرف أيضًا باسم الطريقة الفاخرة للتشفير التي تنظم الكود بطريقة تزيد من قابلية قراءة الكود وقابلية صيانته. يعتبر مفهوم OOP موضوعًا مهمًا في البرمجة ويساعد على بناء وحدات قابلة لإعادة الاستخدام لمجموعة متنوعة من المهام في علوم البيانات.
غالبًا ما يكون هذا شرطًا مسبقًا أثناء بناء نماذج التعلم العميق باستخدام مكتبات مختلفة مثل Pytorch حيث يتم إعادة استخدام النموذج الأساسي لإضافة طبقات مخصصة. دعنا نستكشف ما يعلمه هذا المفهوم وكيفية تطبيقه في حالات الاستخدام العملي.
جدول المحتويات
ما هو مفهوم OOP؟
فكر في هاتف ذكي يمكن أن يكون من أي علامة تجارية ، لكنه مجموعة متنوعة من الأشياء المشتركة بينهم جميعًا. تحتوي جميعها على شاشات ومكبرات صوت وأزرار وعلى مستوى البرنامج ، تعمل جميعها تقريبًا بنظام Android. الآن ضع في اعتبارك حالة تصنع فيها كل شركة برامجها من الصفر ، حتى النواة التي تتحكم في معظم مكونات الأجهزة.
قد تصبح هذه عملية مملة ومكلفة ، وبالتالي زيادة سعر الأجهزة. ماذا لو كان هناك نموذج مجرد أو عام يمكن تغييره بمرور الوقت من قبل أي مصنع وفقًا لمتطلباتهم؟ يحاول هذا المفهوم التقاط هذه الطريقة القائمة على الفئة حيث يتم تنظيم الكود في فئات ذات طرق وصول مختلفة.
ما هي الفئات والكائنات؟
الفصول هي مخططات لما يجب تنفيذه. إذا أخذنا في الاعتبار مثالنا السابق ، فيمكننا الحصول على وظائف للاتصال بشخص ما أو تلقي المكالمات أو الرسائل أو تشغيل الموسيقى أو القيام ببعض الأشياء الأخرى.
كل هذه الأشياء شائعة لكل هاتف ذكي ، كما أن عملها الداخلي متشابه أيضًا ويمكن اعتبارها فئة من وظائف الهاتف الذكي أو فئة. يمكن تعريف الكائنات على أنها جميع العلامات التجارية للهواتف الذكية التي ستستخدم هذا التنفيذ الشائع في منتجاتها مع التعديلات.
يمكن أن يكون هناك مثيلات متعددة لهذه الفئة الأساسية ، ويمكن لكل مثيل أن يحمل حالة مختلفة من القيم دون التداخل مع الكائنات الأخرى. في Python ، يمكن الإعلان عن فئة باستخدام فئة الكلمات الرئيسية المحجوزة. علاوة على ذلك ، يتم استخدام مُنشئ __init__ لتهيئة متغيرات الفئة.
شركة كلاس:
def __init__ (ذاتي):
self.name = 'upGrad'
def display_name (ذاتي):
print (f "اسم الشركة هو: {self.name}")
سم = شركة ()
cm.display_name ()
اقرأ أيضًا: راتب مطور Python في الهند
أركان مختلفة من OOP
الآن بعد أن أصبحنا على دراية باللبنات الأساسية لهذا النموذج ، دعنا نلقي نظرة على بعض أهم ميزات / خصائص هذا المفهوم:
التغليف
ينص هذا على أن طرق (أو وظائف) الفئة والبيانات المرتبطة بها مغلفة أو محمية من الوصول العرضي أو الخارجي. هذا يعني أن السمات المحددة في النطاق الخاص أو المحمي لا يمكن الوصول إليها خارج الفصل الدراسي.
هناك قلق لدى بايثون من عدم وجود مفهوم للمتغيرات الخاصة في هذه اللغة ، لذلك يمكن الوصول إلى السمات خارج الفصل الدراسي.
هناك طريقة للتعرف على السمات الخاصة باستخدام شرطة سفلية مزدوجة في بداية الإعلان ، وإذا حاولت الوصول إلى هذا خارج الفصل الدراسي عبر الكائن نفسه ، فستتم مطالبتك باستخدام AttributeError لأن Python تطبق تغيير الاسم كلما اكتشفت متغير خاص. هذا لا يعطي أي أمان لسماتك لأنه لا يزال من الممكن الوصول إليها.
ميراث
كما توحي الكلمة ، فإنه يأخذ جزءًا من فصل دراسي موجود يسمى الفصل الأصلي إلى فصل جديد يسمى فئة الأطفال مع القليل من التغييرات أو بدون تغييرات. يمكننا ربط هذا بمثالنا بهذه الطريقة التي ترث بها جميع العلامات التجارية للهواتف الذكية فئة هاتف عامة تساعدهم في أداء الوظائف الأساسية ، بالإضافة إلى أنه يمكنهم إضافة أكوادهم الإضافية لتحسين تجربة المستخدم وفقًا لاحتياجاتهم. في بايثون ، تتم وراثة الفصل عن طريق:
فئة أ:
بعض المحتوى
الفئة ب (أ):
محتوى الفئة المشتقة

هناك مفهوم آخر متعلق بالوراثة يسمى تجاوز الوظيفة. لنفترض أن وظيفة الكاميرا في الهاتف الذكي العام ليست جيدة ، وأن الشركة المصنعة لديها حل أفضل لذلك. يمكنهم تجاوز هذه الوظيفة مباشرة بتعريفها مرة أخرى في الفصل الفرعي وتطبيق التغييرات هناك.
التجريد
يحدد المخطط أو واجهة لتطبيقات الفئات الفرعية. هذا يعني أن بعض الطرق معرّفة في الفئة الأساسية والتي لم يتم تنفيذها بالكامل ويتم تحديد طريقة عرض مجردة فقط. يمكن أن يساعد في تتبع الميزات المختلفة للوحدة والوحدات النمطية الفرعية التي سيتم إنشاؤها.
على سبيل المثال ، تدعم بعض الهواتف الذكية NFC (اتصال المجال القريب) ويمكن تحديد هذه الوظيفة في الفئة الأساسية ويمكن ترميز تنفيذها في فئة فرعية من الهاتف الناتج. بهذه الطريقة ، يمكن للفئة الأساسية المجردة توفير نظرة عامة للوحدة النمطية والتطبيقات اللاحقة. هنا مثال:
هاتف الفصل:
كاميرا def (ذاتية):
يمر
def NFC (ذاتي):
يمر
فئة Xyz (هاتف):
def NFC (ذاتي):
عودة صحيح
تعرف على المزيد حول: أفضل أدوات Python
تعدد الأشكال
إذا ذهبنا بالمعنى الجذر ، فهذا يعني أشكالًا متعددة لنفس الشيء. يحدد تعدد الأشكال الوظائف بناءً على عدد أو أنواع الوسائط التي تم تمريرها. على سبيل المثال ، يمكن لدالة الطول في Python أن تأخذ أي نوع من العناصر القابلة للتكرار أو الكائن وتعيد طول العدد الصحيح.
يمكن أيضًا اقتباس هذا على أنه تحميل زائد للوظيفة ولكن هنا ميزة في لغة بايثون. لا يمكننا تحديد وظائف نفس الاسم بحجج مختلفة ، وإذا تم ذلك ، فإنها تأخذ في الاعتبار الإدخال الأخير فقط.
حالات الاستخدام العملي لـ OOP
لقد رأينا ما يدور حوله هذا المفهوم وما هي الميزات التي يقدمها. ألق نظرة على بعض الأمثلة حيث يمكنك تطبيق هذا المفهوم:
قالب Jinja: إذا كان لديك بعض الخبرة في إطار Python Flask الذي يتعامل مع المسارات وجانب الخادم ، فإن هذا القالب يساعد في معالجة هذه البيانات في الواجهة الأمامية. بشكل عام ، يتم إنشاء ملف HTML أساسي يتم توارثه بعد ذلك بواسطة جميع الصفحات ليكون لها نفس التصميم في جميع أنحاء موقع الويب.
تطبيقات Kivy: هذه مكتبة تتيح لك إنشاء تطبيقات Python المستندة إلى واجهة المستخدم الرسومية (android و IOS) عبر الأنظمة الأساسية ، وهنا تعتمد معظم البرمجة على مفهوم OOP.
ORM: يوفر مصممو الخرائط العلائقية للكائنات طريقة لتحديد قواعد البيانات العلائقية في كود التطبيق باستخدام أي لغة. على سبيل المثال ، في Django ، يمكنك تحديد أنواع مختلفة من النماذج باستخدام فئات لأنواع مختلفة من المستخدمين.
خاتمة
في هذه المقالة ، ناقشنا ما هو مفهوم OOP ، إنه اللبنات الأساسية (الفئات والكائنات) ، والأعمدة المختلفة ، وأبرزنا بعض الأمثلة التي يتم فيها اعتماد هذا النموذج. هناك العديد من الأماكن التي يُنظر فيها إلى طريقة البرمجة هذه نظرًا لتحسين إدارة الكود والتعاون وتوفير وظائف مجردة للبرامج الأخرى التي تعتمد على ذلك.
إذا كنت مهتمًا بالتعرف على Python وعلوم البيانات ، فراجع IIIT-B & upGrad's دبلوم PG في علوم البيانات الذي تم إنشاؤه للمهنيين العاملين ويقدم أكثر من 10 دراسات حالة ومشاريع ، وورش عمل عملية عملية ، وإرشاد مع خبراء الصناعة ، وجهاً لوجه مع مرشدين في هذا المجال ، وأكثر من 400 ساعة من التعلم والمساعدة في العمل مع الشركات الكبرى.
ما هو OOP؟
البرمجة الموجهة للكائنات ، والمختصرة باسم OOP ، هي تقنية برمجة كمبيوتر تنظم تصميمات البرامج وفقًا للبيانات ، بدلاً من تنظيمها وفقًا للوظائف والمنطق. يركز OOP على الكائنات ، أي حقول البيانات ذات الخصائص والسلوك المتميز الذي يرغب المطورون في التحكم فيه بدلاً من المنطق الضروري لإدارتها. طريقة البرمجة هذه مثالية للتطبيقات الكبيرة والمعقدة التي يتم تحديثها أو صيانتها باستمرار. يغطي OOP التصنيع والتصميم ومبادرات تطبيقات الهاتف المحمول. المزايا الأخرى لهذه اللغة هي قابلية إعادة استخدام الكود وقابلية التوسع والكفاءة.
ما هي اللغات المختلفة في OOP؟
تشكل لغات البرمجة الموجهة للكائنات العديد من لغات الترميز الأكثر استخدامًا في صناعة الكمبيوتر اليوم. توجد لغات OOP في كل مكان. تستفيد هذه اللغات من الكائنات التي تحتوي على بيانات وكود. التغليف والتجريد وتعدد الأشكال والوراثة هي أفكار برمجة موجهة للكائنات. تشمل لغات البرمجة الشيئية الشائعة Java و Python و C ++ و Lisp و Perl. يساعدون في البرمجة باستخدام نموذج الفئات والكائنات. اللغات الأخرى التي تدعم المبادئ الموجهة للكائنات هي Perl و Objective-C و Dart و Lisp و JavaScript و PHP.
لماذا يفضل OOPs؟
هناك العديد من الأسباب وراء تفضيل OOPs. يمكن للمطورين إعادة استخدام التعليمات البرمجية الموجهة للكائنات. يمكنك أيضًا استخدام الوراثة لتكرار المعلومات والوظائف التي تم إنشاؤها مسبقًا. يؤدي ذلك إلى توفير الوقت وتبسيط الشفرة وتوفير المساحة وتسهيل عملية الترميز على أصابعنا. نظرًا لأن معظم الكود موجود في مكان واحد ويتم استدعاؤه وإعادة استخدامه ، فمن الأسهل كثيرًا الحفاظ عليه. بينما توفر معظم اللغات مستوى معينًا من الأمان ، تكون اللغات الموجهة للكائنات أكثر ملاءمة لأن التغليف يتضمن الأمان. تقسم لغات البرمجة الموجهة للكائنات البرنامج إلى كائنات وفئات. يعد هذا مفيدًا لأنه يوفر لتطبيقك إطارًا أكثر نمطية.