0% found this document useful (0 votes)
6 views5 pages

Oop

تتناول الوثيقة مبادئ البرمجة الكائنية التوجه (OOP) مثل التغليف، التجريد، الوراثة، وتعدد الأشكال، بالإضافة إلى مفاهيم رئيسية مثل الكلاس والكائن. كما تبرز أنماط التصميم الشائعة مثل Singleton وFactory، ومبادئ SOLID التي تعزز تصميم البرمجيات الجيد. تشمل الوثيقة أيضًا أسئلة شائعة في المقابلات المتعلقة بـ OOP.

Uploaded by

abdabbabababab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views5 pages

Oop

تتناول الوثيقة مبادئ البرمجة الكائنية التوجه (OOP) مثل التغليف، التجريد، الوراثة، وتعدد الأشكال، بالإضافة إلى مفاهيم رئيسية مثل الكلاس والكائن. كما تبرز أنماط التصميم الشائعة مثل Singleton وFactory، ومبادئ SOLID التي تعزز تصميم البرمجيات الجيد. تشمل الوثيقة أيضًا أسئلة شائعة في المقابلات المتعلقة بـ OOP.

Uploaded by

abdabbabababab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

# Object-Oriented Programming (OOP) - Quick Summary

## Core Principles
1. *Encapsulation*
- Bundling data (attributes) and methods that operate on that data into a single
unit (class)
- Controlling access via public/private/protected modifiers
- Example: Getters/setters to control attribute access

2. *Abstraction*
- Hiding complex implementation details
- Showing only essential features
- Example: Abstract classes/interfaces define what an object does without how

3. *Inheritance*
- Creating new classes from existing ones
- Promotes code reuse and hierarchical relationships
- Example: Child class inherits from parent class

4. *Polymorphism*
- "Many forms" - ability to present the same interface for different underlying
forms
- Method overriding (runtime polymorphism)
- Method overloading (compile-time polymorphism)

## Key Concepts
- *Class*: Blueprint for creating objects
- *Object*: Instance of a class
- *Constructor*: Special method for object initialization
- *Interface*: Contract of methods a class must implement
- *Abstract Class*: Cannot be instantiated, may contain implemented methods
- *Composition*: Building complex objects from simpler ones ("has-a" relationship)

## Common Design Patterns


1. Singleton - Single instance of a class
2. Factory - Creates objects without exposing instantiation logic
3. Observer - One-to-many dependency between objects
4. Decorator - Adds responsibilities to objects dynamically

## SOLID Principles
1. *S*ingle Responsibility - One class, one purpose
2. *O*pen/Closed - Open for extension, closed for modification
3. *L*iskov Substitution - Subclasses should be substitutable for parent classes
4. *I*nterface Segregation - Many client-specific interfaces
5. *D*ependency Inversion - Depend on abstractions, not concretions

## Common Interview Questions


- Explain the 4 pillars of OOP
- Difference between abstract class and interface
- When to use composition vs inheritance
- What is method overriding vs overloading
- Explain polymorphism with an example

# ‫( البرمجة الكائنية التوجه‬OOP) - ‫ملخص سريع‬

