Classes and objects in Python
- الفئات والكائنات في بايثون
الفئات والكائنات هي من أهم مفاهيم البرمجة الشيئية (Object-Oriented Programming - OOP) في بايثون. فهمهما ضروري لبناء برامج قوية ومرنة وقابلة لإعادة الاستخدام. هذا المقال موجه للمبتدئين ويهدف إلى شرح هذه المفاهيم بطريقة مبسطة وواضحة.
- ما هي الفئة؟
الفئة (Class) هي بمثابة مخطط أو نموذج لإنشاء كائنات. تخيل أنك تريد بناء العديد من السيارات. بدلاً من كتابة تعليمات برمجية منفصلة لكل سيارة، يمكنك تعريف فئة "سيارة" تحتوي على الخصائص المشتركة لجميع السيارات (مثل اللون، الموديل، المحرك) والسلوكيات المشتركة (مثل التسارع، الفرملة، الدوران).
ببساطة، الفئة تحدد *ماذا* يمكن أن يكون الكائن، بينما الكائن هو *مثال* محدد من تلك الفئة.
- تعريف الفئة في بايثون
يتم تعريف الفئة باستخدام الكلمة المفتاحية `class`. إليك مثال بسيط:
```python class Car:
def __init__(self, color, model): self.color = color self.model = model
def accelerate(self): print("السيارة تتسارع!")
def brake(self): print("السيارة تفرمل!")
```
- `class Car:`: تعريف فئة باسم `Car`.
- `__init__(self, color, model):`: هذه دالة خاصة تسمى "الدالة البانية" (Constructor). يتم استدعاؤها تلقائيًا عند إنشاء كائن جديد من الفئة. تأخذ `self` كأول معامل، والذي يمثل الكائن نفسه. كما تأخذ `color` و `model` كمعاملات لتحديد لون وموديل السيارة.
- `self.color = color`: تعيين قيمة المعامل `color` لخاصية `color` الخاصة بالكائن.
- `self.model = model`: تعيين قيمة المعامل `model` لخاصية `model` الخاصة بالكائن.
- `accelerate(self):` و `brake(self):`: هذه دوال تمثل سلوكيات السيارة. تأخذ `self` كمعامل.
- ما هو الكائن؟
الكائن (Object) هو نسخة من الفئة. باستخدام الفئة "سيارة" التي عرفناها سابقًا، يمكننا إنشاء كائنات سيارات محددة:
```python my_car = Car("أحمر", "تويوتا كورولا") your_car = Car("أزرق", "هوندا سيفيك")
print(my_car.color) # سيطبع: أحمر my_car.accelerate() # سيطبع: السيارة تتسارع! ```
- `my_car = Car("أحمر", "تويوتا كورولا")`: إنشاء كائن جديد باسم `my_car` من الفئة `Car`، وتمرير اللون "أحمر" والموديل "تويوتا كورولا" إلى الدالة البانية.
- `your_car = Car("أزرق", "هوندا سيفيك")`: إنشاء كائن آخر باسم `your_car` من الفئة `Car`، وتمرير اللون "أزرق" والموديل "هوندا سيفيك" إلى الدالة البانية.
- `print(my_car.color)`: الوصول إلى خاصية `color` الخاصة بالكائن `my_car`.
- `my_car.accelerate()`: استدعاء الدالة `accelerate` الخاصة بالكائن `my_car`.
- الخصائص والطرق
- **الخصائص (Attributes):** هي البيانات المرتبطة بالكائن. في مثال السيارة، اللون والموديل هما خصائص.
- **الطرق (Methods):** هي الدوال المرتبطة بالكائن. في مثال السيارة، التسارع والفرملة هما طرق.
- أهمية الفئات والكائنات
- **النمذجة:** تسمح لك بنمذجة الكيانات الحقيقية (مثل السيارات، العملاء، المنتجات) في التعليمات البرمجية الخاصة بك.
- **إعادة الاستخدام:** يمكنك إعادة استخدام الفئات والكائنات في أجزاء مختلفة من البرنامج أو في برامج أخرى.
- **التنظيم:** تساعد على تنظيم التعليمات البرمجية وجعلها أكثر سهولة في القراءة والصيانة.
- **الوراثة (Inheritance):** تسمح لك بإنشاء فئات جديدة تعتمد على فئات موجودة، مما يوفر الوقت والجهد. (سيتم تغطية هذا في مقال لاحق).
- **التغليف (Encapsulation):** تساعد على إخفاء التفاصيل الداخلية للكائن وحماية البيانات من الوصول غير المصرح به. (سيتم تغطية هذا في مقال لاحق).
- **تعدد الأشكال (Polymorphism):** تسمح لك بمعاملة الكائنات المختلفة بطريقة موحدة. (سيتم تغطية هذا في مقال لاحق).
- مثال متقدم: نظام تداول بسيط
لنقم ببناء مثال بسيط لمحاكاة نظام تداول:
```python class Trade:
def __init__(self, symbol, quantity, price): self.symbol = symbol self.quantity = quantity self.price = price
def calculate_value(self): return self.quantity * self.price
class Trader:
def __init__(self, name, balance): self.name = name self.balance = balance self.trades = []
def buy(self, symbol, quantity, price): trade_value = quantity * price if trade_value <= self.balance: trade = Trade(symbol, quantity, price) self.trades.append(trade) self.balance -= trade_value print(f"{self.name} قام بشراء {quantity} من {symbol} بسعر {price}. الرصيد المتبقي: {self.balance}") else: print(f"رصيد غير كافٍ لشراء {quantity} من {symbol}.")
def sell(self, trade): if trade in self.trades: self.balance += trade.calculate_value() self.trades.remove(trade) print(f"{self.name} قام ببيع {trade.symbol}. الرصيد الجديد: {self.balance}") else: print(f"لا يوجد صفقة مطابقة للبيع.")
- مثال الاستخدام
trader1 = Trader("أحمد", 1000) trader1.buy("BTC", 0.1, 30000) trader1.buy("ETH", 1, 2000)
- تحليل وتقييم الصفقات
- استخدام مؤشرات فنية مثل المتوسطات المتحركة (Moving Averages)
- استخدام حجم التداول (Volume) لتأكيد الاتجاه
- استخدام أنماط الشموع اليابانية (Candlestick Patterns)
```
هذا مثال مبسط، ولكنه يوضح كيف يمكن استخدام الفئات والكائنات لتمثيل مفاهيم معقدة في نظام تداول.
- مصادر إضافية
- وثائق بايثون الرسمية
- مقدمة إلى البرمجة الشيئية في بايثون
- الوراثة في بايثون
- التغليف في بايثون
- تعدد الأشكال في بايثون
- استراتيجيات تداول وتحليل فني
- استراتيجية الاختراق
- استراتيجية المتوسطات المتحركة
- استراتيجية مؤشر القوة النسبية (RSI)
- تحليل فيبوناتشي
- تحليل الحجم
- مؤشر الماكد (MACD)
- مؤشر ستوكاستيك
- أنماط الشموع اليابانية
- التحليل الأساسي
- إدارة المخاطر في التداول
- التحليل الفني المتقدم
- التحليل الكمي للتداول
- التحليل العاطفي للسوق
- التحليل الإحصائي للتداول
- تداول الخيارات
ابدأ التداول الآن
سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين