📑 فهرس الدروس لتعلم لغة البرمجة السي بلس بلس | C++ ⏳
✅ سننشر هذه الدروس وفق الفهرس الموضح في الأسفل خلال هذه الدورة إن شاء الله
🔹️ الوحدة 1 : تاريخ لغة C++
🔹️ الوحدة 2 : آلية إنشاء برنامج بلغة C++
🔹️ الوحدة 3 : هيكل البرنامج وأفضل الممارسات في C++
🔹️ الوحدة 4 : التعامل مع البيانات بلغة C++
🔹️ الوحدة 5 : التكرارات والتحكم فيها
في C++
🔹️ الوحدة 6 : الدوال في C++
🔹️ الوحدة 7 : المؤشرات والمراجع في C++
🔹️ الوحدة 8 : المصفوفات والتراكيب في C++
🔹️ الوحدة 9 : كلاسات التخزين في C++
🔹️ الوحدة 10 : البرمجة الكائنية التوجه OOP
🔹️ الوحدة 11 : المفاهيم المتقدمة لـ OOPS
🔹️ الوحدة 12 : مكتبة القوالب القياسية (STL)
💖 تفاااعل أكثر ننشر أكثر يا شبااااب 💖
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
✅ سننشر هذه الدروس وفق الفهرس الموضح في الأسفل خلال هذه الدورة إن شاء الله
🔹️ الوحدة 1 : تاريخ لغة C++
🔹️ الوحدة 2 : آلية إنشاء برنامج بلغة C++
🔹️ الوحدة 3 : هيكل البرنامج وأفضل الممارسات في C++
🔹️ الوحدة 4 : التعامل مع البيانات بلغة C++
🔹️ الوحدة 5 : التكرارات والتحكم فيها
في C++
🔹️ الوحدة 6 : الدوال في C++
🔹️ الوحدة 7 : المؤشرات والمراجع في C++
🔹️ الوحدة 8 : المصفوفات والتراكيب في C++
🔹️ الوحدة 9 : كلاسات التخزين في C++
🔹️ الوحدة 10 : البرمجة الكائنية التوجه OOP
🔹️ الوحدة 11 : المفاهيم المتقدمة لـ OOPS
🔹️ الوحدة 12 : مكتبة القوالب القياسية (STL)
💖 تفاااعل أكثر ننشر أكثر يا شبااااب 💖
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
⁉️ ما هي لغة البرمجة السي بلس بلس C++ ؟
🔰 السي بلس بلس C++ هي لغة برمجة للأغراض العامة تم تطويرها من قِبل المبرمج Bjarne Stroustrup في عام 1979.
تم إنشاؤها كإمتداد للغة البرمجة C وكان يطلق عليها في البداية "C مع الكلاسات ".
🔸️ تعتبر السي بلس بلس لغة برمجة متوسطة المستوى. بحيث تحتوي على ميزات لغات البرمجة عالية ومنخفضة المستوى.
🟣 لماذا نتعلم لغة C++؟
إذا أراد أي شخص أن يتعلم البرمجة، فيمكنه أن تكون لغة البرمجة C++ خيارًا جيداً له.
سنذكر الأسباب التي تجعل أي شخص يجب أن يتعلم C++:
● هي لغة تجعلك تمارس وتتعلم البرمجة كائنية التوجه OOP
● لغة C++ قريب من الهاردوير . فهي تتيح لك إدارة ذاكرة برنامجك، مما يؤدي إلى تطوير برامج فعال وقوي.
● تعد لغة C++ أسرع اللغات مقارنة باللغات الأكثر استخدامًا مثل Java أو Python أو JavaScript.
● تُستخدم لغة C++ لتطوير المتصفحات والألعاب وحتى أنظمة التشغيل.
● تعلمك لغة C++ على أنواع البيانات المختلفة، ومجال المتغيرات، والفرق بين المترجم، والرابط linker ، و loader ، وغير ذلك الكثير.
● بعد تعلم لغة C++، يصبح تعلم أي لغة جديدة مثل Python أو JavaScript أسهل بكثير.
🔰 السي بلس بلس C++ هي لغة برمجة للأغراض العامة تم تطويرها من قِبل المبرمج Bjarne Stroustrup في عام 1979.
تم إنشاؤها كإمتداد للغة البرمجة C وكان يطلق عليها في البداية "C مع الكلاسات ".
🔸️ تعتبر السي بلس بلس لغة برمجة متوسطة المستوى. بحيث تحتوي على ميزات لغات البرمجة عالية ومنخفضة المستوى.
🟣 لماذا نتعلم لغة C++؟
إذا أراد أي شخص أن يتعلم البرمجة، فيمكنه أن تكون لغة البرمجة C++ خيارًا جيداً له.
سنذكر الأسباب التي تجعل أي شخص يجب أن يتعلم C++:
● هي لغة تجعلك تمارس وتتعلم البرمجة كائنية التوجه OOP
● لغة C++ قريب من الهاردوير . فهي تتيح لك إدارة ذاكرة برنامجك، مما يؤدي إلى تطوير برامج فعال وقوي.
● تعد لغة C++ أسرع اللغات مقارنة باللغات الأكثر استخدامًا مثل Java أو Python أو JavaScript.
● تُستخدم لغة C++ لتطوير المتصفحات والألعاب وحتى أنظمة التشغيل.
● تعلمك لغة C++ على أنواع البيانات المختلفة، ومجال المتغيرات، والفرق بين المترجم، والرابط linker ، و loader ، وغير ذلك الكثير.
● بعد تعلم لغة C++، يصبح تعلم أي لغة جديدة مثل Python أو JavaScript أسهل بكثير.
🔴 بنية برنامج C++ ؟
مخرجات البرنامج بعد التنفيذ :
🟣 أهم المجالات و تطبيقات التي تستخدم في البرمجة بلغة C++
✔ أنظمة التشغيل: تم تطوير أنظمة التشغيل Windows وMac OS وLinux جميعها بلغة C++. تعد لغة C++ العمود الفقري للعديد من أنظمة التشغيل لأنها سريعة وموثوقة وفعالة.
✔ قواعد البيانات: تم برمجة Postgres وMySQL بلغة C++ وC. وتعد قواعد البيانات هذه من أكثر قواعد البيانات استخدامًا في جميع أنحاء العالم.
✔ أنظمة التخزين السحابي: يتم استخدام لغة C++ لتطوير أنظمة التخزين السحابي لأنها قريبة جدًا من الهاردوير ومتوافقة مع العديد من الأجهزة.
✔ مكتبات البرمجة: يتم استخدام لغة C++ لتطوير العديد من المكتبات عالية المستوى مثل TensorFlow بسبب سرعتها العالية.
✔ المتصفحات: المحرك النابض للعديد من المتصفحات مكتوب بلغة C++ بسبب سرعته وزمن الوصول المنخفض.
🟣 البرمجة الكائنية التوجه OOP
البرمجة الموجهة للكائنات هي عبارة عن طريقة للبرمجة التي تسمح لنا بإنشاء كلاسات وكائنات من خلال وضع التعليمات البرمجية الخاصة بنا.
من هذا فكان السبب الرئيسي وراء إنشاء C++ لتغطية النقص في لغة C التي كانت لا تقدم البرمجة الكائنية التوجه.
🔷️ المفاهيم الأربعة الرئيسية للبرمجة الكائنية المستخدمة في لغة C++ هي:
• الوراثة
• تعدد الأشكال
• التجريد
• التغليف
🔴 المكتبات القياسية في لغة C++
تتكون المكتبات القياسية من:
☆ المكتبة الأساسية - تتضمن المتغيرات وأنواع البيانات وما إلى ذلك.
☆ المكتبة القياسية - تتضمن الوظائف ومعالجة السلاسل والملفات وما إلى ذلك.
☆ مكتبة القوالب القياسية (STL) - تتضمن الكلاسات والدوال لمعالجة هياكل البيانات.
🔵 أهم إستخدامات لغة C++
✔ تطبيقات Client-Server
✔ تطوير تطبيقات Windows
✔ السوفتويرات المدمجة
✔ تعريفات التثبيت للبرامج
🔸️ المتطلبات الأساسية للبدء في البرمجة بلغة C++
الشرط الوحيد لتعلم لغة C++ هو الوظائف الأساسية لبرامج الكمبيوتر.
💠 نصائح هامة للمبتدئين
اذا قمت بإتباع هذه الدروس التعليمية لـ C++، سوف تكتسب فهمًا قويًا للغة وستكون قادرًا على التقدم إلى موضوعات أكثر تقدمًا.
هذه الدروس التعليمية مخصصة لمبرمجي البرامج الذين يرغبون في تعلم لغة البرمجة C++ من البداية.
💖 تفاااعل أكثر ننشر أكثر يا شبااااب 💖
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
#include <iostream>
using namespace std;
int main() {
cout << "مرحبا في قناتنا برمجة و تطوير";
return 0;
}
مخرجات البرنامج بعد التنفيذ :
مرحبا في قناتنا برمجة و تطوير
🟣 أهم المجالات و تطبيقات التي تستخدم في البرمجة بلغة C++
✔ أنظمة التشغيل: تم تطوير أنظمة التشغيل Windows وMac OS وLinux جميعها بلغة C++. تعد لغة C++ العمود الفقري للعديد من أنظمة التشغيل لأنها سريعة وموثوقة وفعالة.
✔ قواعد البيانات: تم برمجة Postgres وMySQL بلغة C++ وC. وتعد قواعد البيانات هذه من أكثر قواعد البيانات استخدامًا في جميع أنحاء العالم.
✔ أنظمة التخزين السحابي: يتم استخدام لغة C++ لتطوير أنظمة التخزين السحابي لأنها قريبة جدًا من الهاردوير ومتوافقة مع العديد من الأجهزة.
✔ مكتبات البرمجة: يتم استخدام لغة C++ لتطوير العديد من المكتبات عالية المستوى مثل TensorFlow بسبب سرعتها العالية.
✔ المتصفحات: المحرك النابض للعديد من المتصفحات مكتوب بلغة C++ بسبب سرعته وزمن الوصول المنخفض.
🟣 البرمجة الكائنية التوجه OOP
البرمجة الموجهة للكائنات هي عبارة عن طريقة للبرمجة التي تسمح لنا بإنشاء كلاسات وكائنات من خلال وضع التعليمات البرمجية الخاصة بنا.
من هذا فكان السبب الرئيسي وراء إنشاء C++ لتغطية النقص في لغة C التي كانت لا تقدم البرمجة الكائنية التوجه.
🔷️ المفاهيم الأربعة الرئيسية للبرمجة الكائنية المستخدمة في لغة C++ هي:
• الوراثة
• تعدد الأشكال
• التجريد
• التغليف
🔴 المكتبات القياسية في لغة C++
تتكون المكتبات القياسية من:
☆ المكتبة الأساسية - تتضمن المتغيرات وأنواع البيانات وما إلى ذلك.
☆ المكتبة القياسية - تتضمن الوظائف ومعالجة السلاسل والملفات وما إلى ذلك.
☆ مكتبة القوالب القياسية (STL) - تتضمن الكلاسات والدوال لمعالجة هياكل البيانات.
🔵 أهم إستخدامات لغة C++
✔ تطبيقات Client-Server
✔ تطوير تطبيقات Windows
✔ السوفتويرات المدمجة
✔ تعريفات التثبيت للبرامج
🔸️ المتطلبات الأساسية للبدء في البرمجة بلغة C++
الشرط الوحيد لتعلم لغة C++ هو الوظائف الأساسية لبرامج الكمبيوتر.
💠 نصائح هامة للمبتدئين
اذا قمت بإتباع هذه الدروس التعليمية لـ C++، سوف تكتسب فهمًا قويًا للغة وستكون قادرًا على التقدم إلى موضوعات أكثر تقدمًا.
هذه الدروس التعليمية مخصصة لمبرمجي البرامج الذين يرغبون في تعلم لغة البرمجة C++ من البداية.
💖 تفاااعل أكثر ننشر أكثر يا شبااااب 💖
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
ماهو أصل و تاريخ لغة C++ ؟
🔰 لمحة تاريخية عن اللغة
لغة C++ هي لغة برمجة عالية المستوى للأغراض العامة تم تطويرها في عام 1979 بواسطة Bjarne Stroustrup في مختبرات AT & T Bell.
🔹️ تم إنشاء لغة C++ كإصدار متقدم للغة البرمجة C. بحيث قام بتوسيع بعض ميزات لغة C وإضافة ميزات جديدة بما في ذلك الفئات والكائنات، والتحقق من النوع، ومعالجة الاستثناءات، والوراثة ، وتعدد الأشكال، وما إلى ذلك إلى لغة C.
🔹️ من خلال السنوات ، تلقت اللغة العديد من التحديثات المهمة لتبقى على اتصال مع لغات البرمجة الحديثة. على الرغم من أن لغة C++ قد تم إنشاؤها منذ عقود مضت، إلا أنها تستخدم على نطاق واسع لتطوير العديد من البرامج حتى اليوم.
🟣 بعض اللغات البرمجة التي تم تطويرها قبل C++
قبل الحديث عن تاريخ C++، دعونا نلقي نظرة على لغات البرمجة التي تم تطويرها قبل C++. قبل ظهور لغة البرمجة C++، تم تطوير العديد من لغات البرمجة المختلفة.
إليكم 5 لغات برمجة التي تم تطويرها قبل C++.
✔ لغة Algol طورت من قبل International Group في سنة 1960
✔ لغة Basic Combined Programming Language طورت من قبل Martin Richards في سنة 1967
🔰 لمحة تاريخية عن اللغة
لغة C++ هي لغة برمجة عالية المستوى للأغراض العامة تم تطويرها في عام 1979 بواسطة Bjarne Stroustrup في مختبرات AT & T Bell.
🔹️ تم إنشاء لغة C++ كإصدار متقدم للغة البرمجة C. بحيث قام بتوسيع بعض ميزات لغة C وإضافة ميزات جديدة بما في ذلك الفئات والكائنات، والتحقق من النوع، ومعالجة الاستثناءات، والوراثة ، وتعدد الأشكال، وما إلى ذلك إلى لغة C.
🔹️ من خلال السنوات ، تلقت اللغة العديد من التحديثات المهمة لتبقى على اتصال مع لغات البرمجة الحديثة. على الرغم من أن لغة C++ قد تم إنشاؤها منذ عقود مضت، إلا أنها تستخدم على نطاق واسع لتطوير العديد من البرامج حتى اليوم.
🟣 بعض اللغات البرمجة التي تم تطويرها قبل C++
قبل الحديث عن تاريخ C++، دعونا نلقي نظرة على لغات البرمجة التي تم تطويرها قبل C++. قبل ظهور لغة البرمجة C++، تم تطوير العديد من لغات البرمجة المختلفة.
إليكم 5 لغات برمجة التي تم تطويرها قبل C++.
✔ لغة Algol طورت من قبل International Group في سنة 1960
✔ لغة Basic Combined Programming Language طورت من قبل Martin Richards في سنة 1967
✔ لغة B طورت من قبل Ken Thompson في سنة 1970
✔ لغة C طورت من قبل Dennis Ritchie في سنة 1972
✔ لغة K&R C طورت من قبل Brian Kernighan & Dennis Ritchie في سنة 1978
✔ لغة C++ طورت من قبل Bjarne Stroustrup في سنة 1980
🔴 أصل إسم لغة "C++"
سنلقي نظرة على تاريخ إسم لغة C++. فأثناء تطوير هذه اللغة تمت إقتراح في البداية إلى لغة C++ (C plus plus) بإسم "new C". ثم تمت إعادة تسميتها إلى "C with Classes"، مما يعني أنها كانت مجموعة شاملة من لغة C المعروفة. ثم تمت إعادة التسمية النهائية للغة في عام 1983 بواسطة Rick Mascitti إلى "C++". يأتي ++ في C++ من لغة C. في لغة C، تعني ++ زيادة المتغير بمقدار 1. لذا، تعني C++ تقريبًا "واحد أكثر من C".
تناول Bjarne Stroustrup أصل إسم "C++" في مقدمة كتابه "لغة برمجة C++"، قائلًا إن إسم "C++" مستوحى من كتاب جورج أورويل ألف وتسعمائة وأربعة وثمانون. عندما سُئل Rick Mascitti عن التسمية في عام 1992، أشار إلى أن الاسم أُعطي بطريقة فكاهية. لم يعتقد أبدًا أن "C++" سيصبح الاسم الرسمي للغة.😄
💠 فلسفة و فكرة لغة C++
تصميم وتطوير فكرة و فلسفة لغة البرمجة C++ كان في سنة C++ (1994) بواسطة Bjarne Stroustrup
💠 فيما يلي بعض النقاط لفلسفة C++:
🔸️ يجب أن يكون للمبرمج الحرية في اختيار نموذج البرمجة الخاص به (البرمجة الإجرائية، البرمجة الكائنية، البرمجة العامة، وتجريد البيانات)
🔸️ يجب أن تكون اللغة متوافقة مع لغة C. ويجب ألا يكون الانتقال من لغة C إلى لغة C++ أمرًا صعبًا.
🔸️ يجب أن يتم بناء كل ميزة في اللغة للغرض العام. لا ينبغي أن تكون الميزات خاصة بالمنصة.
🔸️يجب أن تكون اللغة مصممة للعمل بدون بيئة برمجة معقدة (يمكن كتابة كود C++ على مفكرة بسيطة).
🔸️ يجب أن تكون اللغة مكتوبة بشكل ثابت ولأغراض عامة. يجب أن تكون قابلة للنقل مثل لغة C، أي أن الكود المكتوب على أحد أجهزة الكمبيوتر يجب أن يكون قابلاً للاستخدام على كمبيوتر آخر مع الحاجة إلى تغيير طفيف أو عدم الحاجة إلى أي تغيير في الكود.
🔸️ يجب أن تعطي اللغة الخيار للمبرمجين للقيام باختيارهم الخاص (الاختيار من بين أنواع مختلفة من المتغيرات، وتخصيص وإلغاء تخصيص الذاكرة حسب احتياجات البرنامج، وما إلى ذلك)، حتى لو كان ذلك يزيد من احتمال أن يختار المبرمج بشكل غير صحيح.
🔸️ يجب ألا تؤدي اللغة إلى إبطاء البرنامج أو استهلاك المساحة (overhead) للميزات غير المستخدمة في التعليمات البرمجية.
🔸️ يجب ألا تكون هناك لغة تحت C++، باستثناء لغة التجميع.
🏗 فكرة الواجهات interfaces في لغة C++
الواجهة عبارة عن بنية برمجة تصف سلوك كلاس ما في لغة C++ دون تحديد تطبيق محدد لتلك الكلاس . على سبيل المثال، إذا كان لدينا كلاس Car و كلاس Scooter، فيجب أن يكون لكل كلاس من هذه الكلاس إجراء (وظيفة) LightsOn(). نظرًا لأن كلا الكلاسين تشتركان في نفس الإجراء، فيمكننا إنشاء واجهة لتقليل التعليمات البرمجية وتحسين كفاءة البرنامج. ولكن كيفية تشغيل الأضواء ستعتمد على تنفيذ الدالة LightsOn() في كل كلاس . بمعنى آخر، سيكون لكلا الكلاسين كلاس أصل تحتوي على الدالة LightsOn() بداخلها. ولكن سيتم شرح التفاصيل المحددة لكيفية تشغيل الأضواء في الوحدات المعنية.
♻️ إليك بعض أهم جوانب الواجهات :
✔ يجب أن تكون الواجهة سهلة الفهم
✔ لا ينبغي أن تكون عرضة للأخطاء
✔ ينبغي أن تشجع الاستخدام الفعال للبرنامج
تنقل الواجهات والكلاسات المجردة نفس الفكرة بشكل أو بآخر. ولهذا السبب يتم تنفيذ الواجهات في C++ باستخدام الكلاسات المجردة. يسمى الكلاس ذات الدالة الافتراضية البحتة pure virtual بالكلاس المجرد في لغة c++. يمكننا إنشاء دالة افتراضية عن طريق كتابة "= 0" في إعلان الدالة .
🔷️ ملاحظة: من المهم ملاحظة أن الكلاسات المجردة وتجريد البيانات في C++ هما مفهومان منفصلان. يتم إستخدام تجريد البيانات لفصل البيانات الأساسية عن تقنيات تنفيذها.
🔸️إليك هذا المثال لفهم تنفيذ كلاس مجردة:
لقد قمنا بالتصريح عن دالة افتراضية countVolume() داخل الكلاس Cuboid. ولهذا السبب، أصبح كلاس المكعبات كلاس مجرد. الغرض من هذا الكلاس المجرد هو أن تكون بمثابة فئة أساسية مناسبة للكلاسات الأخرى. يمكن الآن للكلاسات التي ترث كلاس المكعب أن تحدد (وتنفذ) دالة countVolume() حسب حاجتها.
🔴 ماهي أهمية الواجهات في لغة C++
يتم استخدام الواجهة أو الكلاس المجرد كلاس أساسي للكلاسات الأخرى التي ترث الكلاس المجرد. فهو يوفر دالة عامة للكلاس حتى تتمكن الكلاسات الأخرى من استخدام الدوال الافتراضية للكلاس بسهولة.
✔ لغة C طورت من قبل Dennis Ritchie في سنة 1972
✔ لغة K&R C طورت من قبل Brian Kernighan & Dennis Ritchie في سنة 1978
✔ لغة C++ طورت من قبل Bjarne Stroustrup في سنة 1980
🔴 أصل إسم لغة "C++"
سنلقي نظرة على تاريخ إسم لغة C++. فأثناء تطوير هذه اللغة تمت إقتراح في البداية إلى لغة C++ (C plus plus) بإسم "new C". ثم تمت إعادة تسميتها إلى "C with Classes"، مما يعني أنها كانت مجموعة شاملة من لغة C المعروفة. ثم تمت إعادة التسمية النهائية للغة في عام 1983 بواسطة Rick Mascitti إلى "C++". يأتي ++ في C++ من لغة C. في لغة C، تعني ++ زيادة المتغير بمقدار 1. لذا، تعني C++ تقريبًا "واحد أكثر من C".
تناول Bjarne Stroustrup أصل إسم "C++" في مقدمة كتابه "لغة برمجة C++"، قائلًا إن إسم "C++" مستوحى من كتاب جورج أورويل ألف وتسعمائة وأربعة وثمانون. عندما سُئل Rick Mascitti عن التسمية في عام 1992، أشار إلى أن الاسم أُعطي بطريقة فكاهية. لم يعتقد أبدًا أن "C++" سيصبح الاسم الرسمي للغة.😄
💠 فلسفة و فكرة لغة C++
تصميم وتطوير فكرة و فلسفة لغة البرمجة C++ كان في سنة C++ (1994) بواسطة Bjarne Stroustrup
💠 فيما يلي بعض النقاط لفلسفة C++:
🔸️ يجب أن يكون للمبرمج الحرية في اختيار نموذج البرمجة الخاص به (البرمجة الإجرائية، البرمجة الكائنية، البرمجة العامة، وتجريد البيانات)
🔸️ يجب أن تكون اللغة متوافقة مع لغة C. ويجب ألا يكون الانتقال من لغة C إلى لغة C++ أمرًا صعبًا.
🔸️ يجب أن يتم بناء كل ميزة في اللغة للغرض العام. لا ينبغي أن تكون الميزات خاصة بالمنصة.
🔸️يجب أن تكون اللغة مصممة للعمل بدون بيئة برمجة معقدة (يمكن كتابة كود C++ على مفكرة بسيطة).
🔸️ يجب أن تكون اللغة مكتوبة بشكل ثابت ولأغراض عامة. يجب أن تكون قابلة للنقل مثل لغة C، أي أن الكود المكتوب على أحد أجهزة الكمبيوتر يجب أن يكون قابلاً للاستخدام على كمبيوتر آخر مع الحاجة إلى تغيير طفيف أو عدم الحاجة إلى أي تغيير في الكود.
🔸️ يجب أن تعطي اللغة الخيار للمبرمجين للقيام باختيارهم الخاص (الاختيار من بين أنواع مختلفة من المتغيرات، وتخصيص وإلغاء تخصيص الذاكرة حسب احتياجات البرنامج، وما إلى ذلك)، حتى لو كان ذلك يزيد من احتمال أن يختار المبرمج بشكل غير صحيح.
🔸️ يجب ألا تؤدي اللغة إلى إبطاء البرنامج أو استهلاك المساحة (overhead) للميزات غير المستخدمة في التعليمات البرمجية.
🔸️ يجب ألا تكون هناك لغة تحت C++، باستثناء لغة التجميع.
🏗 فكرة الواجهات interfaces في لغة C++
الواجهة عبارة عن بنية برمجة تصف سلوك كلاس ما في لغة C++ دون تحديد تطبيق محدد لتلك الكلاس . على سبيل المثال، إذا كان لدينا كلاس Car و كلاس Scooter، فيجب أن يكون لكل كلاس من هذه الكلاس إجراء (وظيفة) LightsOn(). نظرًا لأن كلا الكلاسين تشتركان في نفس الإجراء، فيمكننا إنشاء واجهة لتقليل التعليمات البرمجية وتحسين كفاءة البرنامج. ولكن كيفية تشغيل الأضواء ستعتمد على تنفيذ الدالة LightsOn() في كل كلاس . بمعنى آخر، سيكون لكلا الكلاسين كلاس أصل تحتوي على الدالة LightsOn() بداخلها. ولكن سيتم شرح التفاصيل المحددة لكيفية تشغيل الأضواء في الوحدات المعنية.
♻️ إليك بعض أهم جوانب الواجهات :
✔ يجب أن تكون الواجهة سهلة الفهم
✔ لا ينبغي أن تكون عرضة للأخطاء
✔ ينبغي أن تشجع الاستخدام الفعال للبرنامج
تنقل الواجهات والكلاسات المجردة نفس الفكرة بشكل أو بآخر. ولهذا السبب يتم تنفيذ الواجهات في C++ باستخدام الكلاسات المجردة. يسمى الكلاس ذات الدالة الافتراضية البحتة pure virtual بالكلاس المجرد في لغة c++. يمكننا إنشاء دالة افتراضية عن طريق كتابة "= 0" في إعلان الدالة .
🔷️ ملاحظة: من المهم ملاحظة أن الكلاسات المجردة وتجريد البيانات في C++ هما مفهومان منفصلان. يتم إستخدام تجريد البيانات لفصل البيانات الأساسية عن تقنيات تنفيذها.
🔸️إليك هذا المثال لفهم تنفيذ كلاس مجردة:
class Cuboid
{
public:
virtual float calculateVolume() = 0;
// A pure virtual function
private:
float length;
float width;
float height;
};
لقد قمنا بالتصريح عن دالة افتراضية countVolume() داخل الكلاس Cuboid. ولهذا السبب، أصبح كلاس المكعبات كلاس مجرد. الغرض من هذا الكلاس المجرد هو أن تكون بمثابة فئة أساسية مناسبة للكلاسات الأخرى. يمكن الآن للكلاسات التي ترث كلاس المكعب أن تحدد (وتنفذ) دالة countVolume() حسب حاجتها.
🔴 ماهي أهمية الواجهات في لغة C++
يتم استخدام الواجهة أو الكلاس المجرد كلاس أساسي للكلاسات الأخرى التي ترث الكلاس المجرد. فهو يوفر دالة عامة للكلاس حتى تتمكن الكلاسات الأخرى من استخدام الدوال الافتراضية للكلاس بسهولة.
👍1
🔸️ دعنا نأخذ مثالا لفهم أهمية الواجهات.
مخرجات البرنامج:
في المثال أعلاه، قمنا بإنشاء كلاس مجرد يسمى الشكل Shape .نظرًا لاختلاف صيغ حساب حجم المكعب والكرة، فقد أنشأنا دالة افتراضية تسمى findVolume() في كلاس الشكل.ثم استخدمنا هذه الدالة الافتراضية في الكلاسات المشتقة (الكرة والمكعب) لحساب أحجام الأشكال المعنية. ساعدتا كلاس الواجهة الذي أنشأناه على تجنب تكرار التعليمات البرمجية وتوفير وقتنا أيضًا.
🧩 القواعد المتعلقة بالواجهات:
يجب أن نحتفظ بقواعد معينة في أذهاننا أثناء العمل مع الواجهات في لغة C++ :
▪️لا يمكن تعريف دالة افتراضية ، بل يمكن الإعلان عنها فقط.
▪️يمكننا فقط تخصيص القيمة 0 لدالة افتراضية.
▪️يعمل الكلاس المشتق ككلاس مجرد إذا لم تتمكن من تنفيذ الدالة الافتراضية للكلاس الأساسي.
▪️ لا يمكننا إنشاء كائن من كلاس مجرد.
▪️يمكننا إنشاء مؤشر لكلاس مشتق بمرجع لكلاس الأساسي(المجرد).
📋 الخصائص و المِيزات في لغة C++
بالمقارنة مع لغة C، فإن لغة C++ قدمت العديد من الميزات الجديدة في اللغة.
سنشرح بعض الخصائص و الميزات المهمة لـ C++:
✅ بسيطة: أحد الأسباب التي تجعل C++ هي لغة البرمجة الأولى للعديد من المبرمجين هو أن C++ بسيطة وسهلة التعلم. على الرغم من أنها صديقة للمبتدئين، إلا أنها تستخدم على نطاق واسع لإنشاء العديد من البرامج المتقدمة.
✅ كائنية التوجه: C++ هي لغة برمجة كائنية التوجه ،حيث الكائنات تجعل تطوير البرامج وصيانتها أمرًا سهلاً. بمساعدة هذه الكائنات، يمكننا إجراء تجريد البيانات، وتغليف البيانات، والوراثة، وتعدد الأشكال، وإخفاء البيانات.
✅ حجز الذاكرة الديناميكية: تدعم C++ حجز الذاكرة الديناميكية. بمساعدة المؤشرات في لغة C++، يمكننا حجز الذاكرة ديناميكيًا.
✅ المؤشرات: المؤشر هو متغير يقوم بتخزين عنوان متغير آخر. تدعم C++ إستخدام المؤشرات. بحيث يتم استخدامها للتفاعل مع موقع الذاكرة لأي متغير.
✅ مكتبة واسعة: تقدم C++ مكتبة واسعة مليئة بالدوال المضمنة التي تسهل على المبرمج البرمجة. يمكن الوصول إلى دوال هذه المكتبة المكتبة باستخدام ملفات رأس مختلفة في C++.
✅ تعتمد على compiler: على عكس اللغات الأخرى مثل Python وJava التي تعتمد على في الأساس على interpreter ، فإن C++ هي لغة تعتمد على compiler. وبالتالي، فإن C++ أسرع بكثير من Python أو Java.
✅ التحميل الزائد للعوامل : تدعم C++ التحميل الزائد للعوامل. وهذا يعني أن لغة C++ يمكنها التعامل مع العوامل و توفر أنواع بيانات جديدة خاصة. كما توفر للمبرمجين خيارًا لإنشاء تعريفات جديدة للعوامل في C++.
✅ حساسة لحالة الأحرف: تمامًا مثل C، فإن C++ حساسة لحالة الأحرف. هذا يعني أن لغة C++ تتعامل مع الأحرف الصغيرة والأحرف الكبيرة بشكل مختلف.
✅ لغة برمجة عالية المستوى: على عكس لغة C، وهي لغة برمجة متوسطة المستوى، فإن لغة C++ هي لغة عالية المستوى. أي أنه يسهل على المبرمج العمل بلغة C++ حيث يمكننا ربطها بشكل وثيق باللغة الإنجليزية.
✅ معالجة الاستثناءات: تدعم C++ معالجة الاستثناءات. بحيث تساعد المبرمج على اكتشاف الخطأ (الأخطاء) في حالة ظهور خطأ في البرنامج.
✅ قابلة للنقل : يمكننا تنفيذ برامج C++ على أجهزة مختلفة مع تغيير طفيف أو بدون تغيير في الأسطر البرمجية. لكن لغة C++ ليست مستقلة عن النظام الأساسي. لنفترض أننا قمنا بتجميع برنامج في نظام التشغيل Windows. في هذه الحالة، لن يعمل هذا الملف المترجم (ملف .exe) في نظام التشغيل Mac. لكن ملف .cpp الذي تم إنشاؤه في Windows سيعمل بشكل عادي على نظام التشغيل Mac.
#include <iostream>
using namespace std;
// Interface class
class Shape {
public:
float dimension = 10;
// pure virtual function
virtual float findVolume() = 0;
};
// Derived class 1
class Sphere: public Shape {
public:
float findVolume() {
float volume = 4.0 * 3.14 * dimension * dimension * dimension / 3.0;
return volume;
}
};
// Derived class 2
class Cube: public Shape {
public:
float findVolume() {
float volume = dimension * dimension * dimension;
return volume;
}
};
int main() {
Sphere s1;
Cube c1;
cout << "The volume of sphere of radius 10 is: " << s1.findVolume() << endl;
cout << "The volume of cube of side length 10 is: " << c1.findVolume() << endl;
return 0;
}
مخرجات البرنامج:
The volume of sphere of radius 10 is: 4186.67
The volume of cube of side length 10 is: 1000
في المثال أعلاه، قمنا بإنشاء كلاس مجرد يسمى الشكل Shape .نظرًا لاختلاف صيغ حساب حجم المكعب والكرة، فقد أنشأنا دالة افتراضية تسمى findVolume() في كلاس الشكل.ثم استخدمنا هذه الدالة الافتراضية في الكلاسات المشتقة (الكرة والمكعب) لحساب أحجام الأشكال المعنية. ساعدتا كلاس الواجهة الذي أنشأناه على تجنب تكرار التعليمات البرمجية وتوفير وقتنا أيضًا.
🧩 القواعد المتعلقة بالواجهات:
يجب أن نحتفظ بقواعد معينة في أذهاننا أثناء العمل مع الواجهات في لغة C++ :
▪️لا يمكن تعريف دالة افتراضية ، بل يمكن الإعلان عنها فقط.
▪️يمكننا فقط تخصيص القيمة 0 لدالة افتراضية.
▪️يعمل الكلاس المشتق ككلاس مجرد إذا لم تتمكن من تنفيذ الدالة الافتراضية للكلاس الأساسي.
▪️ لا يمكننا إنشاء كائن من كلاس مجرد.
▪️يمكننا إنشاء مؤشر لكلاس مشتق بمرجع لكلاس الأساسي(المجرد).
📋 الخصائص و المِيزات في لغة C++
بالمقارنة مع لغة C، فإن لغة C++ قدمت العديد من الميزات الجديدة في اللغة.
سنشرح بعض الخصائص و الميزات المهمة لـ C++:
✅ بسيطة: أحد الأسباب التي تجعل C++ هي لغة البرمجة الأولى للعديد من المبرمجين هو أن C++ بسيطة وسهلة التعلم. على الرغم من أنها صديقة للمبتدئين، إلا أنها تستخدم على نطاق واسع لإنشاء العديد من البرامج المتقدمة.
✅ كائنية التوجه: C++ هي لغة برمجة كائنية التوجه ،حيث الكائنات تجعل تطوير البرامج وصيانتها أمرًا سهلاً. بمساعدة هذه الكائنات، يمكننا إجراء تجريد البيانات، وتغليف البيانات، والوراثة، وتعدد الأشكال، وإخفاء البيانات.
✅ حجز الذاكرة الديناميكية: تدعم C++ حجز الذاكرة الديناميكية. بمساعدة المؤشرات في لغة C++، يمكننا حجز الذاكرة ديناميكيًا.
✅ المؤشرات: المؤشر هو متغير يقوم بتخزين عنوان متغير آخر. تدعم C++ إستخدام المؤشرات. بحيث يتم استخدامها للتفاعل مع موقع الذاكرة لأي متغير.
✅ مكتبة واسعة: تقدم C++ مكتبة واسعة مليئة بالدوال المضمنة التي تسهل على المبرمج البرمجة. يمكن الوصول إلى دوال هذه المكتبة المكتبة باستخدام ملفات رأس مختلفة في C++.
✅ تعتمد على compiler: على عكس اللغات الأخرى مثل Python وJava التي تعتمد على في الأساس على interpreter ، فإن C++ هي لغة تعتمد على compiler. وبالتالي، فإن C++ أسرع بكثير من Python أو Java.
✅ التحميل الزائد للعوامل : تدعم C++ التحميل الزائد للعوامل. وهذا يعني أن لغة C++ يمكنها التعامل مع العوامل و توفر أنواع بيانات جديدة خاصة. كما توفر للمبرمجين خيارًا لإنشاء تعريفات جديدة للعوامل في C++.
✅ حساسة لحالة الأحرف: تمامًا مثل C، فإن C++ حساسة لحالة الأحرف. هذا يعني أن لغة C++ تتعامل مع الأحرف الصغيرة والأحرف الكبيرة بشكل مختلف.
✅ لغة برمجة عالية المستوى: على عكس لغة C، وهي لغة برمجة متوسطة المستوى، فإن لغة C++ هي لغة عالية المستوى. أي أنه يسهل على المبرمج العمل بلغة C++ حيث يمكننا ربطها بشكل وثيق باللغة الإنجليزية.
✅ معالجة الاستثناءات: تدعم C++ معالجة الاستثناءات. بحيث تساعد المبرمج على اكتشاف الخطأ (الأخطاء) في حالة ظهور خطأ في البرنامج.
✅ قابلة للنقل : يمكننا تنفيذ برامج C++ على أجهزة مختلفة مع تغيير طفيف أو بدون تغيير في الأسطر البرمجية. لكن لغة C++ ليست مستقلة عن النظام الأساسي. لنفترض أننا قمنا بتجميع برنامج في نظام التشغيل Windows. في هذه الحالة، لن يعمل هذا الملف المترجم (ملف .exe) في نظام التشغيل Mac. لكن ملف .cpp الذي تم إنشاؤه في Windows سيعمل بشكل عادي على نظام التشغيل Mac.
👍1
⚜ ملخص أصل و تاريخ لغة ++C
1️⃣ تم تطوير لغة C++ في عام 1979 على يد Bjarne Stroustrup
2️⃣ تم بناؤها كتوسيع للغة البرمجة C.
3️⃣ توفر المكتبة القياسية في لغة C++ العديد من الميزات المفيدة التي تسهل على المبرمجين البرمجة.
4️⃣ نظرًا لأن لغة C++ هي لغة تعتمد على المترجم Compliler ، فهي أسرع بكثير مقارنة بلغات مثل Java وPython.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
1️⃣ تم تطوير لغة C++ في عام 1979 على يد Bjarne Stroustrup
2️⃣ تم بناؤها كتوسيع للغة البرمجة C.
3️⃣ توفر المكتبة القياسية في لغة C++ العديد من الميزات المفيدة التي تسهل على المبرمجين البرمجة.
4️⃣ نظرًا لأن لغة C++ هي لغة تعتمد على المترجم Compliler ، فهي أسرع بكثير مقارنة بلغات مثل Java وPython.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
#برمجة #سي_بلس_بلس
🔰 أضخم تجميعية لتعلم البرمجة للمبتدئين و المحترفين 🔰
▪️كتاب علوم الحاسوب من الألف إلى الياء
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/xu8dcp
▪️ كتاب البرمجة بلغة بايثون بالعربي
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/mvb4e6
▪️تطبيق المكتبة الشاملة لتعلم البرمجة
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/nyefzs
▪️ كتابين لتعلم تصميم المواقع
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/412bxc
▪️ افضل و أقوى القنوات العربية لتعلم لغات البرمجة
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/ci5p5g
▪️ أفضل 4 كتب عربية لتعلم لغة دارت و فلاتر
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/hsyiy3
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
▪️كتاب علوم الحاسوب من الألف إلى الياء
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/xu8dcp
▪️ كتاب البرمجة بلغة بايثون بالعربي
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/mvb4e6
▪️تطبيق المكتبة الشاملة لتعلم البرمجة
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/nyefzs
▪️ كتابين لتعلم تصميم المواقع
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/412bxc
▪️ افضل و أقوى القنوات العربية لتعلم لغات البرمجة
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/ci5p5g
▪️ أفضل 4 كتب عربية لتعلم لغة دارت و فلاتر
📥 رابط تحميل الكتاب من هنا 👇
https://rb.gy/hsyiy3
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
❤2
أشهر وأهم 7 لغات برمجة مطلوبة في سوق العمل ❤️🤙🏻
✳️ لغة Python: تستخدم في تطوير الويب والذكاء الاصطناعي وعلوم البيانات
✳️ لغة JavaScript: تستخدم في تطوير الويب وتفاعل المستخدم، وفي تطوير تطبيقات الهاتف المحمول.
✳️ لغة Java: لغة قوية وشائعة، تستخدم في تطوير تطبيقات سطح المكتب وتطبيقات الهاتف المحمول وتطبيقات الويب.
✳️ لغة C++: قوية ومتعددة الاستخدامات، تستخدم في تطوير برامج النظام والألعاب والتطبيقات المتقدمة.
✳️ لغة C#: تستخدم في تطوير تطبيقات ويندوز وتطبيقات الألعاب باستخدام منصة Unity
✳️ لغة Ruby: لغة ديناميكية وسهلة التعلم، تستخدم في تطوير تطبيقات الويب وتطبيقات الشركات الناشئة.
✳️ لغة Swift: تستخدم في تطوير تطبيقات iOS وmacOS، وهي لغة رسمية لتطوير تطبيقات Apple
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
✳️ لغة Python: تستخدم في تطوير الويب والذكاء الاصطناعي وعلوم البيانات
✳️ لغة JavaScript: تستخدم في تطوير الويب وتفاعل المستخدم، وفي تطوير تطبيقات الهاتف المحمول.
✳️ لغة Java: لغة قوية وشائعة، تستخدم في تطوير تطبيقات سطح المكتب وتطبيقات الهاتف المحمول وتطبيقات الويب.
✳️ لغة C++: قوية ومتعددة الاستخدامات، تستخدم في تطوير برامج النظام والألعاب والتطبيقات المتقدمة.
✳️ لغة C#: تستخدم في تطوير تطبيقات ويندوز وتطبيقات الألعاب باستخدام منصة Unity
✳️ لغة Ruby: لغة ديناميكية وسهلة التعلم، تستخدم في تطوير تطبيقات الويب وتطبيقات الشركات الناشئة.
✳️ لغة Swift: تستخدم في تطوير تطبيقات iOS وmacOS، وهي لغة رسمية لتطوير تطبيقات Apple
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
👍2
✍مسار لتعلم لغة C++ للمبتدئين خطوة بخطوة📍
♟الخطوة الأولى: التعرف على أساسيات البرمجة
ابدأ بتعلم المفاهيم الأساسية للبرمجة مثل المتغيرات، البيانات، العمليات الحسابية، الشروط، الحلقات، والدوال.
يمكنك استخدام منصات تعليمية مثل أكاديمية الزيرو أو برمج.كوم لتعلم هذه الأساسيات.
تأكد من تطبيق ما تتعلمه من خلال كتابة برامج بسيطة.
♟الخطوة الثانية: تعلم لغة C++
بعد إتقانك للأساسيات، يمكنك البدء بتعلم لغة C++.
هناك العديد من الموارد المتاحة لتعلم C++، مثل الكتب، الدورات التعليمية، والمواقع الإلكترونية.
بعض الكتب الموصى بها لتعلم C++ للمبتدئين هي:
"C++ Primer" by Stanley B. Lippman
"Accelerated C++" by Andrew Koenig and Barbara E. Moo
"C++ for Dummies" by Stephen R. Davis
يمكنك أيضًا استخدام منصات تعليمية مثل Coursera: URL Coursera أو Udemy: URL Udemy للعثور على دورات تعليمية لغة C++.
♟الخطوة الثالثة: الممارسة والتطبيق
أفضل طريقة لتعلم C++ هي الممارسة والتطبيق.
حاول كتابة برامج بسيطة باستخدام ما تعلمته.
يمكنك أيضًا المشاركة في مشاريع مفتوحة المصدر على منصات مثل GitHub: URL GitHub.
لا تتردد في طلب المساعدة من مجتمع المبرمجين إذا واجهت أي صعوبات.
🥅 ملاحظات هامة:
الصبر والمثابرة هما مفتاح النجاح في تعلم أي لغة برمجة.
لا تتوقع أن تصبح خبيرًا في C++ بين ليلة وضحاها.
استمر في التعلم والتطبيق حتى تصبح مبرمجًا ماهرًا.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
♟الخطوة الأولى: التعرف على أساسيات البرمجة
ابدأ بتعلم المفاهيم الأساسية للبرمجة مثل المتغيرات، البيانات، العمليات الحسابية، الشروط، الحلقات، والدوال.
يمكنك استخدام منصات تعليمية مثل أكاديمية الزيرو أو برمج.كوم لتعلم هذه الأساسيات.
تأكد من تطبيق ما تتعلمه من خلال كتابة برامج بسيطة.
♟الخطوة الثانية: تعلم لغة C++
بعد إتقانك للأساسيات، يمكنك البدء بتعلم لغة C++.
هناك العديد من الموارد المتاحة لتعلم C++، مثل الكتب، الدورات التعليمية، والمواقع الإلكترونية.
بعض الكتب الموصى بها لتعلم C++ للمبتدئين هي:
"C++ Primer" by Stanley B. Lippman
"Accelerated C++" by Andrew Koenig and Barbara E. Moo
"C++ for Dummies" by Stephen R. Davis
يمكنك أيضًا استخدام منصات تعليمية مثل Coursera: URL Coursera أو Udemy: URL Udemy للعثور على دورات تعليمية لغة C++.
♟الخطوة الثالثة: الممارسة والتطبيق
أفضل طريقة لتعلم C++ هي الممارسة والتطبيق.
حاول كتابة برامج بسيطة باستخدام ما تعلمته.
يمكنك أيضًا المشاركة في مشاريع مفتوحة المصدر على منصات مثل GitHub: URL GitHub.
لا تتردد في طلب المساعدة من مجتمع المبرمجين إذا واجهت أي صعوبات.
🥅 ملاحظات هامة:
الصبر والمثابرة هما مفتاح النجاح في تعلم أي لغة برمجة.
لا تتوقع أن تصبح خبيرًا في C++ بين ليلة وضحاها.
استمر في التعلم والتطبيق حتى تصبح مبرمجًا ماهرًا.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
💎 مقدمة
مبادئ SOLID هي مجموعة من مبادئ التصميم تُستخدم لكتابة برامج كائنية المنحى قابلة للتمديد وصيانة بسهولة.
الأحرف الأولى من SOLID تعني:
✅ S: Single Responsibility Principle (مبدأ المسؤولية الواحدة)
✅ O: Open/Closed Principle (مبدأ الفتح والإغلاق)
✅ L: Liskov Substitution Principle (مبدأ استبدال ليسكوف)
✅ I: Interface Segregation Principle (مبدأ فصل الواجهات)
✅ D: Dependency Inversion Principle (مبدأ انعكاس الاعتمادية)
✍ شرح المبادئ الخمسة:
1. مبدأ المسؤولية الواحدة (Single Responsibility Principle - SRP)
يُنص هذا المبدأ على أن كل فئة أو وحدة برمجية يجب أن يكون لها مسؤولية واحدة فقط.
🟢 فوائد تطبيق SRP
➖ سهولة الفهم: يسهل فهم الكود وتعديله عندما يكون لكل وحدة وظيفة محددة.
➖ سهولة الصيانة: من السهل إصلاح الأخطاء وتغيير الوحدات دون التأثير على وحدات أخرى.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الوحدات ذات المسؤولية الواحدة بسهولة في مشاريع أخرى.
👨💻 مثال على تطبيق SRP
بدلاً من كتابة فئة واحدة كبيرة تُنفذ جميع وظائف إدارة المستخدم، قسّمها إلى فئات أصغر كل منها تُنفذ وظيفة واحدة، مثل:
فئة UserRegistration لإنشاء مستخدمين جدد.
فئة UserLogin لتسجيل دخول المستخدمين.
فئة UserProfile لإدارة ملفات تعريف المستخدمين.
2. مبدأ الفتح والإغلاق (Open/Closed Principle - OCP)
يُنص هذا المبدأ على أن البرامج يجب أن تكون مفتوحة للتوسيع ولكن مغلقة للتعديل.
🟢 فوائد تطبيق OCP
➖ قابلية التمديد: يسهل توسيع البرامج وإضافة وظائف جديدة دون الحاجة إلى إعادة كتابة الكود الموجود.
➖ استقرار الكود: يقلل من خطر حدوث أخطاء عند إضافة وظائف جديدة.
➖ سهولة الصيانة: يسهل صيانة الكود وتعديله دون التأثير على وظائفه الأساسية.
👨💻 مثال على تطبيق OCP
بدلاً من تعديل فئة User مباشرة لإضافة وظيفة جديدة لحساب عمر المستخدم، قم بإنشاء فئة جديدة UserAgeCalculator تُستخدم لحساب عمر المستخدم من تاريخ الميلاد.
3. مبدأ استبدال ليسكوف (Liskov Substitution Principle - LSP)
يُنص هذا المبدأ على أنه يجب أن تكون الكائنات المشتقة قابلة للاستبدال بأي كائنات أساسية دون التأثير على صحة البرنامج.
🟢 فوائد تطبيق LSP
➖ قابلية الاعتماد: يضمن أن الكائنات المشتقة تُستخدم بشكل صحيح دون التأثير على سلوك البرنامج.
➖ سهولة الصيانة: يسهل صيانة الكود وتعديله دون الحاجة إلى تغيير الكود الذي يعتمد على الكائنات الأساسية.
➖ قابلية إعادة الاستخدام: يسهل إعادة استخدام الكائنات المشتقة في أماكن مختلفة دون الحاجة إلى تعديل الكود الذي يعتمد عليها.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
مبادئ SOLID هي مجموعة من مبادئ التصميم تُستخدم لكتابة برامج كائنية المنحى قابلة للتمديد وصيانة بسهولة.
الأحرف الأولى من SOLID تعني:
✅ S: Single Responsibility Principle (مبدأ المسؤولية الواحدة)
✅ O: Open/Closed Principle (مبدأ الفتح والإغلاق)
✅ L: Liskov Substitution Principle (مبدأ استبدال ليسكوف)
✅ I: Interface Segregation Principle (مبدأ فصل الواجهات)
✅ D: Dependency Inversion Principle (مبدأ انعكاس الاعتمادية)
✍ شرح المبادئ الخمسة:
1. مبدأ المسؤولية الواحدة (Single Responsibility Principle - SRP)
يُنص هذا المبدأ على أن كل فئة أو وحدة برمجية يجب أن يكون لها مسؤولية واحدة فقط.
بمعنى آخر:
يجب أن يكون لكل فئة وظيفة محددة وواضحة.
يجب ألا تُنفذ الفئة وظائف غير مرتبطة بوظيفتها الأساسية.
🟢 فوائد تطبيق SRP
➖ سهولة الفهم: يسهل فهم الكود وتعديله عندما يكون لكل وحدة وظيفة محددة.
➖ سهولة الصيانة: من السهل إصلاح الأخطاء وتغيير الوحدات دون التأثير على وحدات أخرى.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الوحدات ذات المسؤولية الواحدة بسهولة في مشاريع أخرى.
👨💻 مثال على تطبيق SRP
بدلاً من كتابة فئة واحدة كبيرة تُنفذ جميع وظائف إدارة المستخدم، قسّمها إلى فئات أصغر كل منها تُنفذ وظيفة واحدة، مثل:
فئة UserRegistration لإنشاء مستخدمين جدد.
فئة UserLogin لتسجيل دخول المستخدمين.
فئة UserProfile لإدارة ملفات تعريف المستخدمين.
2. مبدأ الفتح والإغلاق (Open/Closed Principle - OCP)
يُنص هذا المبدأ على أن البرامج يجب أن تكون مفتوحة للتوسيع ولكن مغلقة للتعديل.
بمعنى آخر:
يجب أن يكون من السهل إضافة وظائف جديدة دون الحاجة إلى تعديل الكود الموجود.
يجب أن يكون من غير الضروري تعديل الكود الموجود عند إضافة وظائف جديدة.
🟢 فوائد تطبيق OCP
➖ قابلية التمديد: يسهل توسيع البرامج وإضافة وظائف جديدة دون الحاجة إلى إعادة كتابة الكود الموجود.
➖ استقرار الكود: يقلل من خطر حدوث أخطاء عند إضافة وظائف جديدة.
➖ سهولة الصيانة: يسهل صيانة الكود وتعديله دون التأثير على وظائفه الأساسية.
👨💻 مثال على تطبيق OCP
بدلاً من تعديل فئة User مباشرة لإضافة وظيفة جديدة لحساب عمر المستخدم، قم بإنشاء فئة جديدة UserAgeCalculator تُستخدم لحساب عمر المستخدم من تاريخ الميلاد.
3. مبدأ استبدال ليسكوف (Liskov Substitution Principle - LSP)
يُنص هذا المبدأ على أنه يجب أن تكون الكائنات المشتقة قابلة للاستبدال بأي كائنات أساسية دون التأثير على صحة البرنامج.
بمعنى آخر:
إذا كانت لديك فئة أساسية وفئة مشتقة، فيجب أن تتمكن من استخدام الكائن المشتق في أي مكان يُستخدم فيه الكائن الأساسي دون حدوث أي أخطاء أو تغييرات غير متوقعة في سلوك البرنامج.
🟢 فوائد تطبيق LSP
➖ قابلية الاعتماد: يضمن أن الكائنات المشتقة تُستخدم بشكل صحيح دون التأثير على سلوك البرنامج.
➖ سهولة الصيانة: يسهل صيانة الكود وتعديله دون الحاجة إلى تغيير الكود الذي يعتمد على الكائنات الأساسية.
➖ قابلية إعادة الاستخدام: يسهل إعادة استخدام الكائنات المشتقة في أماكن مختلفة دون الحاجة إلى تعديل الكود الذي يعتمد عليها.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
❤1👍1
4. مبدأ فصل الواجهات (Interface Segregation Principle - ISP)
يُنص هذا المبدأ على أنه يجب تقسيم الواجهات الكبيرة إلى واجهات أصغر وأكثر تحديدًا.
🟢 فوائد تطبيق ISP
➖ سهولة الاستخدام: يسهل استخدام الواجهات الأصغر وتطبيقها.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الواجهات الأصغر بسهولة في فئات مختلفة.
➖ قابلية التعديل: يسهل تعديل الواجهات الأصغر دون التأثير على الفئات التي تعتمد عليها.
👨💻 مثال على تطبيق ISP
نفترض أن لديك واجهة Animal تحتوي على وظائف مثل eat() و sleep() و makeSound().
إذا كانت لديك فئتان مشتقتان Dog و Cat تُرثان من فئة Animal، فليس من الضروري أن تُنفذ كلتا الفئتين وظيفة makeSound().
يمكنك تقسيم واجهة Animal إلى واجهتين أصغر: Eatable و SoundMaker.
تُنفذ فئة Dog واجهة Eatable و SoundMaker، بينما تُنفذ فئة Cat واجهة Eatable فقط.
5. مبدأ انعكاس الاعتمادية (Dependency Inversion Principle - DIP)
يُنص هذا المبدأ على أنه يجب الاعتماد على التجريدات بدلاً من التفاصيل الملموسة.
🟢 فوائد تطبيق DIP
➖ سهولة الاختبار: يسهل اختبار الفئات عالية المستوى دون الحاجة إلى الاعتماد على الفئات منخفضة المستوى.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الفئات عالية المستوى بسهولة في مشاريع أخرى.
➖ مرونة الكود: يجعل الكود أكثر مرونة وقابلية للتكيف مع التغييرات.
👨💻 مثال على تطبيق DIP
نفترض أن لديك فئة UserRegistrationService تُستخدم لإنشاء مستخدمين جدد.
بدلاً من الاعتماد مباشرة على فئة UserRepository (طبقة الوصول إلى قاعدة البيانات) لإنشاء المستخدمين،
يمكنك الاعتماد على واجهة UserRepositoryInterface.
تُقدم هذه الواجهة وظائف لإنشاء المستخدمين واسترجاعهم من قاعدة البيانات.
يمكنك بعد ذلك استخدام مُنفذ محدد لـ UserRepositoryInterface، مثل MySqlUserRepository أو PostgreSqlUserRepository،
لتنفيذ وظائف قاعدة البيانات الفعلية.
🔰 خاتمة
مبادئ SOLID هي أدوات قوية لكتابة برامج كائنية المنحى قابلة للتمديد وصيانة بسهولة.
من خلال اتباع هذه المبادئ، يمكنك إنشاء برامج أكثر موثوقية و سهلة الاستخدام و قابلية للتعديل.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
يُنص هذا المبدأ على أنه يجب تقسيم الواجهات الكبيرة إلى واجهات أصغر وأكثر تحديدًا.
بمعنى آخر:
يجب ألا تُجبر الفئات على تنفيذ واجهات تحتوي على وظائف لا تحتاجها.
يجب أن تُقدم كل واجهة وظائف محددة ومرتبطة ببعضها البعض.
🟢 فوائد تطبيق ISP
➖ سهولة الاستخدام: يسهل استخدام الواجهات الأصغر وتطبيقها.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الواجهات الأصغر بسهولة في فئات مختلفة.
➖ قابلية التعديل: يسهل تعديل الواجهات الأصغر دون التأثير على الفئات التي تعتمد عليها.
👨💻 مثال على تطبيق ISP
نفترض أن لديك واجهة Animal تحتوي على وظائف مثل eat() و sleep() و makeSound().
إذا كانت لديك فئتان مشتقتان Dog و Cat تُرثان من فئة Animal، فليس من الضروري أن تُنفذ كلتا الفئتين وظيفة makeSound().
يمكنك تقسيم واجهة Animal إلى واجهتين أصغر: Eatable و SoundMaker.
تُنفذ فئة Dog واجهة Eatable و SoundMaker، بينما تُنفذ فئة Cat واجهة Eatable فقط.
5. مبدأ انعكاس الاعتمادية (Dependency Inversion Principle - DIP)
يُنص هذا المبدأ على أنه يجب الاعتماد على التجريدات بدلاً من التفاصيل الملموسة.
بمعنى آخر:
يجب ألا تعتمد الفئات عالية المستوى على فئات منخفضة المستوى.
يجب أن تعتمد جميع الفئات على واجهات أو تجريدات.
يجب أن تُستخدم الفئات منخفضة المستوى من قبل الفئات عالية المستوى من خلال هذه التجريدات.
🟢 فوائد تطبيق DIP
➖ سهولة الاختبار: يسهل اختبار الفئات عالية المستوى دون الحاجة إلى الاعتماد على الفئات منخفضة المستوى.
➖ قابلية إعادة الاستخدام: يمكن إعادة استخدام الفئات عالية المستوى بسهولة في مشاريع أخرى.
➖ مرونة الكود: يجعل الكود أكثر مرونة وقابلية للتكيف مع التغييرات.
👨💻 مثال على تطبيق DIP
نفترض أن لديك فئة UserRegistrationService تُستخدم لإنشاء مستخدمين جدد.
بدلاً من الاعتماد مباشرة على فئة UserRepository (طبقة الوصول إلى قاعدة البيانات) لإنشاء المستخدمين،
يمكنك الاعتماد على واجهة UserRepositoryInterface.
تُقدم هذه الواجهة وظائف لإنشاء المستخدمين واسترجاعهم من قاعدة البيانات.
يمكنك بعد ذلك استخدام مُنفذ محدد لـ UserRepositoryInterface، مثل MySqlUserRepository أو PostgreSqlUserRepository،
لتنفيذ وظائف قاعدة البيانات الفعلية.
🔰 خاتمة
مبادئ SOLID هي أدوات قوية لكتابة برامج كائنية المنحى قابلة للتمديد وصيانة بسهولة.
من خلال اتباع هذه المبادئ، يمكنك إنشاء برامج أكثر موثوقية و سهلة الاستخدام و قابلية للتعديل.
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
👍2
💎 شرح مفصل حول الخدمات Microservices 💎
⁉️ ما هي Microservices؟
الخدمات Microservices هي أسلوب معماري لبناء التطبيقات من خلال خدمة صغيرة مستقلة تُنفذ وظيفة محددة.
بمعنى آخر:
✅ مزايا Microservices
1️⃣ سهولة التطوير: تسهل Microservices تطوير البرامج وتحديثها بشكل أسرع وأكثر كفاءة.
2️⃣ سهولة الصيانة: تسهل Microservices صيانة البرامج وإصلاحها.
3️⃣ قابلية التمديد: تسهل Microservices توسيع البرامج وإضافة وظائف جديدة.
4️⃣ مرونة الكود: تجعل Microservices الكود أكثر مرونة وقابلية للتكيف مع التغييرات.
5️⃣ قابلية الاعتماد: تجعل Microservices البرامج أكثر موثوقية وقابلية للتكيف مع الفشل.
✅ خصائص Microservices
• استقلالية الوحدات: يجب أن تكون كل وحدة مستقلة عن الوحدات الأخرى.
• التواصل من خلال APIs: يجب أن تتواصل الوحدات مع بعضها البعض من خلال واجهات برمجة تطبيقات (APIs).
• عدم الاعتماد على قاعدة بيانات مشتركة: يجب ألا تعتمد الوحدات على قاعدة بيانات مشتركة.
• قابلية التوسع: يجب أن تكون الوحدات قابلة للتوسع بشكل مستقل.
• المقاومة للفشل: يجب أن تكون الوحدات مقاومة للفشل.
👨🏫 أمثلة على Microservices
✔ خدمة تسجيل الدخول: تُستخدم هذه الخدمة لتسجيل دخول المستخدمين في التطبيق.
✔ خدمة إدارة المستخدمين: تُستخدم هذه الخدمة لإدارة معلومات المستخدمين، مثل إنشاء المستخدمين وتحديث معلوماتهم.
✔ خدمة إدارة المنتجات: تُستخدم هذه الخدمة لإدارة معلومات المنتجات، مثل إضافة المنتجات وتحديث معلوماتها.
✔ خدمة طلبات الشراء: تُستخدم هذه الخدمة لمعالجة طلبات الشراء من العملاء.
⚙ أدوات Microservices
1️⃣ Docker: أداة لإنشاء وتشغيل حاويات البرامج.
2️⃣ Kubernetes: منصة لإدارة حاويات البرامج.
3️⃣ Spring Cloud: مجموعة من الأدوات لإنشاء وتشغيل Microservices على منصة Java.
4️⃣ Istio: شبكة خدمة لربط Microservices وتأمينها.
ℹ الخدمات Microservices هي أسلوب معماري قوي لكتابة تطبيقات قابلة للتمديد وصيانة بسهولة.
من خلال اتباع مبادئ Microservices، يمكنك إنشاء برامج أكثر موثوقية و سهلة الاستخدام و قابلية للتعديل.
ملاحظة:
هذا شرح مفصل حول الخدمات Microservices، لكن هناك العديد من التفاصيل الأخرى التي لم يتم تغطيتها.
يعتمد تطبيق Microservices بشكل كبير على احتياجات التطبيق ومتطلباته.
هل لديك أي أسئلة أخرى حول Microservices؟🤔
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
🧡 أتمنى لك كل التوفيق في رحلتك في مجال البرمجة!
⁉️ ما هي Microservices؟
الخدمات Microservices هي أسلوب معماري لبناء التطبيقات من خلال خدمة صغيرة مستقلة تُنفذ وظيفة محددة.
بمعنى آخر:
تُقسم التطبيقات الكبيرة إلى وحدات أصغر مستقلة.
تُنفذ كل وحدة خدمة واحدة محددة.
تتواصل الوحدات مع بعضها البعض من خلال واجهات برمجة تطبيقات (APIs).
✅ مزايا Microservices
1️⃣ سهولة التطوير: تسهل Microservices تطوير البرامج وتحديثها بشكل أسرع وأكثر كفاءة.
2️⃣ سهولة الصيانة: تسهل Microservices صيانة البرامج وإصلاحها.
3️⃣ قابلية التمديد: تسهل Microservices توسيع البرامج وإضافة وظائف جديدة.
4️⃣ مرونة الكود: تجعل Microservices الكود أكثر مرونة وقابلية للتكيف مع التغييرات.
5️⃣ قابلية الاعتماد: تجعل Microservices البرامج أكثر موثوقية وقابلية للتكيف مع الفشل.
✅ خصائص Microservices
• استقلالية الوحدات: يجب أن تكون كل وحدة مستقلة عن الوحدات الأخرى.
• التواصل من خلال APIs: يجب أن تتواصل الوحدات مع بعضها البعض من خلال واجهات برمجة تطبيقات (APIs).
• عدم الاعتماد على قاعدة بيانات مشتركة: يجب ألا تعتمد الوحدات على قاعدة بيانات مشتركة.
• قابلية التوسع: يجب أن تكون الوحدات قابلة للتوسع بشكل مستقل.
• المقاومة للفشل: يجب أن تكون الوحدات مقاومة للفشل.
👨🏫 أمثلة على Microservices
✔ خدمة تسجيل الدخول: تُستخدم هذه الخدمة لتسجيل دخول المستخدمين في التطبيق.
✔ خدمة إدارة المستخدمين: تُستخدم هذه الخدمة لإدارة معلومات المستخدمين، مثل إنشاء المستخدمين وتحديث معلوماتهم.
✔ خدمة إدارة المنتجات: تُستخدم هذه الخدمة لإدارة معلومات المنتجات، مثل إضافة المنتجات وتحديث معلوماتها.
✔ خدمة طلبات الشراء: تُستخدم هذه الخدمة لمعالجة طلبات الشراء من العملاء.
⚙ أدوات Microservices
1️⃣ Docker: أداة لإنشاء وتشغيل حاويات البرامج.
2️⃣ Kubernetes: منصة لإدارة حاويات البرامج.
3️⃣ Spring Cloud: مجموعة من الأدوات لإنشاء وتشغيل Microservices على منصة Java.
4️⃣ Istio: شبكة خدمة لربط Microservices وتأمينها.
ℹ الخدمات Microservices هي أسلوب معماري قوي لكتابة تطبيقات قابلة للتمديد وصيانة بسهولة.
من خلال اتباع مبادئ Microservices، يمكنك إنشاء برامج أكثر موثوقية و سهلة الاستخدام و قابلية للتعديل.
ملاحظة:
هذا شرح مفصل حول الخدمات Microservices، لكن هناك العديد من التفاصيل الأخرى التي لم يتم تغطيتها.
يعتمد تطبيق Microservices بشكل كبير على احتياجات التطبيق ومتطلباته.
هل لديك أي أسئلة أخرى حول Microservices؟🤔
تابع أيضاً :
المكتبة العامة | برمجة و تطوير | الفريق العربي للبرمجة | كانفا برو
🧡 أتمنى لك كل التوفيق في رحلتك في مجال البرمجة!
👍4