مدخل إلى البرمجة الشيئية أو الكائنية التوجّه Object Oriented Programming
صفحة 1 من اصل 1
مدخل إلى البرمجة الشيئية أو الكائنية التوجّه Object Oriented Programming
بسم الله
الرحمن الرحيم
خلال الأسطر القليلة التالية،
سنلقي الضوء على مفهوم البرمجة الكائنية أو الشيئة Object
Oriented Programming وهي ما يطلق عليه اختصاراً OOP،
ماهيتها ومميزاتها.
فكّر بالكائنات
Think about Objects:
ستتعرف
في هذا الجزء على أهم المصطلحات
المستخدمة في الـOOP كما ستفهم فكرة الـOOP
إن شاء الله!
لو نظرنا حولنا في عالمنا الحقيقي لوجدنا جميع ما يحيط بنا عبارة عن
"كائنات
Objects": الناس، الحيوانات، النباتات،
السيارات،
الطائرات، البنايات، وحتى الكمبيوترات وغيرها. هذا هو معنى كلمة "كائن
Object"، ومن الممكن أن نطلق نفس المصطلح
على أي
ممثل لأي فئة، فنطلقه على الفراولة لأنها تمثل أحد الفواكة، أو نطلقه
مثلاً على
الطاووس لأنه يمثل أحد الطيور... وهكذا.
ويمكننا تصنيف الكائنات إلى صنفين:
وجميع
الكائنات بصنفيها لها:
الإنسان
وخصوصاً المبرمج يتعلم عن الكائنات
بمعرفة خصائصها، وملاحظة (تجربة) سلوكها، فمن الممكن أن يكون لكائنات
مختلفة
نفس الخصائص وسلوك متقارب.
البرمجة
الشيئية Object
Oriented Programming تقوم بنمذجة Modeling
كائنات العالم الحقيقي في برنامج نظير
software counterpart.
هذا البرنامج يحمل إيجابيات العلاقات بين الفئات classes
relationships حيث أن أي كائن من أي فئة يحمل جيمع مميزات وصفات
characteristics هذه الفئة أو بالأحرى يرثها
لأنه
ممثل لفئته. كما أن الفئات الجديدة -تسمى فئة فرعية
subclass- ترث صفات الفئات التي أُنتجت وتكونت منها -تسمى
الفئة
الأم superclass- كما يرث الطفل
جينات أبويه.
وهذه الفئة الجديدة والتي تعتبر subclass،
من
الممكن أن تكون superclass لفئات
جديدة أخرى
ينشئها المبرمج.
الـOOP كذلك تقوم
باحتواء البيانات (Data (attributes والطرق (Methods
(behavior في حزمة package هي ما
نطلق عليه
"كائنات Objects"؛ حيث أن بيانات وطرق أي
كائن ترتبط
ببعضها ارتباط وثيق. هذا الكائن يتميّز بخاصية التخفي
Information Hiding نعني بالتخفي هنا أنه بإمكان الكائنات
الاتصال
والتعامل مع بعضها البعض مع عدم معرفة أحدها كيف تكوّن الآخر! أي أن
تفاصيل
التكوين هي المخفيّة حتى عن الكائنات نفسها؛ فمن المؤكد أننا نعرف كيف
نقود
السيارة بكفاءة عالية دون معرفة تفاصيل هندستها. تسمى هذه الخاصية في
البرمجة
بـAbstraction
أي تجريد البيانات.
برامج
الجافا جميعها قائمة على برمجة المبرمج
لمجموعة فئات خاصة به تسمى user-defined classes
باستخدام الفئات والمميزات التي توفرها اللغة ومن ثم استخدام هذه
الفئات جميعها
أو بعضها في برامجه
حيث أن كل فئة تحتوي على بيانات data
ومجموعة دوال
functions تقوم بتشكيل هذه البيانات، تسمى
البيانات
في فئات الجافا بـ: instance variable
أو
data member. ويطلق على الدوال اسم
الطرق
methods.
فأي طلب لأي فئة معرّفة في اللغة كأنواع البيانات مثل
int يسمى"متغير variable"،
بينما
طلب أي فئة من الفئات التي عرّفها المبرمج user-defined
يسمى "كائن object".
البرمجة الشيئية أو
الكائنية Object Oriented Programming:
عند
حديثنا عن البرمجة الشيئية، نجمل الحديث
في كلمتين: الوراثة وتعدد الأشكال Inheritance
& Polymorphism، وهما من
التقنيات الفعّالة
للتعامل مع البرمجيات المعقدّة:
وكما
ذكرنا في الأعلى أن الفئات الجديدة -تسمى
فئة فرعية subclass- ترث صفات الفئات
التي
أُنتجت وتكونت منها -تسمى الفئة الأم superclass-
كما يرث الطفل جينات أبويه. وهذه الفئة الجديدة والتي تعتبر
subclass، من الممكن أن تكون
superclass لفئات جديدة أخرى ينشئها
المبرمج.
وهكذا تمتد لدينا سلسلة من الوراثة بين الفئات extends، يحكمها قانون
"الوراثة المفردة Single
Inheritance" حيث ينص هذا القانون
على:
تنشأ أي فئة فرعية من فئة أم واحدة، فالجافا لا تدعم التوارث المتعدد
multiple inheritance
كالسي++ ولكنها تدعم مفهوم الواجهات
Interfaces، فنظام الواجهات يساعد الجافا على تحقيق
فائدة
التوارث المتعدد مع عدم وجود الأخطاء المترابطة الناتجة عن هذا التوارث
المتعدد!
تذكر
أن أي كائن ينتمي إلى فئة فرعية فهو
ينتمي إلى الفئة الأم لهذه الفئة الفرعية ويحمل خصائصهما وسلوكهما.
وبعد
هذه المقدمة وهذا التوصيف لعالم الـOOP
نلاحظ أن جُلّ التركيز في هذا النوع من البرمجة يقع على الـفئات
Classes، فالمبرمج يستخدم الفئات المبنية
مسبقاً في
اللغة مع الفئات التي يبنيها هو كي ينتج برنامجاً بالجافا، ربما يفسر
هذا الاسم
OOP
بهذا
يكون درسنا قد انتهى، أرجو أن يكون
واضحاً.. والسلام عليكم..
الرحمن الرحيم
خلال الأسطر القليلة التالية،
سنلقي الضوء على مفهوم البرمجة الكائنية أو الشيئة Object
Oriented Programming وهي ما يطلق عليه اختصاراً OOP،
ماهيتها ومميزاتها.
فكّر بالكائنات
Think about Objects:
ستتعرف
في هذا الجزء على أهم المصطلحات
المستخدمة في الـOOP كما ستفهم فكرة الـOOP
إن شاء الله!
لو نظرنا حولنا في عالمنا الحقيقي لوجدنا جميع ما يحيط بنا عبارة عن
"كائنات
Objects": الناس، الحيوانات، النباتات،
السيارات،
الطائرات، البنايات، وحتى الكمبيوترات وغيرها. هذا هو معنى كلمة "كائن
Object"، ومن الممكن أن نطلق نفس المصطلح
على أي
ممثل لأي فئة، فنطلقه على الفراولة لأنها تمثل أحد الفواكة، أو نطلقه
مثلاً على
الطاووس لأنه يمثل أحد الطيور... وهكذا.
ويمكننا تصنيف الكائنات إلى صنفين:
- كائنات نشطة
(حية)
Animate Objects: وهي التي نحس فيها فنجد لها حركة ونشاط.
- كائنات غير نشطة (غير حية)
Inanimate Objects: هي التي لا نلاحظ
لها نشاط
أو حركة أو وقع أينما وجدت.
وجميع
الكائنات بصنفيها لها:
- خصائص Attribute
مثل: الحجم، اللون، الوزن، الشكل...ألخ.
- سلوك Behavior
فمثلاً: الطفل (كائن) يبكي، وينام، ويمشي، ويأكل (سلوكيات).
الإنسان
وخصوصاً المبرمج يتعلم عن الكائنات
بمعرفة خصائصها، وملاحظة (تجربة) سلوكها، فمن الممكن أن يكون لكائنات
مختلفة
نفس الخصائص وسلوك متقارب.
البرمجة
الشيئية Object
Oriented Programming تقوم بنمذجة Modeling
كائنات العالم الحقيقي في برنامج نظير
software counterpart.
هذا البرنامج يحمل إيجابيات العلاقات بين الفئات classes
relationships حيث أن أي كائن من أي فئة يحمل جيمع مميزات وصفات
characteristics هذه الفئة أو بالأحرى يرثها
لأنه
ممثل لفئته. كما أن الفئات الجديدة -تسمى فئة فرعية
subclass- ترث صفات الفئات التي أُنتجت وتكونت منها -تسمى
الفئة
الأم superclass- كما يرث الطفل
جينات أبويه.
وهذه الفئة الجديدة والتي تعتبر subclass،
من
الممكن أن تكون superclass لفئات
جديدة أخرى
ينشئها المبرمج.
الـOOP كذلك تقوم
باحتواء البيانات (Data (attributes والطرق (Methods
(behavior في حزمة package هي ما
نطلق عليه
"كائنات Objects"؛ حيث أن بيانات وطرق أي
كائن ترتبط
ببعضها ارتباط وثيق. هذا الكائن يتميّز بخاصية التخفي
Information Hiding نعني بالتخفي هنا أنه بإمكان الكائنات
الاتصال
والتعامل مع بعضها البعض مع عدم معرفة أحدها كيف تكوّن الآخر! أي أن
تفاصيل
التكوين هي المخفيّة حتى عن الكائنات نفسها؛ فمن المؤكد أننا نعرف كيف
نقود
السيارة بكفاءة عالية دون معرفة تفاصيل هندستها. تسمى هذه الخاصية في
البرمجة
بـAbstraction
أي تجريد البيانات.
برامج
الجافا جميعها قائمة على برمجة المبرمج
لمجموعة فئات خاصة به تسمى user-defined classes
باستخدام الفئات والمميزات التي توفرها اللغة ومن ثم استخدام هذه
الفئات جميعها
أو بعضها في برامجه
حيث أن كل فئة تحتوي على بيانات data
ومجموعة دوال
functions تقوم بتشكيل هذه البيانات، تسمى
البيانات
في فئات الجافا بـ: instance variable
أو
data member. ويطلق على الدوال اسم
الطرق
methods.
فأي طلب لأي فئة معرّفة في اللغة كأنواع البيانات مثل
int يسمى"متغير variable"،
بينما
طلب أي فئة من الفئات التي عرّفها المبرمج user-defined
يسمى "كائن object".
البرمجة الشيئية أو
الكائنية Object Oriented Programming:
عند
حديثنا عن البرمجة الشيئية، نجمل الحديث
في كلمتين: الوراثة وتعدد الأشكال Inheritance
& Polymorphism، وهما من
التقنيات الفعّالة
للتعامل مع البرمجيات المعقدّة:
- فالوراثة
inheritance هي شكل للبرامج software
المعدّة للاستعمال مع الفئات classes
الحديثة
والتي أنشئت من فئات موجودة مسبقاً وأخذت عنها خصائصها وسلوكها
وأضافت إليها
القدرات التي نحتاج إليها في هذه الفئة الجديدة. الوراثة ماذا تعني
عملياً؟!
تعني بالضبط ما الذي تم وراثته و كيف يمكن التعديل عليه وما الذي لا
يمكن
وراثته -يتضح ذلك بالأمثلة-. هذه الخاصية توفر الكثير من الوقت
للمبرمج وتقطع
عنه أشواطاً في تطوير برنامجه.
- وتعدد
الأشكال
polymorphism يسمح لنا بكتابة برنامجنا في صورة قابلة لتغيير
واسع
النطاق؛ سواء كان التغيير لفئات موجودة مسبقاً أو تغيير مستقبلي
لإنتاج برامج
جديدة. هذه الخاصية تسهل علينا توسيع قدرات نظامنا.
وكما
ذكرنا في الأعلى أن الفئات الجديدة -تسمى
فئة فرعية subclass- ترث صفات الفئات
التي
أُنتجت وتكونت منها -تسمى الفئة الأم superclass-
كما يرث الطفل جينات أبويه. وهذه الفئة الجديدة والتي تعتبر
subclass، من الممكن أن تكون
superclass لفئات جديدة أخرى ينشئها
المبرمج.
وهكذا تمتد لدينا سلسلة من الوراثة بين الفئات extends، يحكمها قانون
"الوراثة المفردة Single
Inheritance" حيث ينص هذا القانون
على:
تنشأ أي فئة فرعية من فئة أم واحدة، فالجافا لا تدعم التوارث المتعدد
multiple inheritance
كالسي++ ولكنها تدعم مفهوم الواجهات
Interfaces، فنظام الواجهات يساعد الجافا على تحقيق
فائدة
التوارث المتعدد مع عدم وجود الأخطاء المترابطة الناتجة عن هذا التوارث
المتعدد!
تذكر
أن أي كائن ينتمي إلى فئة فرعية فهو
ينتمي إلى الفئة الأم لهذه الفئة الفرعية ويحمل خصائصهما وسلوكهما.
وبعد
هذه المقدمة وهذا التوصيف لعالم الـOOP
نلاحظ أن جُلّ التركيز في هذا النوع من البرمجة يقع على الـفئات
Classes، فالمبرمج يستخدم الفئات المبنية
مسبقاً في
اللغة مع الفئات التي يبنيها هو كي ينتج برنامجاً بالجافا، ربما يفسر
هذا الاسم
OOP
بهذا
يكون درسنا قد انتهى، أرجو أن يكون
واضحاً.. والسلام عليكم..
Ebisu- مبرمج جيد
- عدد المساهمات : 45
السٌّمعَة : 50
تاريخ التسجيل : 11/06/2010
العمر : 43
مواضيع مماثلة
» (3) البرمجة بالكائنات الشيئية
» (4) البرمجة بالكائنات الشيئية - 2
» مدخلك الى تعلم البرمجة
» مدخلك الى تعلم البرمجة
» مدخلك الى تعلم البرمجة
» (4) البرمجة بالكائنات الشيئية - 2
» مدخلك الى تعلم البرمجة
» مدخلك الى تعلم البرمجة
» مدخلك الى تعلم البرمجة
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى