Thursday, January 24, 2013

OOP مفهوم الكائنية المنحى

المقدمة  :

كائنية المنحى او تدعى بالموجه هي في الأصل منهجية لتطوير البرامجيات , تستخدم طرق واساليب برمجية مختلفة عن الطرق البرمجية الأجرائية  procedural programming  السابقة ومنها لغة  (C, Pascal, etc.) التي تعمل بالطريقة الخطية بحيث يكون البرنامج عبارةعن سلسة من الخطوات تنفذ خطوة بعد خطوة هذه الطريقة تصلح للبرامج الصغيرة  ولذلك تم أستبدال هذه الطريقة بمنهجية OOP بسبب تعقد المهام الحاسوبية وزيادة حجم المشاريع والكلف المقدرة , فقد قامت هذه المنهجية بتسهيل حل المشاكل وزيادة المبدأ الوظيفي وتقليل تكرارت الكود وتقسيم المشاريع الضخمة الى عدة قطع يتم توزيعها الى  الفريق البرمجي الى أخره من الفوائد الأخرى.مفهوم الكائنية المنحنى يركز على خلق شبكة من الكائنات Objects محددة بفئات او أصناف تحدد معالمها تدعى Classes التي تحوي على الخصائص والصفات والسلوكيات لمجموعة من الكائنات المتشابهة ويمكن أن يعرف على انه قالب Template لاجل كائن معين والكائن بدوره هو مثيل instance لهذا القالب او الفئة . 

المحتوى :


1- الكائنات Objects
الكائن يعرف فيزيائيا بأنه  يمثل كل الأشياء things الموجوة حولنا  سواء مادي او برمجي او كائنات حية , فالأنسان هو كائن يتفاعل مع الكائنات التي حوله ويملك صفات وخصائص ومنها (اللون ,الطول,الوزن,... ) وفي نفس الوقت يملك سلوكيات او مايسمى بأفعال يقوم بها ومنها(الأكل,المشي,التكلم,....).دعنا نأخذ مثال يوضح مفهوم الكائن لنفترض أنك مدير شؤون الموظفين تدعى أحمد ولديك وظيفة شاغرة قمت بالأعلان عنها في الأنترنيت واستلمت عدة طلبات , وبعد أختبار جميع الخيارات قمت بالأتصال بأحد المرشحين للوظيفة لأجل اللقاء معه والمرشحة تدعى مريم لننظر الصورة التالية التي توضح الفكرة:



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

2- الفئات Classes 
كل الكائنات يمكن أن توضع ضمن حدود او فئة خاصة تحدد حدودها وذلك لأجل تبسيط مفهوم الكائنات أضافة الى الوصول الى مبدأ التجريد abstract ,فلو أخذنا أحمد ومريم يمكننا أن نخلق فئة,هذه الفئة تملك جميع الصفات والسلوكيات التي تجمعهم معا ويمكن أن نسميها Person بحيث يكون عبارة عن قالب لوصف الكائنات ويمكن أن نقسم الفئة Class الى مكونين رئيسيين هما :

* الصفات (Properties)وهي صفات وخصائص توصف الكائن.
* الطرق (Methods) وبعض الأحيان تسمى بالأفعال (action) التي يتم ربطها بالكائن. 

أذن نأتي الى وصف المكونين ونطبقها على مثالنا.

صفات الفئة Class properties :
وهي عبارة عن البيانات التي تريد أن تسجلها مع الكائن, فيمكننا أن نخلق صفات عامة تجمع الكائنين أحمد ومريم توضع في الفئة Person أنظر الى الصورة التالية التي توضح الصفات :


