Classes and objects in Python: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
[[صورة:Python-logo.png|center|200px]]
# الفئات والكائنات في بايثون


'''الصفوف والكائنات في لغة بايثون: دليل شامل للمبتدئين'''
'''الفئات والكائنات''' هي من أهم مفاهيم [[البرمجة الشيئية]] (Object-Oriented Programming - OOP) في [[بايثون]]. فهمهما ضروري لبناء برامج قوية ومرنة وقابلة لإعادة الاستخدام. هذا المقال موجه للمبتدئين ويهدف إلى شرح هذه المفاهيم بطريقة مبسطة وواضحة.


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


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


قبل الغوص في تفاصيل الصفوف والكائنات، من المهم فهم الإطار العام الذي تنتمي إليه: '''البرمجة الشيئية (Object-Oriented Programming - OOP)'''.  تعتمد البرمجة الشيئية على تنظيم البرنامج حول '''الكائنات''' (Objects) بدلاً من الإجراءات.  الكائن يجمع بين '''البيانات''' (Data) و'''الإجراءات''' (Actions) التي تعمل على تلك البيانات.  هذا النهج يجعل الكود أكثر قابلية لإعادة الاستخدام، وأسهل في الصيانة، وأكثر تنظيماً.  تعتبر بايثون لغة تدعم البرمجة الشيئية بشكل كامل.
ببساطة، الفئة تحدد *ماذا* يمكن أن يكون الكائن، بينما الكائن هو *مثال* محدد من تلك الفئة.


== الصفوف (Classes) ==
### تعريف الفئة في بايثون


فكر في '''الصفوف''' (Classes) كقوالب أو مخططات لإنشاء الكائنات.  الصف يحدد خصائص (Attributes) وسلوكيات (Methods) الكائنات التي سيتم إنشاؤها منه.  بمعنى آخر، الصف يصف *ما هو* الكائن وما *يمكنه أن يفعله*.
يتم تعريف الفئة باستخدام الكلمة المفتاحية `class`. إليك مثال بسيط:
 
'''مثال:''' لنفترض أننا نريد تمثيل '''سيارة''' في برنامجنا.  يمكننا تعريف صف يسمى `Car` يحدد خصائص مثل اللون، والطراز، والسرعة، بالإضافة إلى سلوكيات مثل التسارع، والفرملة، والتحرك.
 
'''بناء الصف في بايثون:'''


```python
```python
class Car:
class Car:
     def __init__(self, color, model, speed=0):
     def __init__(self, color, model):
         self.color = color
         self.color = color
         self.model = model
         self.model = model
        self.speed = speed


     def accelerate(self, increment):
     def accelerate(self):
        self.speed += increment
        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("أزرق", "هوندا سيفيك")


    def brake(self, decrement):
print(my_car.color) # سيطبع: أحمر
        self.speed -= decrement
my_car.accelerate() # سيطبع: السيارة تتسارع!
```
```


*  `class Car:`:  هذا السطر يبدأ تعريف الصف.
*  `my_car = Car("أحمر", "تويوتا كورولا")`:  إنشاء كائن جديد باسم `my_car` من الفئة `Car`، وتمرير اللون "أحمر" والموديل "تويوتا كورولا" إلى الدالة البانية.
*  `__init__(self, color, model, speed=0):`:  هذه هي '''الدالة البانية (Constructor)'''.  يتم استدعاؤها تلقائيًا عند إنشاء كائن جديد من الصف.  تستخدم الدالة البانية لتهيئة خصائص الكائن.  `self` يشير إلى الكائن نفسه.
*  `your_car = Car("أزرق", "هوندا سيفيك")`:  إنشاء كائن آخر باسم `your_car` من الفئة `Car`، وتمرير اللون "أزرق" والموديل "هوندا سيفيك" إلى الدالة البانية.
*  `self.color = color`:  هذا السطر يعين قيمة المعامل `color` إلى خاصية `color` للكائن.
*  `print(my_car.color)`:  الوصول إلى خاصية `color` الخاصة بالكائن `my_car`.
*  `accelerate(self, increment):`:  هذه هي '''طريقة (Method)'''، وهي دالة مرتبطة بالصف. تزيد هذه الطريقة سرعة السيارة بمقدار `increment`.
*  `my_car.accelerate()`:  استدعاء الدالة `accelerate` الخاصة بالكائن `my_car`.
`brake(self, decrement):`:  هذه طريقة أخرى تقلل سرعة السيارة بمقدار `decrement`.
 
