البرمجة الكينونية: جعل المفاهيم المعقدة بسيطة

إفشاء: يساعدك دعمك في الحفاظ على تشغيل الموقع! نحصل على رسوم إحالة لبعض الخدمات التي نوصي بها في هذه الصفحة.


البرمجة الكينونية (OO) هي نموذج برمجي يتضمن أو يعتمد على مفهوم الكائنات وهياكل البيانات المغلفة التي لها خصائص ووظائف والتي تتفاعل مع كائنات أخرى.

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

البرمجة الشيئية

تاريخ البرمجة الكينونية

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

في السبعينيات ، صاغ ألان كاي مصطلح “المنحى بالكائنات” أثناء العمل على Smalltalk. كان هذا في إشارة إلى الاستخدام المكثف للكائنات في اللغة ، ومكانها كوحدة أساسية للتنظيم.

كان انتشار البرمجة الشيئية بطيئا نسبيا في البداية. قدم Common Lisp نظام Common Lisp Object System ، مضيفًا أشياء إلى Lisp ، في أواخر السبعينيات. في الثمانينيات ، تم اختراع لغة برمجة إيفل ، والتي كانت موجهة بالكامل للكائنات. كتب مخترع إيفل ، برتراند ماير ، بناء برمجيات Object-Oriented ، والتي كانت من أوائل الكتب التي نشرت مفاهيم برمجة OO على نطاق واسع..

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

بحلول نهاية العقد الأول من القرن الحادي والعشرين ، أصبحت البرمجة الموجهة للكائنات إلى حد كبير “الطريقة الصحيحة الوحيدة” المقبولة لتطوير معظم البرمجيات. تميل لغات البرمجة الأحدث ، وخاصة اللغات التي تمت كتابتها ديناميكيًا مثل Python و Ruby و JavaScript ، إلى افتراض ، أو حتى فرض ، نهجًا موجهًا نحو الكائنات. وفي الوقت نفسه ، أضافت العديد من اللغات القديمة ، مثل Fortran و COBOL ميزات موجهة للكائنات.

مفاهيم مهمة موجهة للكائنات

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

فصل المخاوف

إن المبدأ التوجيهي المركزي الذي يُعلم جميع المفاهيم الأخرى في البرمجة الشيئية هو فصل الاهتمامات. هذه هي الفكرة القائلة بأنه يجب فصل حزم البيانات والوظائف المميزة منطقيا إلى حزم مميزة من كود التطبيق.

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

كائنات وفئات

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

تحدد الفئة كائنًا ؛ كائن يعيد تكوين فئة. على سبيل المثال ، دعنا نستمر في التفكير في موقع ويب للتجارة الإلكترونية. هناك الكثير من العملاء ، لكنهم يفعلون نفس الشيء. لذلك سيكون هناك فئة العملاء ، حيث حدد المبرمج ما هو العميل وكيف يعمل. ثم يتم تمثيل كل عميل فردي في النظام بواسطة كائن عميل.

نظرًا لأن تعريفات الفئات تحدد جميع تفاصيل التنفيذ ، فإن معظم عمل تطوير برنامج موجه للكائنات ينطوي على العمل مع الفئات ، وليس الكائنات.

لغات OO الكلاسيكية وغير الكلاسيكية

هناك عدد قليل من اللغات التي تتضمن عددًا كبيرًا من المفاهيم الموجهة للكائنات ، ولكنها لا تحتوي على بنية تسمى فئة على وجه التحديد. أبرزها JavaScript ، والتي تستخدم نماذج أولية ، أو كائنات عامة يتم استنساخها بعد ذلك. تختلف المصطلحات والفلسفة وحتى التنفيذ “تحت غطاء المحرك” – ومع ذلك فإن تجربة المطور هي نفسها إلى حد كبير.

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

الأساليب والخصائص

يحتوي الكائن على متغيرات ، والتي تسمى عادةً الخصائص أو السمات في معظم اللغات. على سبيل المثال ، قد يكون لكائن العميل خصائص مثل عنوان_الشحن أو الاسم.

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

