مجموعة امثلة وتطبيقات على oop باستخدام لغة python
تعد مشاريع بلغه بايثون احد اهم الاشياء التي يبحث عليها الكثير منكم. لكي يتعلم و يتقن لغه البايثون ويرجع ذلك الى عده اسباب اولا ان اسكريبتات لغه بايثون مهمه جدا في الذكاء الاصطناعي ويريد الكثير منكم تعلم هذه المهاره. ايضا تعد لغه بايتون اكثر لغه عليها طلب في سوق العمل في الوقت الحالي وذلك لعده اشياء سوف نذكرها معكم في النقطه التاليه. ولكن يجب عليكم التركيز في جميع اكواد بايثون وامثله على الاكواد التي سوف نقدمها لكم لانه باتباعك هذه الاكواد واتقانها بشكل جيد سوف اخبرك انك سوف تكون قادر على فعل خوارزميات الذكاء الاصطناعي حيث سوف نتعمق معكم في كثير من التفاصيل حول هذه اللغه وحول البرمجه من خلالها.
السبب الذي يجعل لغه python اكثر لغه عليها طلب في سوق العمل وايضا في الذكاء الاصطناعي هو توفرها على مكتبات كثيره وايضا سهوله في كتابه الكود حيث يمكنك كتابه اكواد لغه بايثون باي لغه اخرى مثل لغه جافا ولكن قد تجد ان الامر. طويل جدا في الجافا والذي تتميز بايثون به البساطه. وهذا ما يفضله الكثير منا وهو كتابه اكواد بسيطه جدا تقوم بوظيفه كبيره. وايضا وجود المكتبات. يساعد على تحسين و في اشهار لغه البايثون. ومن خلال المقالات التاليه سوف نستعرض معكم اكواد و مكتبات كثيره جدا. بي بايثون
نبيذة عن oop باستخدام بايثون
ال oop من العناصر التي لا غنى عنها في البرمجة حيث انها تتعامل مع الكلاسات بشكل كبير وهي تستخدم في اغلب لغات البرمجة كبايثون وجافا وسي بلس وغيرها وهي تقسيم المشروع الى اكثر من كلاس وعمل وراثة للمشاريع بحيث ينظم الكود لدينا ويوفر وقت كبير علينا في كتابة الاكواد وقد سبق وشرحناه في مقالة سابقة , بإختصار الoop لا غنى عنها في لغة برمجة تستخدم الكائنات ولن تستطيع احتراف اي لغة دون تعلمك لل OOP وهذا المقال تابع للمقالات السابقة التي شرحناها لكم وسوف نكمل معكم بمجموعة من الامثلة والاكواد لايضاح الفكرة بشكل كبير .
ماهي اهم العناصر التي تستخدم في oop بواسطة python
يوجد كثير من المتغيرات التي يمكنك عملها وسوف تشاهد صورة في نهاية هذا الجزء لمجموعة من الاومر يتم وضعها بعد بدلا من اسم الdef وبعدها استخدم الوظيفة التي تريدها مثلا __init__ وهي تعمل نفس وظيفة الconstructor و ال__add__ تقوم بعمل جمع للمتغيرات وغيرها الكثبر من الوظائف التي يمكنك استخدامها والتعرف عليها من خلال الصورة التالية .
كود بايثون لمقارنة عددين ومعرفة الاكبر باستخدام oop
قمنا بعمل وظيفة تحمل العناصر مثل الاسم والعمر ونريد معرفة عمر الشخص الاول اكبر من الثاني ام العكس وقمنا بعمل __gt__ وايضا __lt__ وفي __st__ قمنا بارجاع للاسم فقط وفي الاسفل قمنا بتمرير المتغيرات الخاصة بنا والتي نريد مقارنتها وفي الخانة الاولى وضعنا الاسم والثاني العمر وبعدها قمنا بعمل if للاختبار والمقارنة اذا كانت النتيجة صحيحة سوف يخبرنا بان الاول اكبر من الثاني واذا كان العكس سوف يخبرنا بان الثاني اكبر من الاول .
class Person:
def __init__ (self , name , age) :
self.name = name
self.age = age
def __gt__ (self , other) :
return True if self.age > other.age else False
def __lt__(self,other) :
return True if self.age > other.age else False
def __str__(self) :
return self.anme
n1= Person("ahmed" , 22)
n2= Person("mohamed" , 25)
if n1 > n2 :
print("n1 greater than n2")
else :
print("n2 greater than n1")
كود بايثون لجمع عددين باستخدام oop
كما ذكرت لكم انه يوجد بعض الاوامر نستطيع عملها بعد def وتعمل على ارجاع نتيجة لنا وهنا سوف نستخدم __add__ التي اخبرتكم عنها بالاعلى وفيها سوف نقوم بعملية الجميع والمتغيرات سوف نقوم بتمريرها في الاسفل حيث نكتب الاسم وبعده العمر ونجمع العمرين على بعض وفي النهاية سوف نقوم بطباعتهم في print وسوف يكون مجموع العمر الاول والعمر الثاني وسوف يخرج لنا الناتج يمكنك استخدام اي وظيفة من الاعلى والتجريب عليها .
class Person:
def __init__ (self , name , age) :
self.name = name
self.age = age
def __gt__ (self , other) :
return True if self.age > other.age else False
def __add__(self, other):
x = self.age + other.age
return x
def __lt__(self,other) :
return True if self.age > other.age else False
def __str__(self) :
return self.anme
n1= Person("ahmed" , 22)
n2= Person("mohamed" , 25)
print("sum age is = ",n1+n2)
كود بايثون لطباعة الرقم الاكاديمي للطالب والتخصص الخاص به
في هذا الكود لدينا مجموعة من المتيغرات التي سوف نطلب من المستخدم ادخالها مثل الاسم والعمر والمدينة والموقع والرقم الاكاديمي و التخصص الخاص به وسوف نقوم بعمل filter على هذة الاشياء ونطبع فقط الرقم الاكاديمي او id وايضا التخصص الذي قام بادخاله ولا نحتاج لاكثر من هذا في عملية الطباعة يمكنك زيادة المخرجات اذا احببت وهذا مقال من الامثلة البسيطة على استخدام الoop .
class Person:
def __init__ (self , a , b , c , d) :
self.a = a
self.b = b
self.c = c
self.d = d
def info(self) :
print(f"name {self.a} age is {self.b}")
class Student(Person) :
def __init__(self, name, age , address ,email ,st_id , joined_cources):
Person.__init__(self, name, age,address ,email)
self.st_id = st_id
self.joined_cources = joined_cources
def info(self) :
print(f"the id is {self.st_id} \nthe cources is : {','.join(self.joined_cources)}")
n1 = Student("ahmed" , 21 , "cairo" , "geecoders@geecoder" , "42015698" , ["cs","dev"])
n1.info()
مشروع بايثون باستخدام oop و الclasses
في هذا المشروع قمنا بعمل مشروعين بايثون الاسم باسم hello_world.py وهذا ما سيحتوي على الكود والاخر باسم main وهذا ما سنقوم بتمرير البيانات فيه وعمل run , بالنسبة للمشروع الاول سوف نقوم بعمل اكثر من def كل واحده منهم مسؤولة عن وظيفة معينة نحتاج لعمل __init__ في البداية لان هذا المسؤول عن تمرير البيانات وبعدها سوف نقوم بعمل اول وظيفة وهي words_with_length وهي مسؤوله عن اخراج جميع الكلمات التي تتكون من ثلاث حروف فقط حيث اذا مررنا في الكود الاساسي الموجود في main الحرف a سيطبع كل الكلمات التي تحتوي على الحرف a وعدد حروفها 3 , ثاني وظيفة وهي start_with ونقوم ايضا بتمرير حرف في main ليطبع كل الكلمات التي تبدء بهذا الحرف من الملف والاخيره ends_with وهي مسؤوله عن طباعة الكلمات التي تنتهي بحرف معين نقوم بتمريره ايضا في main .
بانسبة لكلاس main , هذا الكلاس نكتب فيه اولا استدعاء للمشروع الاخر وتحديدا اسم الكلاس الذي نريدة منه وثانيا تحديد مسار الملف الذي يحتوي على الكلمات يمكنك وضع الكلمات في string الامر راجع لك ولكن الافضل تكون في ملف وسوف اترك لكم رابط تحميل الملف في نهاية المقالة , وفي النهاية نقوم بعملية الطباعة وهي تحديد اسم الكلاس وبعدها المتغير الذي يحوي الكلمات وبعدها اسم def التي نريد استخدمها من كلاس Person وهو الذي قمنا بعمل import له في الاعلى على سبيل المثال قمنا بتحديد start_with نقوم الان بوضع لها متغير ولكن الحرف a بالتالي سيطبع لنا كل الكلمات التي تحتوي على الحرف a في الملف النصي .
ملاحظة : اذا ظهر لك مشكلة في عملية import قد يكون السبب ناتج عن انه لم يتعرف على الملف ولهذا حاول ان تقوم بحفظ الملف الاول وهو hello_world.py عن طريق ctrl + s او الانتقال من نافذة file من ثم auto save لكي يقوم بعمل حفظ تلقائي للاكواد التي تكتب لان هذه المشكلة واجهتني شخصيا وقد تواجة البعض منكم لذلك تاكد دائما من عمل save للمشروع الخاص بك .
# --- hello_world.py ---
class Person:
def __init__ (self ,list_of_words) -> None:
self.__word = list_of_words
def words_with_length (self ,length) :
t = []
for word in self.__word :
if len(word) == 3 :
t.append(word)
return t
def start_with(self , string) :
t = []
for word in self.__word :
if word.startswith(string) :
t.append(word)
return t
def ends_with(self , string) :
t = []
for word in self.__word :
if word.endswith(string) :
t.append(word)
return t
# --- main2.py ---
from hello_world import Person
with open("words.txt" , 'r') as file :
words = file.read().rsplit(",")
print(Person(words).start_with("a"))
الى هنا نكون قد وصلنا معكم الى نهاية مقالة اليوم اتمنى ان تكون المقالة نالت على رضاكم وتكون استغدتم منها ويكون فكرة الoop بالبايثون اصبحت واضحة بالنسبة لكم ولمزيد من الاكواد والشروحات في لغة البايثون يمكنكم مشاهدة الموقع للتعرف على الكثير من الاكواد البرمجية في هذا القسم :