## الخصائص والطرق
 
*  **الخصائص (Attributes):** هي البيانات المرتبطة بالكائن. في مثال السيارة، اللون والموديل هما خصائص.
**الطرق (Methods):** هي الدوال المرتبطة بالكائن. في مثال السيارة، التسارع والفرملة هما طرق.
 
## أهمية الفئات والكائنات


== الكائنات (Objects) ==
*  **النمذجة:** تسمح لك بنمذجة الكيانات الحقيقية (مثل السيارات، العملاء، المنتجات) في التعليمات البرمجية الخاصة بك.
*  **إعادة الاستخدام:** يمكنك إعادة استخدام الفئات والكائنات في أجزاء مختلفة من البرنامج أو في برامج أخرى.
*  **التنظيم:** تساعد على تنظيم التعليمات البرمجية وجعلها أكثر سهولة في القراءة والصيانة.
*  **الوراثة (Inheritance):** تسمح لك بإنشاء فئات جديدة تعتمد على فئات موجودة، مما يوفر الوقت والجهد.  (سيتم تغطية هذا في مقال لاحق).
*  **التغليف (Encapsulation):**  تساعد على إخفاء التفاصيل الداخلية للكائن وحماية البيانات من الوصول غير المصرح به. (سيتم تغطية هذا في مقال لاحق).
*  **تعدد الأشكال (Polymorphism):** تسمح لك بمعاملة الكائنات المختلفة بطريقة موحدة. (سيتم تغطية هذا في مقال لاحق).


'''الكائنات''' (Objects) هي '''نسخ (Instances)''' من الصفوف.  بمعنى آخر، الكائن هو تطبيق فعلي للصف.  عندما تنشئ كائنًا من صف، فإنك تقوم بإنشاء نسخة ملموسة من هذا الصف بخصائص وقيم محددة.
## مثال متقدم: نظام تداول بسيط


'''مثال:'''  باستخدام الصف `Car` الذي عرفناه سابقًا، يمكننا إنشاء كائنات تمثل سيارات مختلفة:
لنقم ببناء مثال بسيط لمحاكاة نظام تداول:


```python
```python
my_car = Car("Red", "Toyota Camry")
class Trade:
your_car = Car("Blue", "Honda Civic", 50)
    def __init__(self, symbol, quantity, price):
        self.symbol = symbol
        self.quantity = quantity
        self.price = price


print(my_car.color) # Output: Red
    def calculate_value(self):
print(your_car.speed) # Output: 50
        return self.quantity * self.price


my_car.accelerate(20)
class Trader:
print(my_car.speed)  # Output: 20
    def __init__(self, name, balance):
```
        self.name = name
        self.balance = balance
        self.trades = []


*  `my_car = Car("Red", "Toyota Camry")`: هذا السطر ينشئ كائنًا جديدًا من الصف `Car` ويخزنه في المتغير `my_car`.  يتم تمرير اللون والطراز كمعاملات للدالة البانية.
    def buy(self, symbol, quantity, price):
*  `your_car = Car("Blue", "Honda Civic", 50)`:  هذا السطر ينشئ كائنًا آخر من الصف `Car` بقيم مختلفة للون والطراز والسرعة.
        trade_value = quantity * price
*  `print(my_car.color)`: هذا السطر يصل إلى خاصية `color` للكائن `my_car` ويطبع قيمتها.
        if trade_value <= self.balance:
*  `my_car.accelerate(20)`:  هذا السطر يستدعي طريقة `accelerate` على الكائن `my_car` ويزيد سرعته بمقدار 20.
            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"لا يوجد صفقة مطابقة للبيع.")


*  '''الوراثة (Inheritance)''': تتيح لك إنشاء صفوف جديدة (فروع) تعتمد على صفوف موجودة (أصل).  الفرع يرث جميع خصائص وطرق الأصل، ويمكنه إضافة خصائص وطرق جديدة أو تعديل الموجودة.  تعتبر الوراثة أداة قوية لإعادة استخدام الكود وتجنب التكرار. [[الوراثة المتعددة]]
# مثال الاستخدام
*  '''التغليف (Encapsulation)''':  يخفي التفاصيل الداخلية للكائن عن العالم الخارجي.  هذا يحمي البيانات ويجعل الكود أكثر أمانًا ومرونة. [[تعديل الوصول]]
trader1 = Trader("أحمد", 1000)
*  '''تعدد الأشكال (Polymorphism)''': يتيح لك استخدام نفس الواجهة (الطرق) للتعامل مع كائنات مختلفة.  هذا يجعل الكود أكثر عمومية وقابلية للتكيف. [[تعدد الأشكال في بايثون]]
trader1.buy("BTC", 0.1, 30000)
trader1.buy("ETH", 1, 2000)


== تطبيقات عملية ==
# تحليل وتقييم الصفقات
# استخدام مؤشرات فنية مثل المتوسطات المتحركة (Moving Averages)
# استخدام حجم التداول (Volume) لتأكيد الاتجاه
# استخدام أنماط الشموع اليابانية (Candlestick Patterns)
```


