ركيزة واحدة أخيرة من الأمل في أن تذهب.
تحدثنا عن التغليف والتجريد والوراثة.
ثم هناك الكلمة الرابعة التي تحتوي على كلمة شديدة الصعوبة ، تعدد الأشكال.
ماذا يعني ذلك؟
حسنًا ، تعني كلمة poly العديد والمزيد من المعنى الحقيقي لتشكيل العديد من الأشكال.
الآن نحن نعلم أن الأساليب تنتمي إلى الأشياء ، أليس كذلك؟
نستخدم الكلمة الأساسية الذاتية للعمل على الكائن الذي تم إنشاء مثيل له.
الآن في Python ، تشير فكرة تعدد الأشكال هذه إلى الطريقة التي يمكن بها لفئات الكائنات مشاركة نفس اسم
الطريقة.
لكن أسماء الطرق هذه يمكن أن تعمل بشكل مختلف بناءً على ما يسميها الكائن.
الآن ، هذا يبدو محيرا للغاية.
لذلك دعونا نلقي نظرة على الكود.
لدينا معالج المستخدم وفئات آرتشر.
وكما ذكرت مع تعدد الأشكال ، يمكن لفئات الكائنات المختلفة مشاركة أسماء الطرق.
إذن لدينا TAC هنا مشترك ، لكن كل واحد يفعل شيئًا مختلفًا بناءً على السمة.
على سبيل المثال ، عندما أفعل هجومًا ساحرًا واحدًا.
لذلك دعونا نفعل ذلك.
هجوم نقطة واحدة ساحر.
إذا قمت بالنقر فوق Run ، فسوف أهاجم بقوة 60 لأن Well Wizard له معنى خاص لهجومه مقابل
آرتشر.
إنهم مختلفون.
لذلك على الرغم من أنهم يشاركون نفس أسماء الطريقة بسبب الكائن الذي يستدعيها ، فإن المخرجات
ستكون مختلفة.
لذلك يمكننا فعل شيء مثير للاهتمام هنا.
لنفترض أن لدي ساحرًا واحدًا وبعد ذلك سيكون لدينا أيضًا آرتشر وسيكون آرتشر هو روبن.
ولدى روبن 30 ساعة الآن.
ما يمكنني فعله هنا يطلق عليهم في الواقع بطرق مختلفة.
على سبيل المثال ، يمكنني إنشاء وظيفة جديدة بالكامل تسمى هجوم اللاعب.
ويهاجم هذا اللاعب شخصية.
وهنا يمكننا أن نقول شخصية ، نقطة ، هجوم.
والآن إذا قمت بتشغيل هذا الرمز وأقول.
هجوم اللاعب.
ساحر واحد.
وأنا أجري هذا.
سأهاجم بقوة واحدة.
إذا لعبت هجومنا ، اجعل آرتشر هنا إذا قمت بالنقر فوق تشغيل.
ترى أن نفس الوظيفة تعطيني ناتجًا مختلفًا ، على الرغم من أننا نسمي نفس الشيء
بسبب الكائن الذي نمرره إليه.
تعدد الأشكال.
هناك طريقة أخرى لإثبات ذلك وهي إذا قمنا بعمل حلقة for.
إذا فعلت ذلك ، فلنقل حرفًا ودعنا نضيف المعالج الأول والآرتشر إلى القائمة.
وإذا قمت بالطباعة هنا أو لنقم فقط بتشغيل هجوم نقطة على الأحرف.
إذا قمت بالنقر فوق تشغيل هنا.
مرة أخرى ، لدي ناتجان مختلفان ، على الرغم من أنني أستدعي نفس الطريقة بسبب الكائنات المختلفة.
وهذا مفهوم قوي حقًا ، أليس كذلك؟
لأننا قادرون على تخصيص هذا وفقًا لاحتياجاتنا الخاصة ، حتى لو ، لنفترض
أن المستخدم تعرض لهجوم.
طريقة.
وطريقة الهجوم الافتراضية هذه ، لنقل ، طباعة ، لا تفعل شيئًا لأنها مجرد مستخدم.
حتى لو قمت بتشغيل هذه ودعونا نقول معالج الطباعة واحد.
ودعنا نقول هجوم النقطة إذا قمت بالنقر فوق تشغيل.
سيتم تجاوز أيًا كان الهجوم الأصلي لأن لدينا بالفعل هذه الطريقة في فئة المعالج.
ولكن لنفترض أنني أردت أن يقوم كل من المستخدم والمعالج بتشغيل طريقة الهجوم.
كيف يمكنني أن أفعل هذا؟
حاليا.
هذا شيء سنستكشفه أكثر قليلاً في الفيديو التالي.
لكن في الوقت الحالي ، يمكنني أن أقول هجوم نقطة المستخدم.
وامنحه الذات.
لأنني أقبل المستخدم كمعلمة خاصة بي هنا.
وبعد ذلك يمكنني تشغيل هجوم نقطة المستخدم.
لذلك دعونا نرى ما يحدث هنا.
إذا قمت بالنقر فوق تشغيل.
لا أفعل شيئًا وأهاجم بقوة 60.
لذا فإن تعدد الأشكال يسمح لنا بالحصول على العديد من الأشكال.
إنها القدرة على إعادة تعريف أساليب هذه الفئات المشتقة وهي الساحر وآرتشر.
ويمكن أن يتصرف الكائن الذي يتم إنشاء مثيل له بأشكال مختلفة بطرق مختلفة بناءً على تعدد الأشكال.
وهذا مفيد لأننا قادرون على تعديل فصولنا لاحتياجاتنا الخاصة.
ولكن أيضًا لا يتعين علينا تكرار أنفسنا في حال أردنا استخدام شيء مثل الهجوم من المستخدم داخل
المعالج.
لذلك هناك لديك.
الأركان الأربعة لتغليف OP.
التجريد.
الوراثة ثم تعدد الأشكال في النهاية.
حاليا.
لن يعلمك أي قدر من مقاطع الفيديو أو الكتب متى تستخدم ماذا بالضبط.
ومع ذلك ، فإن الفكرة هنا هي فهم أن هذه الصلاحيات موجودة مع OP.
لن تقول أبدًا ، أوه ، أنا بحاجة لتطبيق تعدد الأشكال.
لا ، في معظم الوقت تقوم فقط بالترميز ويحدث أنك تقوم بالترميز بطريقة تؤكد على تعدد
الأشكال.
هذه مجرد قوة OP ، على الرغم من أن هذه كلمات كبيرة.
في نهاية اليوم ، تعلمنا كيفية استخدامها لهيكلة الكود الخاص بنا بطريقة فعالة ونظيفة.
وهذا هو بيت القصيد.
الأمر كله يتعلق بتنظيم الكود الخاص بنا.
الآن ، قد يكون البعض منكم مرتبكًا بعض الشيء عندما فعلت هذا المستخدم يهاجم نفسه.
في الفيديو التالي ، أريد استكشاف هذا أكثر قليلاً.
سأراك في ذلك.