## ‫المبادئ الأساسية‬
‫*)‪ (Encapsulation‬التغليف* ‪1.‬‬
‫تجميع البيانات (الخصائص) والوظائف التي تعمل عليها في وحدة واحدة (كالس) ‪-‬‬
‫‪ public / private / protected‬التحكم في الوصول عبر ُمعِّدالت ‪-‬‬
‫للتحكم في الوصول إلى الخصائص ‪ setters‬و ‪ getters‬مثال‪ :‬استخدام ‪-‬‬

‫*)‪ (Abstraction‬التجريد* ‪2.‬‬


‫إخفاء تفاصيل التنفيذ المعقدة ‪-‬‬
‫عرض الميزات الأساسية فقط ‪-‬‬
‫)‪ (interfaces‬والواجهات )‪ (abstract‬مثال‪ :‬الكالسات المجردة ‪-‬‬ ‫تحدد ما يفعله الكائن‬
‫دون الكيفية‬

‫*)‪ (Inheritance‬الوراثة* ‪3.‬‬


‫إنشاء كالسات جديدة من كالسات موجودة ‪-‬‬
‫تعيد استخدام الكود وتعكس العالقات الهرمية ‪-‬‬
‫)‪ (parent‬يرث من كالس أب )‪ (child‬مثال‪ :‬كالس ابن ‪-‬‬

‫*)‪ (Polymorphism‬تعدد الأشكال* ‪4.‬‬


‫أشكال متعددة" ‪ -‬القدرة على تقديم واجهة واحدة لعدة أشكال مختلفة" ‪-‬‬
‫)تعدد الأشكال في وقت التشغيل ‪ (method overriding -‬تجاوز الدوال ‪-‬‬
‫)تعدد الأشكال في وقت الترجمة ‪ (method overloading -‬تكرار الدوال ‪-‬‬

‫مفاهيم رئيسية ‪##‬‬


‫مخطط لإنشاء الكائنات ‪ (Class)*:‬الكالس* ‪-‬‬
‫نسخة من الكالس ‪ (Object)*:‬الكائن* ‪-‬‬
‫دالة خاصة لتهيئة الكائن ‪ (Constructor)*:‬المنشئ* ‪-‬‬
‫عقد للدوال التي يجب على الكالس تنفيذها ‪ (Interface)*:‬الواجهة* ‪-‬‬
‫ال يمكن إنشاء نسخة منه وقد يحتوي على دوال ُمنَّفذة ‪ (Abstract Class)*:‬الكالس المجرد* ‪-‬‬
‫بناء كائنات معقدة من كائنات أبسط (عالقة "يمتلك") ‪ (Composition)*:‬التكوين* ‪-‬‬

‫‪##‬‬ ‫أنماط التصميم الشائعة‬


‫‪1.‬‬ ‫نسخة واحدة فقط من الكالس ‪*Singleton*:‬‬
‫‪2.‬‬ ‫ينشئ كائنات دون كشف آلية الإنشاء ‪*Factory*:‬‬
‫‪3.‬‬ ‫عالقة تبعية من واحد إلى كثير بين الكائنات ‪*Observer*:‬‬
‫‪4.‬‬ ‫ُيضيف مسؤوليات للكائنات ديناميكًيا ‪*Decorator*:‬‬

‫‪ SOLID‬مبادئ ‪##‬‬
‫كل كالس له غرض واحد ‪ (Single Responsibility)*:‬مبدأ المسؤولية الواحدة* ‪1.‬‬
‫مفتوح للتوسيع‪ ،‬مغلق للتعديل ‪ (Open/Closed)*:‬مبدأ المغلق‪/‬المفتوح* ‪2.‬‬
‫الكالسات االبن يجب أن تحل محل ‪ (Liskov Substitution)*:‬مبدأ لسكوف لالستبدال* ‪3.‬‬
‫الكالسات الأب‬
‫واجهات متعددة لكل عميل ‪ (Interface Segregation)*:‬مبدأ فصل الواجهات* ‪4.‬‬
‫االعتماد على التجريد وليس ‪ (Dependency Inversion)*:‬مبدأ انعكاس االعتمادية* ‪5.‬‬
‫التفاصيل‬

‫أسئلة شائعة في المقابالت ‪##‬‬


‫‪ OOP‬اشرح المبادئ الأربعة للـ ‪-‬‬
‫الفرق بين الكالس المجرد والواجهة ‪-‬‬
‫متى تستخدم التكوين بدل الوراثة؟ ‪-‬‬
‫؟)‪ (overloading‬وتكرارها )‪ (overriding‬ما الفرق بين تجاوز الدوال ‪-‬‬

‫)‪ (OOP‬أسئلة وأجوبة مقابلة البرمجة الكائنية ‪#‬‬

‫الأربعة الأساسية؟ ‪ OOP‬ما هي مبادئ ‪## 1.‬‬


‫*‪:‬الجواب*‬
‫‪:‬المبادئ الأربعة هي‬
‫إخفاء البيانات الداخلية للكائن وتوفير واجهة للتعامل ‪ (Encapsulation)*:‬التغليف* ‪1.‬‬
‫معها‬
‫إمكانية إنشاء كالسات جديدة بناء على كالسات موجودة ‪ (Inheritance)*:‬الوراثة* ‪2.‬‬
‫قدرة الكائن على اتخاذ أشكال متعددة ‪ (Polymorphism)*:‬تعدد الأشكال* ‪3.‬‬
‫إظهار الخصائص الأساسية وإخفاء التفاصيل غير الضرورية ‪ (Abstraction)*:‬التجريد* ‪4.‬‬

‫ما الفرق بين الكالس والكائن؟ ‪## 2.‬‬


‫*‪:‬الجواب*‬
‫الكالس*‪ :‬هو نموذج أو مخطط يحدد الخصائص والسلوكيات (مثل مخطط المنزل)* ‪-‬‬
‫الكائن*‪ :‬هو نسخة ملموسة من الكالس (مثل منزل حقيقي مبني حسب المخطط)* ‪-‬‬

‫؟‪ interface‬و ‪ abstract class‬ما الفرق بين ‪## 3.‬‬


‫*‪:‬الجواب*‬
‫‪| Abstract Class‬‬ ‫‪| Interface‬‬ ‫|‬
‫|‪|-------------------------------|-----------------------------‬‬
‫| يمكن أن تحتوي على دوال مجردة ومكتملة | تحتوي فقط على دوال مجردة |‬
‫| )‪ (final variables‬يمكن أن تحتوي على متغيرات عادية | تحتوي فقط على ثوابت |‬
‫| افتراضيا ‪ public‬تدعم معدالت الوصول المختلفة | جميع الدوال |‬
‫| ‪ constructor‬ال تحتوي على | ‪ constructor‬يمكن أن تحتوي على |‬

‫؟‪ method overriding‬و ‪ method overloading‬ما الفرق بين ‪## 4.‬‬


‫*‪:‬الجواب*‬
‫وجود عدة دوال بنفس االسم ولكن بمعطيات مختلفة في نفس الكالس (يحدث في ‪- *Overloading*:‬‬
‫وقت الترجمة)‬
‫إعادة تعريف دالة موجودة في الكالس الأب في الكالس االبن (يحدث في وقت ‪- *Overriding*:‬‬
‫التشغيل)‬

‫؟)‪ (Composition‬متى نستخدم الوراثة ومتى نستخدم التكوين ‪## 5.‬‬


‫*‪:‬الجواب*‬
‫)مثل‪ :‬السيارة هي مركبة( "‪ "is-a‬نستخدم *الوراثة* عندما تكون العالقة ‪-‬‬
‫)مثل‪ :‬السيارة لديها محرك( "‪ "has-a‬نستخدم *التكوين* عندما تكون العالقة ‪-‬‬

‫؟‪ SOLID‬ما هي مبادئ ‪## 6.‬‬


‫*‪:‬الجواب*‬
‫كل كالس يجب أن يكون له مسؤولية واحدة ‪1. *Single Responsibility*:‬‬
‫مفتوح للتوسيع مغلق للتعديل ‪2. *Open/Closed*:‬‬
‫الكالسات الفرعية يجب أن تحل محل الكالسات الأصلية ‪3. *Liskov Substitution*:‬‬
‫واجهات صغيرة ومتخصصة أفضل من واجهة واحدة كبيرة ‪4. *Interface Segregation*:‬‬
‫االعتماد على التجريد وليس التطبيقات ‪5. *Dependency Inversion*:‬‬

‫؟‪ Singleton pattern‬ما هو الـ ‪## 7.‬‬


‫*‪:‬الجواب*‬
‫هو نمط تصميم يضمن وجود نسخة واحدة فقط من الكالس في الذاكرة‪ ،‬ويوفر نقطة وصول عالمية‬
‫‪.‬لها‪ُ .‬يستخدم عادًة للإعدادات العامة أو االتصاالت مع قواعد البيانات‬

‫‪:‬مثال في جافا‬
‫‪java‬‬
‫{ ‪public class Singleton‬‬
‫;‪private static Singleton instance‬‬

‫}{ )(‪private Singleton‬‬

‫{ )(‪public static Singleton getInstance‬‬


‫{ )‪if (instance == null‬‬
‫;)(‪instance = new Singleton‬‬
‫}‬
‫;‪return instance‬‬
‫}‬
‫}‬

‫؟‪ protected‬و ‪ private‬و ‪ public‬ما هو الفرق بين ‪## 8.‬‬


‫*‪:‬الجواب*‬
‫يمكن الوصول من أي مكان ‪- *public*:‬‬
‫يمكن الوصول فقط من داخل نفس الكالس ‪- *private*:‬‬
‫يمكن الوصول من نفس الكالس والكالسات الفرعية وفي نفس الباكيج ‪- *protected*:‬‬

‫ولماذا نستخدمها؟ ‪ Setters‬والـ ‪ Getters‬ما هي الـ ‪## 9.‬‬


‫*‪:‬الجواب*‬
‫‪:‬نستخدمها ل ‪ (setters).‬وتعديلها )‪ (getters‬هي دوال تستخدم للوصول إلى خصائص الكائن‬
‫التحكم في الوصول إلى البيانات ‪-‬‬
‫إضافة شروط عند تعديل البيانات ‪-‬‬
‫تنفيذ عمليات إضافية عند قراءة أو كتابة البيانات ‪-‬‬

‫؟ أعط مثاًال‪ Polymorphism‬ما هو الـ ‪## 10.‬‬


‫*‪:‬الجواب*‬
‫‪:‬تعدد الأشكال يعني قدرة الكائن على اتخاذ أشكال متعددة‪ .‬مثال في جافا‬

‫‪java‬‬
‫{ ‪class Animal‬‬
‫{ )(‪void sound‬‬
‫;)"‪System.out.println("Animal sound‬‬
‫}‬
‫}‬

