"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم التجريد في بايثون مع أمثلة من الحياة الواقعية

فهم التجريد في بايثون مع أمثلة من الحياة الواقعية

تم النشر بتاريخ 2024-11-02
تصفح:697

Understanding Abstraction in Python with Real-Life Examples

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

في هذه المقالة، سنستكشف كيفية عمل التجريد في بايثون، باستخدام كل من الفئات والواجهات المجردة، وسنقدم أمثلة واقعية لترسيخ هذه المفاهيم.


ما هو التجريد؟

يشير التجريد في البرمجة إلى مفهوم إخفاء التفاصيل غير الضرورية وكشف الجوانب ذات الصلة من الكائن فقط. وهذا مشابه لمواقف الحياة الواقعية حيث نهتم فقط بالسلوك الأساسي أو خصائص كائن ما دون الحاجة إلى معرفة تفاصيل كيفية عمل الأشياء.

على سبيل المثال، عندما تقود السيارة، لا تحتاج إلى فهم كيفية عمل المحرك أو كيفية احتراق الوقود. كل ما عليك فعله هو أن تعلم أن الضغط على دواسة البنزين يجعل السيارة تتحرك والضغط على الفرامل يوقفها. التفاصيل المعقدة لكيفية تشغيل المحرك أو كيفية عمل الفرامل يتم تجريدها بعيدًا عن السائق.


دروس مجردة في بايثون

فئة مجردة في بايثون هي فئة تعمل كمخطط للفئات الأخرى. يمكن أن تحتوي على طرق مجردة (طرق بدون تنفيذ) وطرق محددة (طرق مع التنفيذ). لا يمكنك إنشاء فئة مجردة مباشرة، ولكن يمكنك تصنيفها فرعيًا وتوفير تطبيقات للطرق المجردة.

كيف تعمل الفصول المجردة

تتيح لك الفئات المجردة تحديد واجهة مشتركة لجميع الفئات الفرعية أثناء مشاركة بعض السلوكيات الملموسة. يساعد هذا في تنظيم التعليمات البرمجية من خلال إنشاء إطار عمل يجب أن تتبعه أي فئة ترث من الفئة المجردة.

مثال واقعي: نظام معالجة الدفع

تخيل أنك تقوم بإنشاء منصة للتجارة الإلكترونية تقبل طرق دفع مختلفة مثل بطاقات الائتمان وPayPal والعملات المشفرة. يمكنك استخدام فئة مجردة لتحديد السلوك الشائع لجميع طرق الدفع مع السماح بتطبيقات محددة لكل نوع دفع.


من ABC استيراد ABC، طريقة مجردة معالج الدفع فئة (ABC): @abstractmethod تعريف عملية الدفع (النفس، المبلغ): يمر فئة CreditCardProcessor (معالج الدفع): تعريف عملية الدفع (النفس، المبلغ): return f"جارٍ معالجة الدفع ببطاقة الائتمان بقيمة {amount}" معالج PayPal (معالج الدفع): تعريف عملية الدفع (النفس، المبلغ): return f"جارٍ معالجة دفع PayPal بقيمة {amount}" فئة CryptoProcessor (معالج الدفع): تعريف عملية الدفع (النفس، المبلغ): return f"معالجة الدفع بالعملة المشفرة بقيمة {amount}" #مثال للاستخدام Credit_card = CreditCardProcessor() باي بال = PayPalProcessor() التشفير = معالج التشفير () print(credit_card.process_Payment(100)) # الإخراج: معالجة الدفع ببطاقة الائتمان بقيمة 100 print(paypal.process_Payment(150)) # الإخراج: معالجة دفع PayPal بقيمة 150 print(crypto.process_Payment(200)) # الإخراج: معالجة الدفع بالعملة المشفرة بقيمة 200
from abc import ABC, abstractmethod

class PaymentProcessor(ABC):
    @abstractmethod
    def process_payment(self, amount):
        pass

class CreditCardProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing credit card payment of {amount}"

class PayPalProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing PayPal payment of {amount}"

class CryptoProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing cryptocurrency payment of {amount}"

# Example usage
credit_card = CreditCardProcessor()
paypal = PayPalProcessor()
crypto = CryptoProcessor()

print(credit_card.process_payment(100))  # Output: Processing credit card payment of 100
print(paypal.process_payment(150))       # Output: Processing PayPal payment of 150
print(crypto.process_payment(200))       # Output: Processing cryptocurrency payment of 200
هنا، تحدد فئة ملخص PaymentProcessor طريقة معالجة_الدفع، والتي يجب تنفيذها بواسطة أي فئة فرعية. توفر كل فئة فرعية (CreditCardProcessor، PayPalProcessor، CryptoProcessor) تطبيقها الخاص للطريقة بناءً على نوع الدفع.


واجهات في بايثون

في بايثون، يتم تنفيذ مفهوم الواجهة باستخدام الفئات المجردة أيضًا. إن

