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

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته. 

إن ال OOP (البرمجة كائنية التوجه):

هو أسلوب برمجي (Programming Paradigm) لتنظيم الكود باستخدام الكائنات (Objects) والأصناف (Classes) وتعتمد على مفاهيم مثل:

  • Class (الفئة)
  • Object (الكائن)
  • Encapsulation (الكبسلة)
  • Inheritance (الوراثة)
  • Polymorphism (تعدد الأشكال)
  • Abstraction (التجريد)

والهدف منه هو تنظيم الكود وتسهيل استخدامه ومنع التكرار من خلال إنشاء  وحدات قابلة لإعادة الاستخدام. مما يسهل علينا صيانة الكود وتطويره وإختباره.

أما ال Software Design (تصميم البرمجيات):

هو عملية أوسع وأشمل من OOP حيث تشمل التخطيط الكامل لكيفية بناء النظام ككل، ويغطي قرارات مثل:

  • كيف تتفاعل الأجزاء المختلفة مع بعضها البعض في الكود.
  • ما هي البنية العامة للنظام (Architecture).
  • اى Design Patterns (أنماط التصميم) سيتم إستخدامها.
  • اختيار أسلوب التصميم المناسب مثل MVC او MVVM وغيرها من الأساليب الأخرى.

والهدف منه بناء نظام قابل للتوسع والتطوير وسهل الصيانة ومرن ويعمل بكفاءة.

والعلاقة بينهما هو أن ال OOP أداة من ضمن أدوات ال Software Design. حيث يمكنك استخدام ال OOP داخل تصميم أوسع للنظام.

فالتصميم الجيد لا يعتمد فقط على ال OOP بل يشمل بنية المشروع واختيار الأنماط المناسبة.

  • 0
نشر

الفرق بين OOP (البرمجة كائنية التوجه - Object-Oriented Programming) وSoftware Design (تصميم البرمجيات) يمكن توضيحه كالتالي:

OOP (البرمجة كائنية التوجه)

هي أسلوب أو نمط برمجي (Programming Paradigm) يعتمد على مفهوم "الكائنات" (Objects) التي تجمع البيانات (Data) والسلوكيات (Behavior) معًا.

تركز على كيفية كتابة الكود باستخدام الكائنات والكلاسات (Classes)، مع الاعتماد على مفاهيم مثل:

  • التغليف (Encapsulation): إخفاء التفاصيل الداخلية للكائن.
  • الوراثة (Inheritance): إعادة استخدام الكود من خلال الكلاسات.
  • التعددية (Polymorphism): التعامل مع الكائنات المختلفة بطريقة موحدة.
  • التجريد (Abstraction): إخفاء التفاصيل المعقدة وعرض الوظائف الأساسية فقط.

جزء من مرحلة التطوير (Implementation) في عملية بناء البرمجيات. بمعنى آخر، هي طريقة تنفيذ الكود.

Software Design (تصميم البرمجيات)

هي العملية التي تسبق كتابة الكود، حيث يتم تخطيط وتصميم الهيكلية العامة للنظام البرمجي. تشمل تحديد المكونات، العلاقات بينها، وكيفية تفاعلها.

تركز على الصورة الكبيرة للنظام، مثل:

  • تصميم الهيكلية (Architecture): مثل Microservices أو Monolith.
  • أنماط التصميم (Design Patterns): مثل Singleton أو Factory.
  • تقسيم النظام إلى وحدات (Modules) وتحديد واجهاتها (Interfaces).
  • التأكد من قابلية التوسع (Scalability) والصيانة (Maintainability).
  • 0
نشر

الفرق بين OOP وSoftware Design :

OOP:
هي أسلوب أو طريقة لكتابة الكود، تعتمد على فكرة الكائنات (objects) مثل "طالب"، "سيارة"، "منتج"، وتستخدم مفاهيم مثل الفئات (class)، الوراثة (inheritance). هدفها تنظيم الكود بشكل أوضح وأسهل للتعديل.

Software Design:

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

OOP طريقة لكتابة الكود، وSoftware Design هو التخطيط العام لشكل البرنامج وتنظيمه.

  • 0
نشر

وعليكم السلام ورحمة الله،

البرمجة كائنية التوجه (OOP - Object Oriented Programming) وتصميم البرمجيات (Software Design) مفهومان مختلفان ولكنهما مترابطان في علم هندسة البرمجيات.

فالبرمجة كائنية التوجه هي نمط برمجي يعتمد على مفهوم "الكائنات" حيث ينظر إلى البرنامج على أنه مجموعة من الكائنات التي تتفاعل فيما بينها من خلال خصائص (Attributes) وسلوكيات (Methods).

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

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

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

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

OOP يمكن أن يستخدم كأداة ضمن عملية تصميم البرمجيات إذا كان التصميم يتطلب بناء النظام حول كائنات ولكن التصميم يتعامل مع مسائل أكبر، مثل مبدأ الفصل بين المهام (Separation of Concerns)، وتعريف الواجهات، وإدارة التعقيد، وضمان القابلية للاختبار، والأداء، والأمان.

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

  • 0
نشر

الشروحات النظرية في باديء الأمر مفيدة، لكن يُعيبها عدم الربط مع الواقع العملي بتوفير أمثلة، فأنت لا تدري ما فائدة ذلك في المشاريع العملية في الواقع العملي، وما الذي ساستفيده منها؟

بالتطبيق على بناء نظام متجر إلكتروني، فأولاً تبدًا مرحلة تصميم البرمجيات Software Design بالتفكير على مستوى عالي أي بالنظر للمشروع ككل بنظرة عامة، حيث يجتمع مدير المشروع ومدير فريق المبرمجين Software Architect  للبدء في تخطيط ما يلي:

تحديد المكونات الرئيسية وليكن مثلاً:

  • نحتاج نظاماً لإدارة المستخدمين.
  • نحتاج كتالوج للمنتجات.
  • نحتاج عربة تسوق.
  • نحتاج نظاماً لمعالجة الطلبات والدفع.

تحديد الهيكلية:

  • سنستخدم بنية MVC (Model-View-Controller)
    • Model سيمثل البيانات (المنتجات، المستخدمون).
    • View  سيمثل واجهة المستخدم التي يراها العميل.
    • Controller سيستقبل طلبات المستخدم ويوجهها.

وذلك قرار تصميمي عالي المستوى يحدد كيفية تنظيم المشروع بالكامل.

ثم تحديد كيفية تفاعل المكونات كالتالي:

  • عندما يضيف المستخدم منتجاً إلى عربة التسوق، يجب أن تتواصل عربة التسوق مع كتالوج المنتجات)للتأكد من أن المنتج متوفر وسعره صحيح.
  • عند الدفع، يجب أن يتواصل نظام الطلبات مع نظام إدارة المستخدمين للتأكد من أن المستخدم مسجل.

وتلك العلاقات تُرسم في مخططات مثل UML Diagrams لتكون واضحة للفريق.

بالتالي نتيجة تلك المرحلة هو مستند تصميم تقني ومخططات توضح بنية النظام والعلاقات بين مكوناته، أي حتى الآن، لم نكتب سطر واحد من كود OOP الفعلي.

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

وفي النهاية يتم بناء مكون كتالوج المنتجات باستخدام كود نظيف ومنظم بفضل OOP، وهو يلتزم بالمخطط الذي تم تطويره عن طريق تصميم البرمجيات.

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...