أحد تحديات تطوير برامج جيدة موجهة للكائنات هو تحديد كيفية تقسيم الوظائف بين العديد من الفئات المحتملة. على سبيل المثال ، هل يجب أن تنتمي طريقة الدفع إلى العميل أم إلى سلة التسوق؟ هل يمتلك العميل طريقة تسجيل الخروج ، أم لا يتصل العميل بطريقة تسجيل الخروج لكائن Authentication_manager?

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

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

إليك بعض الموارد لمساعدتك على فهم الصف والخصائص والطرق بشكل أفضل:

  • الطبقات والكائنات والخصائص ومفاهيم الطريقة هي عرض فيديو رائع لمدة 10 دقائق لهذه المفاهيم ؛
  • الاختيار بين الخصائص والطرق هو برنامج تعليمي .NET ، يغطي بعض اعتبارات التصميم التي تنطبق على أي لغة ؛
  • يوفر فهم الفئات والطرق والخصائص في C # شرحًا جيدًا مع بعض الرسوم البيانية المفيدة.

تمرير الرسالة والإرسال الديناميكي

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

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

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

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

  • سأل أحدهم ما هو تمرير الرسالة في OO؟ على StackExchange ؛ يتبع بعض الإجابات المفيدة للغاية ؛
  • انظر أيضًا ما هي الاختلافات الرئيسية بين OO في Smalltalk و Java؟ للحصول على نظرة ثاقبة حول كيفية تغير تمرير الرسائل من الفكرة الأصلية إلى كيفية عملها في الغالب باللغات المعاصرة ؛
  • الرسالة تمرير على ويكي c2 لديها شرح مفصل ، إذا كان فوضويًا إلى حد ما.

التغليف

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

لا تفرض جميع اللغات الموجهة للكائنات التغليف الصارم ؛ بعضها يسمح بالوصول إلى خصائص الكائن (الحصول عليها وتعيينها) مباشرة. ومع ذلك ، يشجع العديد من الخبراء في تطوير OO المبرمجين على الالتزام بمبادئ التغليف (من خلال عدم استدعاء الخصائص مباشرة) ، حتى في اللغات التي تسمح بذلك.

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

الوراثة والتكوين

الوراثة والتكوين طريقتان ترتبط بهما فئات مختلفة (وكائناتها الفورية) ببعضها البعض.

يصف الميراث العلاقات “هي”: المستخدم هو شخص ؛ الزبون هو مستخدم. في هذا المثال ، قد يكون هناك فئة الأشخاص التي تحدد جميع خصائص وأساليب الأشخاص بشكل عام (الاسم ، عيد الميلاد). ثم تقوم فئة المستخدم بتوسيع فئة الشخص ، لإضافة أشياء مثل سمة اسم المستخدم أو طرق تسجيل الدخول والخروج. يمكن لفئة العملاء بعد ذلك توسيع المستخدم ، وإضافة تلك الأشياء التي يحتاجها العميل فقط ، مثل order_history أو billing_address.

يصف التكوين علاقة “لها علاقة” ، عندما “يمتلك” كائن ما كائنًا آخر. على سبيل المثال ، قد تمتلك فئة العملاء عنوان Billing_address ، وهو بحد ذاته كائن كامل المعرفة في فئة. مثل التسلسل الهرمي للوراثة ، يمكن أن يكون التسلسل الهرمي التركيبي بعمق عدة طبقات. على سبيل المثال: قد يكون لدى العميل عربة تسوق ، وتحتوي عربة التسوق على عدة منتجات ، ولكل منتج بائع ، وهكذا..

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

  • الميراث مقابل التكوين: أيهما يجب أن تختار؟ يذهب إلى بعض اعتبارات التصميم عند بناء التسلسل الهرمي لفئة compex ؛
  • تكوين مقابل الميراث: كيف تختار؟ يغطي نفس السؤال ، ولكن من زاوية مختلفة وبفكاهة أكثر ؛
  • تصميم Java: الكائنات ، UML ، والعملية ، بقلم كيرك نورنشيلد ، يتضمن قسمًا ، “مبدأ إعادة الاستخدام المركب” في الفصل الأول يشرح لماذا يكون التكوين أفضل في بعض الأحيان ، حتى عندما يبدو الميراث صحيحًا.

تعدد الأشكال

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

تعددية الأشكال موضوع كبير ولا يخلو من الجدل. إليك بعض الموارد للمساعدة في لف رأسك حولها:

  • تعدد الأشكال في جافا – طريقة التحميل الزائد والتجاوز هي مقدمة لطيفة لتعدد الأشكال ؛
  • مفاهيم البرمجة الكينونية: تعدد الأشكال والواجهات تتعلق بشكل خاص بـ ActionScript ، ولكنها توفر الكثير من التفاصيل حول الموضوع ، بما في ذلك المشكلات والقيود المختلفة ؛
  • تعدد الأشكال – البرمجة الشيئية في لغة C ++ هي شرح فيديو جميل.
  • مبدأ استبدال Liskov (PDF) هو عرض تقديمي لمساعدتك على فهم الكتابة الفرعية.

تعرف على المزيد حول البرمجة الشيئية

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

  • أنماط التصميم: عناصر البرامج الموجهة للكائنات القابلة لإعادة الاستخدام ، من قبل جاما وآخرون ، هو الكتاب الكلاسيكي الذي قدم برنامجًا موجهًا للكائنات إلى المطورين الرئيسيين ؛ لا يزال يجب قراءته.
  • يتجه التحليل والتصميم الكائني مع التطبيقات ، بواسطة Booch ، وآخرون ، إلى أبعد من كتابة كود OO ويدخل في لحم حركة OOP ، وهو تحليل وتصميم الأنظمة ؛
  • عملية التفكير الكينوني التي كتبها Matt Weisfeld ، هو كتاب جيد للمطورين المهرة في البرمجة الإجرائية أو الوظيفية والذين يحتاجون إلى إعادة تدريب تفكيرهم تجاه الأشياء والفصول ؛
  • يقدم OOP Demystified ، الذي قدمه Keogh و Giannini ، برنامجًا تعليميًا حول OOP في سياق تطوير التطبيق في العالم الحقيقي ، مع التركيز على المهارات والتفكير المطلوب لتطبيق التحليل الموجه نحو الكائنات وعملية التصميم ؛
  • بناء برمجيات كائنية التوجه ، بقلم برتراند ماير ، هو كتاب كلاسيكي عن OO ، وهو من أوائل الذين قدموا التقنية والفلسفة الكامنة وراء المفاهيم ؛ قد تبدو بعض المواد في هذا الكتاب مؤرخة ، لكن الأساسيات لا تزال ذات صلة ؛
  • شرح أنماط التصميم: منظور جديد للتصميم الموجه للكائنات ، بقلم Shalloway and Trott ، هو أهم كتاب يطور ممارسة أنماط التصميم ، أو استراتيجيات قابلة لإعادة الاستخدام لمعالجة المشاكل المتكررة ؛
  • نماذج الكائنات: الاستراتيجيات والأنماط والتطبيقات ، بواسطة Coad و North و Mayfield ، هي رفيق جيد لأنماط التصميم الموضحة ، حيث توفر العديد من الأنماط والاستراتيجيات الإضافية للبرمجة الموجهة للكائنات.

للحصول على فهم عملي أكثر ومعاصر لمفاهيم البرمجة الشيئية ، جرب واحدًا أو أكثر من هذه الموارد عبر الإنترنت:

  • تعلم بسرعة البرمجة الموجهة للكائنات هو برنامج تعليمي يعتمد على Python من شبكة مطوري Mozilla ؛
  • مفاهيم البرمجة الكينونية هي برنامج تعليمي من أوراكل يغطي أساسيات البرمجة الكينونية من منظور جافا.
  • يقدم برنامج البرمجة الكينونية مقدمة لغوية عن المفاهيم الأساسية ؛
  • مقدمة لمفاهيم البرمجة الشيئية والمزيد هي نظرة عامة رائعة على البرمجة الشيئية ، وكذلك العديد من الموضوعات ذات الصلة الوثيقة ، مثل هندسة البرمجيات وأنماط التصميم ؛
  • مراجعة البرمجة الموجهة للكائنات من Codecademy ، تستخدم JavaScript ومحررًا في المتصفح للسماح لك بالعمل على الفور مع المفاهيم (ولكن تذكر أن JavaScript تنفذ مفاهيم OOP بشكل مختلف قليلاً) ؛
  • أساسيات البرمجة الكينونية هي مورد Java آخر ، مع الكثير من الأمثلة المفيدة مع الطبقات الحقيقية.