الصفوف والكائنات تستخدم على نطاق واسع في العديد من المجالات، بما في ذلك:
هذا مثال مبسط، ولكنه يوضح كيف يمكن استخدام الفئات والكائنات لتمثيل مفاهيم معقدة في نظام تداول.


*  '''تطوير الويب''':  تمثيل المستخدمين، والمنتجات، والطلبات، وما إلى ذلك.
## مصادر إضافية
*  '''علم البيانات''':  تمثيل البيانات وتحليلها باستخدام هياكل بيانات معقدة.
*  '''الذكاء الاصطناعي''':  تمثيل النماذج والأجسام والبيئات.
*  '''محاكاة الأنظمة''':  تمثيل المكونات والعلاقات في نظام معقد.


== استراتيجيات التحليل الفني و حجم التداول ==
*  [[وثائق بايثون الرسمية]]
*  [[مقدمة إلى البرمجة الشيئية في بايثون]]
*  [[الوراثة في بايثون]]
*  [[التغليف في بايثون]]
*  [[تعدد الأشكال في بايثون]]


على الرغم من أن هذا المقال يركز على برمجة بايثون، إلا أن فهم الصفوف والكائنات يمكن أن يكون مفيدًا في تطوير أدوات تحليل فني و حجم تداول. على سبيل المثال، يمكن استخدام الصفوف لتمثيل '''الشموع اليابانية (Candlestick Patterns)'''، أو '''المؤشرات الفنية (Technical Indicators)'''.  يمكن استخدام الكائنات لتمثيل '''أوامر التداول (Trading Orders)'''، أو '''حسابات التداول (Trading Accounts)'''. 
## استراتيجيات تداول وتحليل فني


*  [[التحليل الفني]]
*  [[استراتيجية الاختراق]]
*  [[حجم التداول]]
*  [[استراتيجية المتوسطات المتحركة]]
*  [[مؤشر القوة النسبية (RSI)]]
*  [[استراتيجية مؤشر القوة النسبية (RSI)]]
*  [[المتوسط المتحرك (Moving Average)]]
*  [[تحليل فيبوناتشي]]
*  [[تحليل الحجم]]
*  [[مؤشر الماكد (MACD)]]
*  [[مؤشر الماكد (MACD)]]
*  [[بولينجر باندز (Bollinger Bands)]]
*  [[مؤشر ستوكاستيك]]
*  [[نموذج القطع (Breakout Pattern)]]
*  [[أنماط الشموع اليابانية]]
*  [[نموذج الرأس و الكتفين (Head and Shoulders)]]
*  [[التحليل الأساسي]]
*  [[استراتيجية المضاربة (Scalping Strategy)]]
*  [[إدارة المخاطر في التداول]]
*  [[استراتيجية التداول اليومي (Day Trading Strategy)]]
*  [[التحليل الفني المتقدم]]
*  [[استراتيجية التداول المتأرجح (Swing Trading Strategy)]]
*  [[التحليل الكمي للتداول]]
*  [[استراتيجية الاحتفاظ طويل الأجل (Long-Term Investing Strategy)]]
*  [[التحليل العاطفي للسوق]]
*  [[تحليل حجم التداول (Volume Analysis)]]
*  [[التحليل الإحصائي للتداول]]
*  [[تحليل دفتر الأوامر (Order Book Analysis)]]
*  [[تداول الخيارات]]
*  [[تحليل الشريط الزمني (Tape Reading)]]
*  [[نظرية موجة إليوت (Elliott Wave Theory)]]
*  [[تصحيح فيبوناتشي (Fibonacci Retracement)]]
*  [[مستويات الدعم والمقاومة (Support and Resistance Levels)]]
*  [[الأنماط السلوكية (Behavioral Patterns)]]
*  [[إدارة المخاطر (Risk Management)]]
*  [[تنويع المحفظة (Portfolio Diversification)]]
 