طرق وأفعال الفئة(Class methods):
أن كل فئة تحوي على عدة أفعال يقوم بها الكائن لأجل التلاعب بالبيانات الموجودة داخل صفات الكائن . فلو أخذنا الفئة Person لوجدنا أن كلا من أحمد ومريم يملكان عدة أفعال ومنها التحدث , المشي, الكتابة الى أخره من الأفعال .وفي كل الأحوال تختلف الأفعال المستخدمة في العالم الحقيقي للشركة لكننا الأن لسنا مهتمين بالجانب التطبيقي بل نريد أن نوصل مفهوم وسياق OOP أذن يمكننا أن نرى الصورة التالية التي توضح الصفات والسلوكيات ضمن فئة Person :


 أردت أن أوضح من هذا المثال بأن مريم هي عبارة عن كائن جديد جاء الى الشركة لكي تعمل بالوظيفة الشاغرة وبالأعتماد على مبدأ OOP فيجب علينا خلق كائن خاص بها لأجل تسجيل بياناتها ويكون هذا الكائن تابع الى الفئة التي تم خلقها Person والتي ينتمي اليها أحمد لأنهما يتشاركا بالصفات والسلوكيات لكن البيانات الداخليةالتي تحملها المواصفات Properties مختلفة بالطبع عن أحمد.أذن لو ذهبنا الى العالم الحقيقي قليلا فعندما يأتي موظف جديد الى الشركة سوف نعرف مباشرة بأنه سوف يتم خلق كائن له او يمكن أن نقول مثيل instance يمثل الفئة Person وبعد خلق الكائن يتم تعبئة مواصفاته بالبيانات والتلاعب بهذه البيانات عن طريق الأفعال والسلوكيات.

وكل من الكائنات والفئات يتم ترابطها من خلال علاقات هذه العلاقات والمفاهيم تعكس مفهوم OOP ويمكن أن تصنف الى ألأنواع التالية :

 

·     التغليف (Encapsulation) : وهي أن كل شخص يملك معلومات شخصية مثل بيانات كارت البنك او بيانات سرية, ويجب أن تكون هذه المعلومات مغلفة لأجل أن لايصل لها شخص واقصد كائن او فئة معينة بمعنى تبقى سرية للشخص المالك اي مغلفة داخل الكائن .

·   التجريد (Abstraction)  : وهي أن كل شخص يملك بيانات مثل أسم الشخص , عنوان السكن , الهاتف الى أخره. هذه البيانات يمكن للشخص أن يتشارك مع شخص أخر من خلال أضهارها له او أضهارها للكل او أضهار بعضها حسب الحاجة  ويمكن عمل هذا بأستخدام الكلمات المحجورة   Public , Protected  وممكن أن أعطي مثال على المجرد وهو شاحن البضاعة يهمه عندما يشحن البضاعة من مكان الى أخر وزن وحجم البضاعة ولايهمه لون البضاعة.

·   التعددية(Polymorphism) : وهي التنفيذ المتعدد لنفس الواجهة بحيث تعتمد على مصطلح يسمى Overloading  الذي يعكس هذه التعددية ,ونقصد من هذا أن جميع الأنواع يمكنهم أن يتحدثوا مثال ألأنسان , الحيوان, الأسماك كل هذه ألأنوع تتحدث بلغة مختلفة أذن Polymorphism  كيف  يحل هذه المشكلة : خصائص التكلم ممكن أن تكون مختلفة من حيث الأبناء عن ألاب او النوع الرئيسي او يمكن أن تكون متشابهة بمعنى الأنسان يتحدث لغة البشر لكن الأبناء الذين يرثوا من الكائن الأب(الأنسان) يمكن أن يتحدثو بلغات مختلفة لكنها في كل الأحوال لغة بشرية .

·   الوراثة(Inheritance)   : وهو أن الشخص ممكن أن يرث بعض الصفات والسلوكيات من الأب وهذا منطقي , برمجيا يمكن الأستفادة من هذا النوع بعمل كلاس أب رئيسي parent class مثلا عمل Person وخلق أبناء child class  يرثوا منه مثلا Employee, Customer  


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

No comments:

Post a Comment