من بين المطورين ، جذبت البرمجة الشيئية عددًا كبيرًا من المتابعين. وبالمثل ، تلتزم لغة الكمبيوتر الشعبية Python بالنموذج الموجه للكائنات.
إنه يتعامل مع تعريف الكائنات والفئات في Python ، والتي تشكل الأساس لمبادئ OOPs. في هذا البرنامج التعليمي حول "البرمجة الموجهة للكائنات في Python" ، ستتعلم كيفية الإعلان عن فئات Python وإنشاء كائنات منها واستخدام تقنيات OOPs الأربعة.
لذا ، أول شيء أولاً.
ما هي البرمجة الشيئية؟
التركيز الرئيسي للبرمجة الشيئية (OOP) هو إنشاء "كائنات". تشكل مجموعة من المتغيرات والوظائف المترابطة كائنًا.
غالبًا ما يشار إلى هذه المتغيرات بسمات الكائن ، وغالبًا ما يشار إلى سلوكياتها بوظائفها. توفر هذه العناصر للتطبيق بنية أكثر فاعلية ومفهومة. السيارة هي مثال على عنصر.
إذا كانت السيارة عنصرًا ، فستتضمن سماتها أشياء مثل لونها وطرازها وسعرها وعلامتها التجارية وما إلى ذلك. بالإضافة إلى ذلك ، فإنها ستعمل على تسريع وتبطئ وتغيير التروس.
توضيح آخر: إذا فكرنا في الكلب كعنصر ، فقد تكون بعض خصائصه هي اللون ، والسلالة ، والاسم ، والوزن ، وما إلى ذلك ، وسيتنقل ، وينبح ، ويلعب ، وما إلى ذلك.
نظرًا لأنها تدمج مفاهيم العالم الحقيقي مثل الكائنات ، والاختباء ، والوراثة ، وما إلى ذلك في البرمجة ، فإن البرمجة الموجهة للكائنات معروفة جيدًا. نظرًا لأنه مشابه جدًا لظروف العالم الواقعي ، يتم جعل التخيل أبسط.
مفاهيم البرمجة الشيئية
فئات وكائنات في بايثون
مثل جميع اللغات الأخرى الموجهة للكائنات ، تتيح لك Python تصميم فئات لإنشاء كائنات. أنواع البيانات الأكثر شيوعًا في Python ، بما في ذلك السلاسل والقوائم والقواميس والكائنات الأخرى ، هي فئات مضمنة.
الفئة عبارة عن مجموعة من الطرق المرتبطة ومتغيرات الحالة التي تحدد نوعًا معينًا من الكائنات. يمكن اعتبار الفئة كنموذج أو قالب لكائن. تُعرف المتغيرات التي تتكون منها فئة باسم السمات.
الكائن هو عضو في فئة لديها مجموعة محددة من السمات. لهذا السبب ، يمكن إنشاء أي عدد من الكائنات باستخدام نفس الفئة.
يتم تعريف فئات بايثون باستخدام فئة الكلمة ، والتي يتبعها اسم الفئة ونقطتان. قد يكون توضيح فئة الببغاء:
هنا ، نعلن عن فئة Parrot الفارغة باستخدام الكلمة الرئيسية للفصل. نقوم بإنشاء حالات من الفصول الدراسية. المثيل هو كائن معين تم إنشاؤه من فئة معينة. كثيرًا ما يتم استخدام 'pass' كبديل للكود الذي قد نتخلى عن تنفيذه في الوقت الحالي. يمكننا تنفيذ كود Python دون إثارة خطأ باستخدام الكلمة الأساسية "pass".
ينتج عن إنشاء مثيل لفئة كائن (مثيل). يتم تحديد وصف الكائن فقط عند إنشاء فئة. نتيجة لذلك ، لا يتم تخصيص أي مساحة تخزين أو ذاكرة وصول عشوائي.
مثال على كائن فئة الببغاء:
Obj هو كائن من فئة Parrot في هذه الحالة.
لنفترض أننا نعرف تفاصيل عن الببغاوات. سنشرح الآن كيفية إنشاء فئة الببغاء وكائناتها.
الطريقة الخاصة (__init__)
طريقة تسمى init تحدد السمات التي يجب أن يمتلكها كل كائن Parrot (). عندما يتم تشكيل كائن Parrot جديد ، فإن الوظيفة __init__ تنشئ الحالة الأولية للكائن عن طريق تعيين القيم التي نوفرها ضمن خصائص الكائن.
لذلك ، تتم تهيئة كل مثيل جديد للفئة باستخدام __init __ (). على الرغم من أن __init __ () يمكنه قبول أي عدد من المعلمات ، فإن self دائمًا ما تكون المعلمة الأولى.
يتم تضمين مرجع إلى مثيل الفئة النشطة في الوسيطة الذاتية. تشير المعلمة الذاتية ، التي ترتبط بعنوان الكائن الحالي للفئة وتمنحنا الوصول إلى بيانات متغيراتها (الكائن) ، إلى ذلك.
مثال 1
أنشأنا فئة تسمى Parrot في الكود أعلاه. بعد ذلك ، يتم تحديد الخصائص. خصائص الشيء هي خواصه. وظيفة __init__ للفئة هي المكان الذي يتم فيه تحديد هذه الخصائص.
عندما يتم تكوين كائن ، فإن طريقة التهيئة هي الطريقة التي يتم استدعاؤها في البداية. بعد ذلك ، يتم إنشاء مثيلات فئة Parrot. Blaze و Wonda في هذه الحالة هي إشارات (قيم) إلى كائناتنا الجديدة. __class .species يسمح لنا بالوصول إلى سمة class.
كل مثيل من فئة له نفس الخصائص. يمكن أيضًا الوصول إلى خصائص المثيل باستخدام blaze.name و blaze.age. جميع مثيلات الفئة لها سمات مثيل فريدة.
مثال 2
طرق
تسمى الوظائف المحددة داخل جسم الفصل بالطرق. يتم توظيفهم لتحديد كيف سيتصرف العنصر.
تم تحديد طريقتين ، الغناء () والرقص ، في التطبيق المذكور أعلاه (). نظرًا لاستدعائها في كائن مثيل ، مثل flame ، يشار إليها باسم طرق المثيل.
أساسيات مفهوم OOPS
الأفكار الأساسية الأربعة للبرمجة الشيئية هي:
- وراثة
- التغليف
- تعدد الأشكال
- التجريد
وراثة
كثيرًا ما يخبر الناس الأطفال حديثي الولادة بأنهم يواجهون سمات تشبه سمات والديهم أو أنهم ورثوا سمات معينة من والديهم.
من المحتمل أنك لاحظت أيضًا أنك تشترك في بعض الخصائص مع والديك. الوضع في العالم الحقيقي يشبه إلى حد ما الميراث أيضًا.
ومع ذلك ، في هذه الحالة ، يتم تمرير خصائص "الفئات الأصلية" إلى "الفئات الفرعية". يشار إلى هذه الجوانب باسم "الخصائص" و "الأساليب" في هذا السياق.
يمكن للفئة أن تستمد أساليبها وسماتها من فئة أخرى باستخدام التقنية المعروفة باسم الوراثة. الميراث هو عملية تلقي صنف تابع لخصائص فئة أصل.
مثال:
يتم توريث فئة الوالدين Human من قبل فئة الطفل Boy في المثال أعلاه. نظرًا لأن Boy يرث من Human ، يمكننا الوصول إلى جميع أساليبها وسماتها عندما نقوم بإنشاء مثيل لفئة Boy.
في فصل الصبي ، تم أيضًا تحديد طريقة تسمى اسم المدرسة. كائن الفئة الأصل غير قادر على الوصول إلى الأسلوب schoolName. ومع ذلك ، يمكن استدعاء طريقة اسم المدرسة عن طريق إنشاء كائن فئة فرعية (فتى).
التغليف
إن منح كل متغير في البرنامج وصولاً عالميًا ليس خطوة حكيمة عند العمل مع الفئات ومعالجة البيانات الحساسة.
بدون منح البرنامج وصولاً كاملاً إلى أي من هذه المتغيرات ، يوفر التغليف آلية بالنسبة لنا للحصول على المتغيرات اللازمة.
يمكن استخدام الطرق المحددة صراحةً لهذا الغرض لتحديث البيانات أو تحريرها أو حذفها من المتغيرات. تتميز طريقة البرمجة هذه بمزايا الأمان المعزز والتحكم في إدخال البيانات.
تعرف على مدى سرعة الوصول إلى المتغيرات في العرض التوضيحي أدناه:
تعدد الأشكال
لنفترض أنك تستخدم هاتفك لتصفح ملف يغذي إينستاجرام. عندما شعرت بالحاجة إلى الاستماع إلى بعض الموسيقى ، قمت بالوصول إلى Spotify وبدأت في تشغيل أغنيتك المفضلة.
بعد فترة ، تلقيت مكالمة ، لذا أوقفت مؤقتًا كل ما كنت تفعله في الخلفية للرد عليه. اتصل صديقك وطلب منك إرسال رقم هاتف لشخص معين إليه.
لذلك قمت بإرسال رقم الهاتف إليه عبر الرسائل القصيرة واستكملت مهامك. هل التقطت أي شيء؟ باستخدام جهاز واحد فقط - هاتفك المحمول - يمكنك تصفح الخلاصات والاستماع إلى الموسيقى وتلقي وإجراء مكالمات هاتفية وإرسال الرسائل.
لذلك ، فإن تعدد الأشكال يمكن مقارنته بذلك. بولي يعني العديد ، ويتحول إلى أشكال مختلفة. لذلك ، يشير تعدد الأشكال ككل إلى شيء بأشكال مختلفة.
أو "شيء" يمكن ، حسب الظروف ، أن يُظهر مجموعة متنوعة من السلوكيات. في OOPS ، يصف تعدد الأشكال الوظائف بنفس الأسماء ولكن السلوكيات المتميزة. بدلاً من ذلك ، توقيع دالة مختلفة بنفس اسم الوظيفة (تم تمرير المعلمات إلى الوظيفة).
مثال:
هنا ، يمكننا استخدام الحيوان المتغير للتكرار عبر كائنات Zebra و Rabbit ، باستخدام طرق المثيل الخاصة بكل منهما. نتيجة لذلك ، يتم تمثيل سلوك (اللون () والأكل ()) لكل من الحمار الوحشي والأرنب هنا بواسطة متغير واحد يسمى الحيوان. لذلك فهي تلتزم بقواعد تعدد الأشكال.
التجريد
من المرجح أنك تستخدم جهاز كمبيوتر محمول أو هاتفًا أو جهازًا لوحيًا لقراءة هذا المحتوى. أثناء قراءته ، من المفترض أيضًا أنك تقوم بتدوين الملاحظات ، والتأكيد على المقاطع الرئيسية ، وربما تخزين بعض المعلومات في ملفاتك الشخصية.
كل ما يمكنك رؤيته عندما تقرأ هذا هو "شاشة" مع البيانات التي يتم عرضها لك. ترى فقط مفاتيح لوحة المفاتيح أثناء الكتابة ، لذلك لا داعي للقلق بشأن التفاصيل الدقيقة الداخلية مثل كيف يمكن أن يؤدي الضغط على مفتاح إلى ظهور هذه الكلمة على الشاشة.
بدلاً من ذلك ، كيف يمكن أن يؤدي الضغط على زر على شاشتك إلى تشغيل علامة تبويب جديدة.
لذلك ، كل ما يمكننا ملاحظته في هذه الحالة هو مجرد. يمكننا فقط رؤية النتيجة التي تخلقها وليس التعقيدات الداخلية (التي تهمنا في الواقع).
على غرار ذلك ، يكشف التجريد فقط عن الوظائف التي يمتلكها كل شيء مع إخفاء أي تطبيقات أو تفاصيل داخلية.
يتمثل الهدف الرئيسي لـ Abstraction في إخفاء المعلومات الأساسية وأي تنفيذ للبيانات الخارجية بحيث يرى الأشخاص فقط ما يحتاجون إلى رؤيته. يساعد في إدارة تعقيد الكود.
مثال:
يوجد هنا فئة مجردة متعلقة بالمركبة. لأنه يرث من فئة مجردة ABC ، فهو مجرد. نظرًا لأن الطرق المجردة غير محددة أو تظل فارغة ، فإن الفئة "مركبة" لديها طريقة مجردة تسمى "لا للعجلات" تفتقر إلى التعريف.
إنهم يتوقعون الفئات التي ترث الفئات المجردة لإعطاء تنفيذ الأسلوب.
فوائد مفاهيم OOPS
- من خلال التغليف ، يتم تحقيق مستوى عالٍ من الأمان وخصوصية البيانات.
- المرونة في وجود العديد من الإصدارات متعددة الأشكال من نفس الفئة.
- تم تقليل المستوى العالي من تعقيد التعليمات البرمجية عن طريق التجريد.
- بدلاً من غربلة مئات الأسطر من التعليمات البرمجية لتحديد موقع مشكلة واحدة ، فإن نمطية البرمجة تجعل تصحيح الأخطاء أمرًا بسيطًا.
- يعود سبب إعادة استخدام الكود إلى وراثة فئة فرعية لخصائص الفئة الأصل.
- يمكن حل المشكلات بشكل فعال لأننا نقوم بإنشاء فئات تقوم بالإجراءات اللازمة لكل مشكلة صغيرة. يمكن حل المشكلة التالية بسرعة أكبر حيث يمكننا إعادة استخدام هذه الفئات.
وفي الختام
في الختام ، تعلمنا عن أفكار OOPS في Python ، نموذج البرمجة الأكثر سخونة في الوقت الحالي.
بعد قراءة هذا ، يجب أن تكون قد أدركت أن نموذج OOPS يتعامل بالكامل مع فكرة الفئات والكائنات. ومفاهيم OOPS مثل التغليف وتعدد الأشكال والوراثة والتجريد.
اترك تعليق