== الخلاصة ==
 
الصفوف والكائنات هي مفاهيم أساسية في البرمجة الشيئية، وهي توفر طريقة قوية ومرنة لتنظيم وتطوير البرامج.  من خلال فهم هذه المفاهيم، ستكون قادرًا على كتابة كود أكثر وضوحًا وقابلية لإعادة الاستخدام والصيانة.  نتمنى أن يكون هذا المقال قد قدم لك أساسًا متينًا للبدء في استخدام الصفوف والكائنات في مشاريعك البرمجية.


[[Category:**الفئة:برمجة بايثون**]]
[[Category:برمجة بايثون]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==

Latest revision as of 01:47, 23 April 2025

  1. الفئات والكائنات في بايثون

الفئات والكائنات هي من أهم مفاهيم البرمجة الشيئية (Object-Oriented Programming - OOP) في بايثون. فهمهما ضروري لبناء برامج قوية ومرنة وقابلة لإعادة الاستخدام. هذا المقال موجه للمبتدئين ويهدف إلى شرح هذه المفاهيم بطريقة مبسطة وواضحة.

    1. ما هي الفئة؟

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

ببساطة، الفئة تحدد *ماذا* يمكن أن يكون الكائن، بينما الكائن هو *مثال* محدد من تلك الفئة.

      1. تعريف الفئة في بايثون

يتم تعريف الفئة باستخدام الكلمة المفتاحية `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` كمعامل.
    1. ما هو الكائن؟

الكائن (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`.
    1. الخصائص والطرق
  • **الخصائص (Attributes):** هي البيانات المرتبطة بالكائن. في مثال السيارة، اللون والموديل هما خصائص.
  • **الطرق (Methods):** هي الدوال المرتبطة بالكائن. في مثال السيارة، التسارع والفرملة هما طرق.
    1. أهمية الفئات والكائنات
  • **النمذجة:** تسمح لك بنمذجة الكيانات الحقيقية (مثل السيارات، العملاء، المنتجات) في التعليمات البرمجية الخاصة بك.
  • **إعادة الاستخدام:** يمكنك إعادة استخدام الفئات والكائنات في أجزاء مختلفة من البرنامج أو في برامج أخرى.
  • **التنظيم:** تساعد على تنظيم التعليمات البرمجية وجعلها أكثر سهولة في القراءة والصيانة.
  • **الوراثة (Inheritance):** تسمح لك بإنشاء فئات جديدة تعتمد على فئات موجودة، مما يوفر الوقت والجهد. (سيتم تغطية هذا في مقال لاحق).
  • **التغليف (Encapsulation):** تساعد على إخفاء التفاصيل الداخلية للكائن وحماية البيانات من الوصول غير المصرح به. (سيتم تغطية هذا في مقال لاحق).
  • **تعدد الأشكال (Polymorphism):** تسمح لك بمعاملة الكائنات المختلفة بطريقة موحدة. (سيتم تغطية هذا في مقال لاحق).
    1. مثال متقدم: نظام تداول بسيط

لنقم ببناء مثال بسيط لمحاكاة نظام تداول:

```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"لا يوجد صفقة مطابقة للبيع.")
  1. مثال الاستخدام

trader1 = Trader("أحمد", 1000) trader1.buy("BTC", 0.1, 30000) trader1.buy("ETH", 1, 2000)

  1. تحليل وتقييم الصفقات
  2. استخدام مؤشرات فنية مثل المتوسطات المتحركة (Moving Averages)
  3. استخدام حجم التداول (Volume) لتأكيد الاتجاه
  4. استخدام أنماط الشموع اليابانية (Candlestick Patterns)

```

هذا مثال مبسط، ولكنه يوضح كيف يمكن استخدام الفئات والكائنات لتمثيل مفاهيم معقدة في نظام تداول.

    1. مصادر إضافية
    1. استراتيجيات تداول وتحليل فني

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер