اذهب إلى المحتوى
  • 0

فهم البرمجة الكائنية وتطبيق SOLID Principles وDesign Patterns: ما الذي يجب علي فهمه؟

أسامة أحمد4

السؤال

ما الأشياء التي يجب عليا فهمها وتطبيقها بشكل تام حتى استطيع القول  اني قد فهمت البرمجة الكائنيةبشكل جيد  

و ماذا عن مفاهيم مثل ال solid  programming  و الديزاين باترن 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

للقول بأنك تفهم البرمجة الكائنية بشكل جيد، يجب عليك فهم وتطبيق مجموعة من المفاهيم والمبادئ الأساسية في البرمجة الكائنية ، مثل :- 

  • المفاهيم الأساسية تعلم ما هو كائن وكيفية إنشائه واستخدامه، وما هو الاقتران والتجميع والوراثة والتعددية والاستعاضة والتجربة (Encapsulation, Abstraction, Inheritance, Polymorphism, Composition, Aggregation).
  • الفئات والكائنات فهم كيفية تعريف فئات (Classes) وإنشاء كائنات (Objects) منها واستخدام الخصائص والأساليب (Methods) التابعة للكائنات.
  • المبدأ القائل بأن "الكائن هو المحور" البرمجة الكائنية تتمحور حول التعامل مع الكائنات والتفاعل بينها.
  • التوريث (Inheritance) فهم كيفية إنشاء هرم التوريث واستفادة الفئات من خصائص الفئات الأخرى.
  • التعددية (Polymorphism) فهم كيفية استخدام الدوال المتعددة الأشكال والتي يمكن أن تعمل بطرق مختلفة اعتمادًا على السياق.
  • التجميع (Composition) والاقتران (Aggregation) فهم كيفية تكوين كائنات من كائنات أخرى وتحقيق العلاقات بينها.

أما بالنسبة لمفاهيم الـ SOLID programming وDesign Patterns، فهي أيضًا مهمة لكي تصبح مبرمجًا كائنيًا ماهرًا وتكون قادرًا على تطوير تطبيقات ذات تصميم مرن وقابل للصيانة. إليك نظرة سريعة على بعض هذه المفاهيم:

SOLID Programming Principles
   - Single Responsibility Principle (مبدأ المسؤولية الواحدة): كل فئة يجب أن تكون لها مسؤولية واحدة واضحة.
   - Open/Closed Principle (مبدأ المفتوحة/المغلقة): الكود يجب أن يكون مفتوحًا للامتداد ومغلقًا للتعديل.
   - Liskov Substitution Principle (مبدأ التعويض لـ ليسكوف): يجب أن يكون بإمكانك استبدال كائن من فئة مشتقة بكائن من الفئة الأساسية دون التأثير على صحة البرنامج.
   - Interface Segregation Principle (مبدأ فصل الواجهات): يجب أن تكون الواجهات خاصة بالمستخدمين الذين يستخدمونها.
   - Dependency Inversion Principle (مبدأ عكس التبعية): يجب أن يعتمد الكود على واجهات بدلاً من تفاصيل النفاذ.

Design Patterns (أنماط التصميم)
   - Singleton Pattern: يضمن أن تكون هناك نسخة واحدة فقط من الكلاس.
   - Factory Pattern: ينشئ كائنات بدون تحديد نوعها بشكل صريح باستخدام واجهة مشتركة.
   - Observer Pattern: يسمح بإشعار العديد من الكائنات بتغييرات في الكائن الأساسي.
   - Decorator Pattern: يوفر تعديلًا ديناميكيًا لسلوك كائن بدون تغيير الهيكل.

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لفهم البرمجة الكائنية بشكل جيد، يجب عليك فهم وتطبيق المفاهيم التالية:

الكلاسات والكائنات: تتعلق هذه المفاهيم بتعريف الكلاسات (Classes) التي تحدد سلوك وخصائص الكائنات (Objects). يجب فهم كيفية إنشاء الكلاسات والكائنات، وكيفية استخدام الخصائص والأساليب المعرفة داخلها.

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

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