interface هي في الأساس فئة تحتوي على طرق مجردة فقط. فهو يحدد العقد الذي يجب أن تتبعه أي فئة تقوم بتنفيذ الواجهة.

مثال واقعي: نظام المركبات

تخيل أنك تقوم ببناء نظام نقل، وتريد التأكد من أن كل نوع من المركبات يمكنه تشغيل محركه وإيقافه. هذه حالة مثالية لاستخدام الواجهة نظرًا لأن جميع المركبات سيكون لها نفس الوظيفة الأساسية (البدء والتوقف)، ولكن قد يختلف التنفيذ الفعلي اعتمادًا على ما إذا كانت سيارة أو دراجة أو شاحنة.


من ABC استيراد ABC، طريقة مجردة مركبة فئة (ABC): @abstractmethod تعريف start_engine (النفس): يمر @abstractmethod مواطن توقف المحرك (النفس): يمر فئة السيارة (المركبة): تعريف start_engine (النفس): العودة "محرك السيارة بدأ." مواطن توقف المحرك (النفس): العودة "توقف محرك السيارة." فئة الدراجة (المركبة): تعريف start_engine (النفس): العودة "بدأ محرك الدراجة." مواطن توقف المحرك (النفس): العودة "توقف محرك الدراجة." #مثال للاستخدام سيارة = سيارة () الدراجة = الدراجة () print(car.start_engine()) # الإخراج: بدأ محرك السيارة. print(car.stop_engine()) # الإخراج: توقف محرك السيارة. print(bike.start_engine()) # الإخراج: بدأ محرك الدراجة. print(bike.stop_engine()) # الإخراج: توقف محرك الدراجة.
from abc import ABC, abstractmethod

class PaymentProcessor(ABC):
    @abstractmethod
    def process_payment(self, amount):
        pass

class CreditCardProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing credit card payment of {amount}"

class PayPalProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing PayPal payment of {amount}"

class CryptoProcessor(PaymentProcessor):
    def process_payment(self, amount):
        return f"Processing cryptocurrency payment of {amount}"

# Example usage
credit_card = CreditCardProcessor()
paypal = PayPalProcessor()
crypto = CryptoProcessor()

print(credit_card.process_payment(100))  # Output: Processing credit card payment of 100
print(paypal.process_payment(150))       # Output: Processing PayPal payment of 150
print(crypto.process_payment(200))       # Output: Processing cryptocurrency payment of 200
في هذا المثال، تضمن واجهة المركبة أن أي فئة تنفذها يجب أن توفر أسلوبي start_engine وstop_engine. وهذا يوفر واجهة متسقة عبر أنواع المركبات المختلفة.


الاختلافات بين الطبقات المجردة والواجهات

بينما تفرض الفئات المجردة والواجهات بنية في التعليمات البرمجية، فإنها تخدم أغراضًا مختلفة:

  • الفئات المجردة يمكن أن تحتوي على طرق مجردة وملموسة. يتيح لك هذا تحديد السلوك المشترك وفرض وظائف معينة للفئات الفرعية.
  • الواجهات (فئات مجردة مع طرق مجردة فقط) تحدد عقدًا صارمًا يجب اتباعه ولكنها لا توفر أي تنفيذ مشترك.
تشبيه واقع الحياة

فكر في

الفصل التجريدي كبرنامج تدريب في مكان العمل يعلم المهارات النظرية والعملية. يجب على كل من ينضم إلى الشركة متابعة التدريب، ولكن قد تكون بعض المهام معرفة عامة ومشتركة بالفعل، بينما تتطلب مهام أخرى تنفيذًا مخصصًا.

واجهة

تشبه إلى حد كبير قاعدة السلامة الأساسية في العمل: "يجب على الجميع ارتداء خوذة". هذه القاعدة صارمة، وبينما يجوز لكل شخص اختيار علامة تجارية أو لون مختلف للخوذة، فإن الشرط الأساسي (ارتداء الخوذة) يظل كما هو للجميع.


خاتمة

يعد التجريد، من خلال استخدام الفئات والواجهات المجردة، أداة قوية في لغة Python لبناء تطبيقات نظيفة وقابلة للصيانة وقابلة للتطوير. تسمح الفئات المجردة بالسلوك المشترك مع فرض تنفيذ الوظائف الأساسية، بينما تحدد الواجهات عقدًا يجب أن تتبعه جميع الفئات الفرعية.

من خلال فهم التجريد وتطبيقه، يمكنك إنشاء إطار عمل قوي ومرن للتعليمات البرمجية الخاصة بك، مما يضمن إخفاء التفاصيل المعقدة، وكشف الجوانب الأساسية فقط - مما يؤدي إلى أنظمة برمجية أسهل في الإدارة وأكثر سهولة.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/imyusufakhtar/understanding-abstraction-in-python-with-real-life-examples-50c8?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3