الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي البرمجة كائنية التوجه؟

بدأه أحمدالغريب في 6 فبراير 2013 · 3 رد · 1,597 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

حاولت كثيرا أن أفهم البرمجة كائنية التوجه أو ما تسمى OOP ( Object oriented programming ) ولكن لم أستطع فهمها تمام فأتمنى من أحد الأساتذة الأفاضل هنا أن يقوم بشرحها بشكل مبسط يسهل فهمه وشكرا.

صلي قبل ان يصلى عليك

#2

تخيل أخي أن لديك أخي أربع دوال للتعامل مع الملفات:

  • open لفتح الملف
  • read لقراءة الملف
  • write للكتابة للملف
  • close لإغلاق الملف

في الطريقة العادية ستعرفها هكذا مثلاً:

 

<?php

function open($filename) {
    $fh = array(
        'filename'  => $filename,
        'access'    => 'READ+WRITE',
        // ...
    );
    
    return $fh;
}

function write($fh, $string) {
    // ...
}

function read($fh) {
    // ...
}

function close($fh) {
    // ...
}

// طريقة إستخدام الدوال

$fh = open('file.txt');

write($fh, 'Blabla');

$data = read($fh);

close($fh);

?>

أشياء ستلاحظها في دوالنا السابقة:

  • جميع الدوال لها غرض واحد "دوال للقراءة والكتابة"
  • هناك متغير $fh يحمل معلومات الملف المفتوح يجب أن يمرر لكل الدوال.
  • لايوجد مايمنع المستخدم من إستدعاء الدالة write بدون إستدعاء open؟

لو أعدنا كتابة البرنامج السابق بطريقة الـOOP سيكون:

<?php

class FileIO {
    private $fh;

    public function FileIO($filename) {
        $this->fh = array(
        'filename'  => $filename,
        'access'    => 'READ+WRITE',
        // ...
        );
    }
    
    public function write($string) {
        // ...
    }
    
    public function read() {
        // ...
    }
    
    public function close() {
        // ...
    }
}

// طريقة إستخدام الدوال
$object = new FileIO('file.txt');
$object->write('Blablabla');

$data = $object->read();

$object->close();

?>
  • جميع الدوال لها غرض واحد "دوال للقراءة والكتابة"، لذا وضعناها تحت مجموعة (أو class) واحده FileIO.
  • لم تعد هناك حاجة لتمرير المتغير $fh في كل مرّة، فيمكن الوصول له من أي وظيفة (أو دالة) هكذا:
  • $this->fh
  • لن يمكن لمستخدم إستدعاء الوظيفة (أو الدالة) write بدون إنشاء كائن (new FileIO).

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

تم تعديل هذه المشاركة بواسطة Mr.B في 6 فبراير 2013 في 22:23

2
#3

جزا الله خيرا الأخ الكريم Dr.B على المشاركة

الأخ الكريم أحمد :

بعد أن كتب الرد هنا ارتأيت أن أجعلها في موضوع مستقل لتعم الفائدة

البرمجة بمنهجية الأصناف والأشياء OOP
 

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 6 فبراير 2013 في 23:43

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#4

أشكرك أخي Mr.B على التوضيح...إذا ما فهمته هو اها طريقة للبرمجة لتفادي بعض الأشياء في البرمجة التقليدية حيث يمكنني أن أستخدم جزء معين من الكود بدلا من إستخدامي كل مرة لجزء لا حاجة له من البرنامج او المرور على مجموعة من السطور لا لزمة للمرور بها...أي يمكن أن أقول أستخدم جزء الكتابة بدون المرور على القراءة مثلا ويمكنني استخدام عدة اجزاء في نفس الوقت من الـ Class المستخدم.

 

اشكرك أخي أحمد المبرمج للتعقيب وسأنظر في الموضوع إن شاء الله :)

 

دمتما بصحة وعافية إن شاء الله :).

1

صلي قبل ان يصلى عليك

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…