التجميع (Composition): يسمح لك بإنشاء كائن جديد يتكون من كائنات أخرى تعتبر أجزاء له. تسمح لك هذه المفهوم ببناء هياكل أكبر وأكثر تعقيدًا.

الوصول والتعديل (Access Modifiers): هي مصطلحات تحدد مدى إمكانية الوصول إلى الخصائص والأساليب في الكلاسات.

بالنسبة لمفاهيم SOLID وDesign Patterns:

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

  1. S - مبدأ الفصل الفعلي (Single Responsibility Principle): يجب أن يكون لكل كلاس مسؤولية واحدة فقط.

  2. O - مبدأ التفتح للتعديل والإغلاق للتوسيع (Open/Closed Principle): يجب أن تكون الكلاسات مفتوحة للتوسيع ومغلقة للتعديل.

  3. L - مبدأ استبدال ليسكوف (Liskov Substitution Principle): يجب أن يكون بإمكانك استبدال كائن من كلاس مشتق مكان كائن من الكلاس الأساسي دون تأثير سلبي على البرنامج.

  4. I - مبدأ الفصل الواجهة (Interface Segregation Principle): يجب أن تكون الواجهات مخصصة لاحتياجات العملاء المحددة.

  5. D - مبدأ الاعتمادية على الاستثناء (Dependency Inversion Principle): يجب أن تعتمد الكلاسات على الواجهات بدلاً من التفاصيل الداخلية.

أما بالنسبة لتصميم الأنماط (Design Patterns)، فهي عبارة عن حلول معترف بها ومجرَّبة لمشكلات معينة في التصميم البرمجي. تعتبر الأنماط منهجية مساعدة تسهل عملية التصميم وتحسن جودة الكود وصيانته. أمثلة على بعض أنماط التصميم: Singleton، Factory، Observer، وغيرها.

لذا، من المهم العمل على فهم وتطبيق هذه المفاهيم لتحسين فهمك للبرمجة الكائنية وتطوير مهاراتك في التصميم البرمجي.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

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

كما أن بعض اللغات تحقق مبدأ الوراثة المتعددة في حين أن لغات أخرى لا تسمح بذلك.

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

ثم مفهوم التركيب والتفكيك (Composition and Aggregation)، حيث تعتمد البرمجة الكائنية على تركيب الكائنات من خلال تضمينها في بعضها البعض (التركيب) أو ربطها بشكل منطقي (التفكيك).

يأتي بعد ذلك التوريث (Inheritance) والذي يسمح بإنشاء كائن جديد بناءً على كائن موجود واكتساب الخصائص والسلوكيات من الكائن الأصل.

ننتقل بعد ذلك إلى الدوال والأساليب (Methods)، وهي سلوكيات الكائنات وتستخدم لتنفيذ العمليات والإجراءات.

ثم مفهوم التغليف (Encapsulation) والذي يتيح لك تجميع البيانات والأساليب ذات الصلة معًا في كائن واحد وإخفاء التفاصيل الداخلية عن الخارج.

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

وقد تم توضيح مجموعة المبادئ البرمجية الخمسة SOLID Principles التي تهدف إلى جعل التصميم البرمجي قابلًا للتوسع والصيانة.

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

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

وبخصوص الـ Design Patterns فعليك بالإطلاع عليها فقط في البداية، لكن مع التركيز بشدة على نمط Model-View-Controller (MVC) فهو الأكثر استخدامًا وستحتاجه في العمل، أما باقي الأنماط فتستطيع تعلمها بعد مرور فترة وإنهائك أكثر من مشروع، وقد لا تحتاج إليها، وإليك شرح مفصل لما أقصده:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

تعتبر البرمجة الكائنية من المفاهيم المهمة في عالم البرمجة، ولتفهمها بشكل جيد، يجب عليك فهم العناصر التالية:

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

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

وللتطبيق جرب بناء بعض المشاريع التي من الضروري استخدام البرمجة الكائنية فيها، مثل:

نظام تذاكر طيران (Airline Reservation System)