لغات مهمة موجهة للكائنات

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

فيما يلي قائمة ببعض اللغات الأكثر شعبية OO-capabable ، مع ملاحظات حول نهجها تجاه Object Orientation ، وبعض الموارد لمساعدتك في الدخول إلى OOP بتلك اللغة.

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

لغات قائمة على لغة سي

لغة C ليست لغة موجهة للكائنات. ومع ذلك ، فإنه على الأقل يمكن كتابة رمز OO فيه:

  • البرمجة الشيئية مع ANSI-C (PDF)
  • دليل Phil على ANSI C
  • البرمجة الشيئية في C.

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

ج++

C ++ عبارة عن نماذج متعددة ، مما يعني أنه يدعم العديد من طرق البرمجة المختلفة (PDF) ، بما في ذلك اتجاه الكائن. إنه مبني على C ، وتم تطويره خصيصًا كوسيلة لإضافة دعم لمفهوم OOP للفصول.

  • البرمجة الكينونية (OOP) في C ++: دليل تمهيدي رائع من أستاذ علوم الكمبيوتر
  • تعلم البرمجة الموجهة للكائنات في C ++: برنامج تعليمي كبير متعدد الأجزاء حول OOP
  • دروس C ++ 20-1 – دروس البرمجة الكينونية: جزء من سلسلة فيديو أكبر على C ++ ، تبدأ هذه الجلسة التغطية على مفاهيم OOP
  • مقدمة في البرمجة الشيئية باستخدام لغة البرمجة C++
  • البرمجة الشيئية في لغة البرمجة C++.

ج #

C # (“C حاد”) هو مشتق آخر من C ، مصمم في الغالب كتحسين على C ++ للاستخدام في Microsoft .NET Framework.

  • البرمجة الشيئية في C #
  • C # البرمجة الكينونية الأساسية للتقدم (فيديو)
  • مفاهيم C # OOPS (فيديو)
  • أساسيات البرمجة الكينونية في C #: برنامج تعليمي متميز من PLuralsight (يتوفر إصدار تجريبي مجاني)
  • مقدمة في مفاهيم البرمجة الشيئية في C #: تغطي التجريد والتغليف والميراث وتشكل الأشكال في C #.
  • أهم 10 مفاهيم OOPS في C # .NET مع أمثلة: دليل سريع رائع لتوجيه نفسك في C # إذا كنت تفهم بالفعل مفاهيم OOP
  • التعلم C #: كيفية إتقان لغة برمجة كائنية التوجه: نظرة عامة رفيعة المستوى حول أفضل طريقة للتعامل مع التعلم C # و OOP بشكل عام
  • بداية C # برمجة كائنية التوجه.

ج موضوعية

تم تطوير Objective-C في نفس وقت C ++ تقريبًا ، مع نفس الهدف بشكل أساسي – إضافة قدرات OOP إلى C. بديل مفتوح المصدر.

  • البرمجة الشيئية مع الهدف جيم
  • مقدمة في التصميم الكينوني
  • البرمجة الشيئية ولغة الهدف جيم (PDF)
  • مقدمة في البرمجة الشيئية.

الليسب المشتركة

Lisp ليس في الأساس كائن موجه. ومع ذلك ، فإن Common Lisp ، واحدة من لهجات Lisp الأكثر شيوعًا ، تتضمن Common Lisp Object System (CLOS) ، والذي يوفر ميزات OOP.

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

  • أساسيات CLOS
  • دليل موجز عن CLOS
  • نظام الكائن المشترك Lisp: نظرة عامة (PDF)
  • CLOS: دمج البرمجة الكينونية والوظيفية (PDF)
  • البرمجة الشيئية في COMMON LISP: A Programmer’s Guide to CLOS.

ارلانغ

وفقًا لبعض وجهات النظر التقليدية ، فإن Erlang ليست لغة موجهة للكائنات. ومع ذلك ، هناك رأي أقلية رائع على عكس ذلك ، ويقول مؤيدوها أن إرلانغ هي اللغة الأكثر توجهاً إلى الكائن ، أو حتى أن إرلانغ هي اللغة الحقيقية الوحيدة الموجهة للكائن.