‫{ ‪class Dog extends Animal‬‬


‫‪@Override‬‬
‫{ )(‪void sound‬‬
‫;)"‪System.out.println("Bark‬‬
‫}‬
‫}‬

‫{ ‪class Cat extends Animal‬‬


‫‪@Override‬‬
‫{ )(‪void sound‬‬
‫;)"‪System.out.println("Meow‬‬
‫}‬
‫}‬

‫{ ‪public class Main‬‬


‫{ )‪public static void main(String[] args‬‬
‫;)(‪Animal myAnimal = new Animal‬‬
‫;)(‪Animal myDog = new Dog‬‬
‫;)(‪Animal myCat = new Cat‬‬

‫‪myAnimal.sound(); // Animal sound‬‬


‫;)(‪myDog.sound‬‬ ‫‪// Bark‬‬
‫;)(‪myCat.sound‬‬ ‫‪// Meow‬‬
‫}‬
‫}‬

‫؟‪ Constructor‬ما هو الـ ‪## 11.‬‬


‫*‪:‬الجواب*‬
‫هو دالة خاصة ُتستدعى تلقائيًا عند إنشاء كائن من الكالس‪ .‬يستخدم لتهيئة الخصائص‬
‫‪ (constructor‬بمعطيات مختلفة ‪ constructors‬الأساسية للكائن‪ .‬يمكن أن يكون هناك عدة‬
‫‪overloading).‬‬
‫وقواعد البيانات؟ ‪ OOP‬ما هي العالقة بين ‪## 12.‬‬
‫*‪:‬الجواب*‬
‫‪:‬في ‪ OOP‬يتم استخدام‬
‫‪ Hibernate‬مثل )‪- Object-Relational Mapping (ORM‬‬
‫)‪ DAO (Data Access Object‬نمط تصميم ‪-‬‬
‫‪ Active Record‬نمط ‪-‬‬
‫حيث يتم تمثيل جداول القاعدة البيانات ككالسات والسجالت ككائنات‬

‫؟‪ Cohesion‬و ‪ Coupling‬ما هو الـ ‪## 13.‬‬


‫*‪:‬الجواب*‬
‫درجة اعتماد المكونات على بعضها (من الأفضل أن يكون منخفضًا) ‪- *Coupling*:‬‬
‫درجة ترابط مكونات الوحدة الواحدة (من الأفضل أن يكون مرتفعًا) ‪- *Cohesion*:‬‬

‫؟‪ Dependency Injection‬ما هو الـ ‪## 14.‬‬


‫*‪:‬الجواب*‬
‫هو نمط تصميم حيث يتم تمرير التبعيات للكائن من الخارج بدًال من إنشائها داخليًا‪ .‬هذا‬
‫‪.‬يجعل الكود أكثر مرونة وقابلية لالختبار‬

‫‪:‬مثال‬
‫‪java‬‬
‫{ ‪class Car‬‬
‫;‪private Engine engine‬‬

‫‪// Constructor Injection‬‬


‫{ )‪public Car(Engine engine‬‬
‫;‪this.engine = engine‬‬
‫}‬

‫{ )(‪void start‬‬
‫;)(‪engine.start‬‬
‫}‬
‫}‬

‫؟‪ OOP‬كيف تتعامل مع الأخطاء في ‪## 15.‬‬


‫*‪:‬الجواب*‬
‫‪:‬يمكن استخدام‬
‫)‪ Exception Handling (try-catch-finally‬الـ ‪1.‬‬
‫‪ Null Object Pattern‬مثل ‪2. Design Patterns‬‬
‫)في جافا( ‪ Optional‬إعادة قيم خاصة أو استخدام ‪3.‬‬

You might also like