تشمل بعض الفئات الرئيسية:

  • فئة للرحلات (Flights) تخزن بيانات عن الرحلة مثل وقت الإقلاع والهبوط ورقم الرحلة.
  • فئة للعملاء (Customers) تخزن بيانات العملاء مثل الاسم وتاريخ الميلاد ورقم حساب البطاقة الائتمانية.
  • فئة للتذاكر (Tickets) تربط بين الرحلات والعملاء.

نظام طلبات (Order Management System)

ستحتاج فئات مثل:

  • فئة للعملاء (Customers) لتخزين بياناتهم وطلباتهم السابقة.
  • فئة للمنتجات (Products) لتخزين بياناتها والموردين والأسعار.
  • فئة للطلبات (Orders) لتخزين تفاصيل الطلبات من العملاء.
  • فئة للفواتير (Invoices) لإصدار الفواتير وتتبع الدفعات.

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هذا ما يجب عليك فهمه وتطبيقه بشكل تام لتكون متمكنًا من البرمجة الكائنية:

  1. المفاهيم الأساسية للكائنات: يجب أن تفهم مفهوم الكائنات والتمثيل الكائني للعناصر المختلفة في التطبيقات. الكائنات هي وحدات برمجية تحتوي على الخصائص (البيانات) والسلوك (الوظائف) وتتفاعل مع بعضها البعض.
  2. الاستنساخ  (Inheritance): يتعلق هذا بتمديد الكلاسات والإفادة من ميزاتها القائمة بالفعل. يمكنك إنشاء كلاس يرث خصائص ووظائف كلاس آخر وتعديلها أو إضافة ميزات جديدة عليها.
  3. التركيب والتفكيك (Composition and Aggregation): هذه المفاهيم تهم تكوين الكلاسات من خلال استخدام كلاسات أخرى. تُستخدم هذه الطريقة لبناء علاقات واضحة بين الكلاسات.
  4. (Encapsulation): يعني تجميع البيانات والسلوك المرتبط بها في كلاس واحد، والوصول إليها من خلال واجهات معينة. هذا يساعد على حماية البيانات وجعل التعديلات أكثر تنظيمًا.
  5. (Polymorphism): هو قدرة الكائنات على التصرف بطرق مختلفة استنادًا إلى السياق أو نوع البيانات المستخدم. يُمكن للكائنات التصرف بطرق مختلفة بناءً على الكلاس الذي ينتمون إليه.
  6. (Interfaces): واجهات هي عقود تحدد السلوك الذي يجب توفيره لأي كائن ينفذ تلك الواجهة. تُستخدم لتحقيق التجميع وتحقيق تبادل أفضل بين الكلاسات.

بالنسبة لـ SOLID Principles وDesign Patterns، فهي مفاهيم متقدمة للغاية تُساعد على تصميم البرمجيات بشكل قابل للصيانة والتوسع. لكن قبل أن تتجه نحو هذه المفاهيم، يجب أن تتأكد من أنك فهمت البرمجة الكائنية بشكل جيد.

إذا كنت تعتبر أنك تفهمت البرمجة الكائنية بشكل جيد واتقنت المفاهيم المذكوره سابقا، فإليك نظرة عامة عن مفاهيم SOLID Principles وDesign Patterns:

  • SOLID Principles مجموعة من المبادئ البرمجية الخمسة التي تساعد على تصميم البرمجيات بطريقة قابلة للصيانة والتوسع. تتألف من:
  1. Single Responsibility Principle (مبدأ المسؤولية الواحدة)
  2.  
  3. Open/Closed Principle (مبدأ الفتح والإغلاق)
  4. Liskov Substitution Principle (مبدأ استبدال ليسكوف)
  5. Interface Segregation Principle (مبدأ فصل الواجهات)
  6. Dependency Inversion Principle (مبدأ عكس الاعتماد)

يمكنك التوسع في فهم تلك المبادئ من خلال هذا الرابط

  • Design Patterns:هي نهج قياسي لحل المشاكل المعتادة في التصميم البرمجي. توفر أفكارًا جاهزة ومجربة للتعامل مع تحديات معينة. بعض الأمثلة على النماذج التصميمية هي Factory، Singleton، Observer، وغيرها.

يمكنك التوسع من خلال هذا الرابط

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...