ينطبق الكثير من هذا أيضًا على الإكسير أيضًا. من ناحية أخرى ، ربما يكون هذا على غرار OO ، وليس OO صحيحًا.

F#

F # (“F sharp”) هي لغة متعددة النماذج. جوهرها هو البرمجة الوظيفية حقًا ، ولكنه يتضمن دعمًا لـ OO ومحاولات للتوفيق بين هذين النهجين المختلفين للبرمجة.

  • سلسلة “البرمجة الكينونية في F #”
  • F # أدلة سريعة: البرمجة الشيئية
  • F # نظرة عامة – البرمجة الحتمية والموجهة للكائنات
  • كائن # موجه نحو الكائنات – إنشاء فئات
  • البرمجة الشيئية في F # (PDF)
  • OOP بدون دروس في F #.

فورتران

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

  • OOP في فورتران قبل أن يكون فورتران موجهًا نحو الكائن:
    • نمط كائني التوجه في فورتران 90
    • البرمجة الشيئية عبر برنامج فورتران 90 (PDF)
    • مقدمة للمفاهيم الكائنية باستخدام Fortran90.
  • OOP في فورتران بدعم رسمي:
    • البرمجة الشيئية في فورتران 2003
    • فورتران الحديث في الممارسة
    • البرمجة العلمية في FORTRAN 2003: برنامج تعليمي يتضمن البرمجة الشيئية (PDF).

اذهب

Go هي لغة جديدة نسبيًا ، بعد أن طورتها Google في عام 2007. هناك الكثير من النقاش حول ما إذا كانت Go موجهة للكائنات أم لا.

Go لا تحتوي على أي شيء يسمى “كائن” أو “فئة” ، ولكن لديها بعض الهياكل المماثلة. من وجهة نظر معينة ، يمكنك التفكير في Go على أنها موجهة للكائنات.

يعتقد الكثير من الناس أن Go is OO:

  • انتقل إلى تصميم كائني التوجه
  • البرمجة الشيئية في الذهاب
  • لغة الكائنات المنحى في الذهاب
  • انتقل إلى المبرمجين الكائنين أو البرمجة الكائنية بدون كائنات (فيديو)
  • ملخص الخير البرمجة الكينونية في Go ، بدون ألم.

جافا

تم بناء Java من الألف إلى الياء لتكون موجهة للكائنات. فيما يلي بعض الموارد الرائعة لبدء استخدام Java:

  • تصميم نظام كائني التوجه: موقع CS108 في ستانفورد ، مع روابط إلى التعليمات البرمجية ، والنشرات ، وشرائح المحاضرات ، وكل ما تحتاجه تقريبًا للعمل خلال الدورة بنفسك
  • برنامج Java التعليمي: مفاهيم البرمجة الشيئية
  • جافا برمجة دروس أساسيات البرمجة الكينونية (OOP)
  • مفاهيم البرمجة الكينونية (ستة مقاطع فيديو)
  • البرمجة الكينونية – دروس جافا
  • برنامج Java Fundamentals Tutorial: البرمجة الشيئية في جافا
  • البرمجة الشيئية في جافا
  • أساسيات البرمجة الشيئية مع جافا (PDF).

جافا سكريبت

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

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

  • مقدمة في جافا سكريبت كائنية التوجه (شبكة مطوري Mozilla)
  • جافا سكريبت: لغة البرمجة الأكثر سوءًا في العالم
  • OOP في جافا سكريبت: ما تحتاج إلى معرفته
  • جافا سكريبت كائنية التوجه: إنشاء مكتبات ومكتبات جافا سكريبت عالية الجودة وقابلة للتطوير
  • مبادئ جافا سكريبت كائنية التوجه
  • JavaScript كائني التوجه (فيديو).

بي أتش بي

لم يدعم PHP حتى مفاهيم OO الأساسية حتى الإصدار 4 ، ولم يدعم توجيه الكائن بالكامل حتى PHP5.

  • PHP كائني التوجه للمبتدئين
  • PHP الكائني التوجه للمبتدئين المطلقين
  • مبادئ البرمجة الكينونية في PHP
  • PHP الكائني التوجه (فيديو)
  • PHP الكينوني: المفاهيم والتقنيات والرمز.

بيثون

لا تحتاج رموز بايثون أن تكون موجهة للكائنات ، لكن اللغة تدعمها بالكامل. تحقق من هذه الموارد:

  • البرمجة الكينونية: مقدمة عن OOP ، عن طريق Python ، من MIT’s Open Courseware
  • البرمجة الشيئية في بايثون
  • تحسين Python الخاص بك: فئات Python والبرمجة كائنية التوجه
  • دورة بايثون: البرمجة الشيئية
  • Python 3 البرمجة الكينونية.

روبي

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

  • دليل مستخدم روبي: التفكير الكينوني
  • وحدة روبي: ميزة رئيسية للغة برمجة روبي
  • التصميم العملي الموجه للكائنات في روبي.

حديث قصير

ربما تكون Smalltalk هي اللغة الأكثر تأثيرًا على الكائنات الشيئية ، حيث كان لها تأثير عميق على اللغات التي جاءت لاحقًا. نتيجة لذلك ، من الجيد أن يكون لديك بعض الإلمام بها على الأقل. ستساعدك هذه الموارد على البدء:

  • البرمجة الشيئية باستخدام Smalltalk (PDF)
  • Smalltalk وتوجيه الكائن: مقدمة (PDF)
  • Smalltalk: البدء باللغة (فيديو)
  • برمجة Smalltalk – اتجاه الكائن من البداية: مقدمة لمبادئ البرمجة.

من ناحية أخرى…

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

فيما يلي عدد قليل من الموارد التي تقدم الحجة المضادة لـ OOP:

  • البرمجة الكينونية هي كارثة باهظة الثمن يجب أن تنتهي
  • البرمجة الكينونية ضارة بطبيعتها
  • البرمجة الكينونية: قصة كارثة.

البرمجة الشيئية اليوم

في حين أن البرمجة الموجهة للكائنات لا تزال منهجية مهمة في برمجة الكمبيوتر ، إلا أنها لم تعد تحتفظ بمكانتها كمعيار صناعي لـ “تطوير البرمجيات الجيدة”. النماذج الأخرى ، وخاصة البرمجة الوظيفية ، تأتي في المقدمة ، إلى جانب اللغات الجديدة التي تدعمها. وفي الوقت نفسه ، تتزايد الانتقادات الموجهة للبرمجة الموجهة للكائنات ، وكذلك لحركة أنماط التصميم.

ومع ذلك ، فإن كمية كبيرة من البرامج المكتوبة اليوم موجهة للكائنات. إذا كنت تعمل في أي من اللغات الشائعة الموجهة للكائنات ، فأنت بحاجة إلى فهم جيد للمفاهيم الأساسية الموجهة للكائنات.

أشياء أكثر إثارة للاهتمام

لدينا المزيد من أدلة البرمجة والبرامج التعليمية والرسوم البيانية ذات الصلة بالتشفير والتطوير:

  • موارد مطوري C ++: بالإضافة إلى معلومات حول C ++ ، هناك المزيد من المعلومات حول البرمجة الشيئية.
  • مقدمة وموارد برمجة لينكس: على الرغم من أنها ليست حول البرمجة الكينونية بالتحديد ، إلا أن هذه المناقشة حول العديد من مستويات برمجة لينكس ستنشطك.
  • مقدمة وموارد INTERCAL: إذا وجدت برمجة موجهة للكائنات صعبة ، فإن دراسة INTERCAL ستجعل الأمر يبدو سهلاً. إن لغة المحاكاة الساخرة هذه (أو المزحة) معقدة للغاية ومرعبة لدرجة أن حتى أعمق مناقشة حول تعدد الأشكال ستبدو ممتعة.

ما هو الرمز الذي يجب أن تتعلمه?

هل تشعر بالارتباك حول لغة البرمجة التي يجب أن تتعلم البرمجة بها؟ تحقق من مخطط المعلومات الخاص بنا ، ما هو الرمز الذي يجب أن تتعلمه؟ إنه لا يناقش الجوانب المختلفة للغات فحسب ، بل يجيب على أسئلة مهمة مثل ، “كم من المال سأجني برمجة جافا للعيش؟”

ما هو الرمز الذي يجب أن تتعلمه؟
ما هو الرمز الذي يجب أن تتعلمه?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map