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

مناقشة البرمجة الكائنية [ php4 فقط ]

مغلق
بدأه shreef في 5 أبريل 2006 · 8 رد · 1,201 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

تباعا للموضوع - مواضيع متقدمة فى php - قولنا اننا حنفتح موضوع للمناقشة مش مجرد شرح من طرف واحد و الباقى يسمع.

كبداية الموضوع هنا عن البرمجة الكائنية فى php , حنكتفى فى الموضوع دة بالأمكانيات الموجودة فى php4 و يعنى ايه برمجة كائنية و ليه البرمجة الكائنية عشان محدش يتوه مننا فى نص الموضوع و اعتقد لو اتفهمت كويس إن شاء الله حيبقى سهل يتفتح مواضيع تانية بتكمل الموضوع دة تدريجيا.

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

مرة تانية : الموضوع مش للشرح المباشر بل للتعلم عن طريق للنقاش

دة ممكن يبقى زى كتاب ليه 100 مؤلف و الكل بيحسن فيه و بيحط بصمته على قد مربنا بيقدره

المصدر الى اى حد ممكن يقرى منه : PHP Manual . OOP

اواى حاجة تانية فى صلب الموضوع

ححاول ارجع تانى إن شاء الله بعد ساعات و اتمنى الناس الى كانت عايزة تشارك فى الموضوع تضيف للموضوع هنا و تثريه عشان يكون بالشكل المطلوب

بالتوفيق , أحمد شريف

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#2

:) مشكوووووووووووووور اخي و جزاك الله خيرا.

استغفر الله واتوب اليه

اللهم اتنا في الدنيا حسنة وفي الاخرة حسنة وقنا عذاب النار

لااله الا انت سبحانك اني كنت من الظالمين

اللهم اني اسألك الهدى والتقى والعفاف والغنى

اللهم استجب دعـــــــــــــائي الصالح يارب

#4

هادي المواضيع الي تفتح نفس

انطلق يا شريف D-:

#5

طيب جميل ان فى ناس حابة تتابع الموضوع و اتمنى اى حد عارف الحجات دى قبل كدة يدخل بردو و يشارك فى شرحها و توضيحها إن شاء الله

______________

البرمجة الكائنية OOP

البرمجة الكائنية [ Object Oriented Programming ] هى مفهوم او اسلوب بيقدم طريقة احسن لكتابة البرامج , بحيث ان بيتم تجسيد كل جزء داخل البرنامج على انه كائن و موجود فى بيئة بيتفاعل معاها و فى نفس البيئة دى كائنات اخرى بأنواع مختلفة .

طيب نقول مثال على كائن :

عندنا كائن اسمه احمد , و احمد بيتكون من اعضاء ( يد, رجل , رأس ..) و عنده افعال و حجات يقدر يعملها ( يغسل وجهه , يلعب كورة , يتفرج على التلفزيون ... )

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

الكائن بتاعنا الماثل امامكم و هو احمد , تتوقعوا ان تكون فصيلته ايه ؟؟

احنا الى بنحدد هو فصيلته ايه , انا اقدر و الله اعلم اقول انه إنسان

يبقى كدة عرفنا ان احمد يقع تحت فصيلة اسمها ( إنسان ) - جميل جدا

نفس الموضوع فى البرمجة , بس انت فى البرمجة بتعمل الفصيلة اولا و بتحدد فيها صفات الكائنات الى حتكون تحت مسمى الفصيلة دى.

لأن انت مش بس حتلاقى عندك الكائن ( احمد ) من الفصيلة ( إنسان ) , بل انت ممكن تلاقى الكائن ( منى ) من نفس الفصيلة , و دة شئ طبيعى

بص دلوقتى حوليك وسيبك من الكمبيوتر و حتلاقى ملايين البشر- الى هم كائنات - بتجمعهم فصيلة واحدة و همة كل واحد يعتبر مثال للفصيلة دى , مهم كان ابيض او اسمر , طويل او قصير , بس المهم ان كلهم بشر بيمثلوا فصيلة واحدة .

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

طيب نرجع تانى للبرمجة و الأكواد:

احنا قولنا من شوية ان احنا لازم نحدد الفصيلة اولا و مكوناتها عشان بعد كدة لمة نحب نعمل مثال منها , نبقى عارفين المثال دة مكنواته ايه و ممكن يعمل ايه.

كلمة "فصيلة" فى اللغة الأنجليزية اسمها class

و فى الـ php الى تخصنا حاليا بيتم تعريف الفصيلة عن طريق كتابة الكلمة class و تليها اسم الفصيلة و بيتم فتح قوسين معقوفين { } , بحيث ان سيتم وضع كل ما يتعلق بالفصيلة دى داخل القوسين دول

الفصيلة بتاعتنا كنا بنقول عليها ( إنسان ) بس احنا محتاجين بديل انجليزى فحنستخدم ( Human )

* ملحوظة : بيفضل جعل اول حرف Cpital فى اسم الفصيلة لكى يسهل التفرقة بينه و بين الأسماء الأخرى كما فى ( Human ) و إذا كان الأسم متعدد الكلمات يكتب على الشكل التالى مثلا ( SonicCat )

  

class Human
{

}

زى محضراتكم شايفيين دة تعريف لفصيلة اسمها Human , لكن لسة منعرفش ايه الى بيميز الفصيلة دى عن اى فصيلة تانية لأن لسة جسم الفصيلة فارغ , و جسم الفصيلة هو ما بين القوسين { }

طيب نرجع للطبيعة مرة تانية و نشوف الناس الى حولينا صفاتهم ايه و ايه الحالات الى ممكن يكونوا عليها او ممكن يعملوا ايه ؟

ممكن نقول ان الأنسان عنده صفات اسمها ( الوجه , اليد , القدم, لون العين ) و عنده حالات مختلفة ممكن يكون عليها ( نائم , غضبان ) و عنده حجات يقدر ينفذها زى ( يغسل وجهه , يلعب كرة قدم , يشوط الكورة , يغضب)

* لاحظ هنا ان "غضبان" صفة و "يغضب" فعل

الصفات و الحالات الى ممكن يكون عليها الكائن دى ممكن نسميها ايه ؟!!!

امممم , اعتقد member variables حيبقى ظريف دلوقتى عشان هم يعتبروا متغيرات عادية لكن اعضاء فى الفصيلة دى بس

عشان نعمل تعريف لـ member variable داخل الـ class , بنبدأ بكلمة var و بعدها اسم المتغير الخاص بتاعنا عادى و كل عضو بيتعرف مرة واحدة فقط

لاحظ تعريفنا للـ member variables فى الـ class حيبقى عامل ازاى

class Human
{

    var $face;

    var $hand;

    var $foot;

    var $eyeColor;

    var $sleeping;

    var $angry;


}

بسيط و سهل , مش كدة ؟!!

طيب احنا لسة معرفناش الحجات الى ممكن يعملها اى كائن يشتق من الفصيلة دى

بنعرف الأفعال دى زى اى function كنا بنعملها قبل كدة

يبقى ايه شكل الـ class دلوقتى ?

class Human
{

    var $face;

    var $hand;

    var $foot;

    var $eyeColor;

    var $sleeping;

    var $angry;



    function washFace();
    {

    }


    function playSoccer()
    {

    }

    function kickTheBall()
    {

    }

    function beAngry()
    {

    }



}

على فكرة الأفعال دى بنسميها methods بحيث انها طريقة تنفيذ شئ على الكائن لمة نستخدمه بعد كدة, بس افكرك تانى ان الى احنا كنا شغالين فيه دة الفصيلة ( class ) مش الكائن نفسه

طيب احنا عندنا الأفعال بتاعتنا الى هى methods لسة فاضية مبتعملش حاجة , طب نجرب نشوف واحد منهم على الأقل عشان نبقى عرفنا عندنا امكانيات ايه داخل الـ methods بتختلف عن الـ functions العادية الى احنا عارفينها

لو مسكنا دلوقتى الـ method الى اسمه beAngry الى هو لو استدعيناه على الكائن بتاعنا يبقى حيحول حالة الكائن إلى غاضب , بس ازاى بيبقى الكائن غاضب ؟؟

الكائن حيتحول لغاضب لمة تكون قيمة الـ member variable المسمى angry$ تساوى TRUE

يبقى دلوقتى عرفنا ان احنا عايزين لمة نستدعى الـ method المسمى beAngry , ان يتم تحويل قيمة الـ member variable المسمى angry$ الى TRUE

دلوقتى لو بسيط على الـ method المسمى beAngry حتلاقيه كالتالى

function beAngry()
    {

        $this->angry = TRUE;

    }

ايه this$ دى و ايه العلامة <- ??!!

this$ لو عايزين نبسط معناها حنقول انها الأصل بتاع الفصيلة او انها المندوب بتاع الكائن الى لسة حيتعمل و احنا لسة منعرفش اسمه

و العلامة دى <- معناها ان this$ بيطلب تنفيذ مهمة او اضافة قيمة الى احد اعضائه و فى مثالنا هو بيطلب اعطاء القيمة TRUE الى angry$

*لاحظ ان فى this->angry$ مفيش $ قبل angry بل اكتفينا بالموجودة قبل this

*لاحظ ان كلمة this اجبارية فى php على عكس بعض اللغات التانية الى بتسيب استخدام this كشئ اختيارى

طيب كدة عرفنا ان المتغيرات الى بنتعامل معاها عن طريق this بتكون عامة على الـ class كله مش فقط مقتصرة على الـ method الى هى مستخدمة فيه , على عكس المتغيرات الى بنستخدمها من غير this بحيث انها فقط اقصى نطاق عمل لها هو داخل الـ method كما فى الـ functions العادية بتاعت زمان الى احنا عارفنها.

3 ساعات عدو بسرعة و انتم شكلكم زهقتم و انا عايز ادخل انام

اتمنى ان يكون فى حد استفاد من الكلام دة و اعتزر مقدما لو فى غلطات او حاجة انا مخدتش بالى منها عشان انا مراجعتش الى كتبته و لو فى اخطاء ارجوا تنبيهى عشان اعدلها

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

شكرا, محدثكم أحمد شريف

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#6

مشكور اخوي الشريف

لكن لو بدي اخذ قيمة من متغير خارج الكلاس

مثال لو كان عندي كلاسس

class mysql{
	var $pass;

function sql(){
$this->pass=$vars;  

}	


}

المتغير $vars

لو كان خارجي كيف يمكن استدعائه وشكرا اتمنى ان كان السوال واضحا

:o :o :o :o :o

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#7

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

موضوع دسم جزاك الله خيرا أخي شريف :)

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

ممكن نتكلم اﻷول عن مفهوم ال oop ويعني ايه وايه خصائصة أو مميزاته

زي مثلا

١- الوراثة أو Inheritance

ونقصد ايه بالكلمة دي وايه فاديتها ممكن نقول هي اني اقدر اورث خصائص عنصر تاني دون كتابة نفس الكود مرة اخري وكمان لو احتجت أعدل فيه دون المساس بالكائن اﻷصلي ويعني ايه refrance type ويعني ايه value type

وايه الميزة من استعمالها

بعد كدا أبدأ أشرح ازاي أعمل أول كلاس ليا وايه هي طرق الوصول للمتغيرات داخل الكلاس او ارسال قيم وايه هي اﻻحداث الي ممكن استخدمها مثﻻ عند تكوين الكلاس او تنفيذها وهي تترجم بالعربية الي المشيد او Constructor

وايه فايدتها وازاي مثلا ممكن استغلها في حماية البيانات وبعد كدا اتناول باقي اﻻحداث مثل عند اﻻنتهاء من الكائن

وأبدأ اتناول بعد العناصر بالشرح الدقيق زي مفهوم ال overload وكمان ال override

وايه فاديتهم ليا كمبرمج php

ممكن اتطرق الي الخاصية الثانية للبرمجة المتجهة وهي تعدد الواجهات وأبدأ اشرح الوجهات او Interfaces

واتناول بعد كدا طرق حماية متغيراتي او الكلاس الذي أقوم بانتاجه

وأبدأ أدي القارئ فكرة عن مفهوم namespace

وندي أمثله لميكرسوفت عملت ايه

وأبدأ اتطرق الي ازاي انا كمبرمج يكون ليا framework خاص بيا اقوم بتنفيذ كل عملياتي عن طريقه علي شاكلة الفريم ورك بتاع ميكروسوفت او مثلا اناقش احد ال frameworks المشهورة علي الساحة والي اصبحت ليها وجود مثل cakephp

او مثلا zend framework

ومكن اناقش احد واجهات ide الي ظهرت لخدمه هذه الموضوعات وتستخدم في تحرير ال php زي مثلا eclipse

والي طورته شركة xored وانتجت TruStudio والي اصبح مشهور جدا بين المبرمجين في الخارج واصبحوا يعتمدوا عليه اعتماد كامل في تطوير مشاريعهم :)

وانا شخصيا مستمتع مع العمل معاه

بكدا فهمت القارئ ليه هو محتاج يطور نفسه الي اسلوب البرمجة المتجهة وايه هي الفوائد الي هيجنيها من كدا وازاي دا هيوفر عليه كتابة أكواد وكمان يطور عمله ويكون أأمن وأسرع وأقوي وأسهل في التحديث والصيانة

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

http://www.phpvolcano.com/articles/php5/index.php

ودا موقع واجهة تحرير ال php

http://www.xored.com/trustudio

ودا المانول بتاع الفريوم ورك cakephp

http://manual.cakephp.org/

أتمني انه يكون فكرتي وصلت وان شاء الله الجميع يجد الفائدة وجزاكم الله خيرا :)

#8
اقتباس
   

المتغير $vars

لو كان خارجي كيف يمكن استدعائه وشكرا اتمنى ان كان السوال واضحا

بتمرره عادى زى مبيحصل مع الـ functions العادية كـ prameter

و لو ممررتهوش كدة يبقى ممكن بردو تجيبه من GLOBALS$ لو هو فى الـ global scope

-----------

اقتباس
   

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

و مين يعنى متلخبطش , مكلنا اتلخبطنا ;)

كل الحجات الى ذكرتها اخ ابو الدهب هى المفروض انها تتقال كلها هنا , بس المشاركين فى الشرح و التوضيح و المناقشة المفروض يكونوا اكتر شوية لأن الكلام بياخد وقت عشان يتشرح و بياخد مجهود فوجود تعاون بردو من الى بيعرف فى الحجات دى مسبقا بحيث انه بيساهم فى الكتابة و لو بقدر قليل , حيكون ليه تأثيره

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

و فى اول الموضوع قولنا انها مناقشة و مشاركة فـ لسة منتظرين المشاركين إن شاء الله

بالتوفيق

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#9

أستاذي الفاضل

ان شاء الله فيه مشاركين وانا مستعد ان اشرح ما تعلمته

فصدقة العلم تعليمه للغير

وانا كنت اقترح ان نشرح أوﻻ مفهوم البرمجة المتجهة بشكل عام ومزاياها

وبعد ذلك نتطرق الي البرمجة المتجهة في لغة ال php

ﻻن البرمج ﻻبد وأن يكون ملم باﻻطار اﻷشمل واﻷعم حتي يستطيع اخراج برامج قوية

انا شخصيا كان بيعجبني جدا أسلوب أستاذنا القدير الحسين

ممكن الممكن ان يشاركنا البعض من اﻻقسام اﻷخري فالبرمجة المتجهة هي واحدة في كل اللغات مع بعض اﻻختلافات البسيطة تميز كل لغة في مدي دعمها

انا شخصيا لم افهم البرمجة المتجهة في ال php اﻻ بعد أن تعلمت ال vb.net وفهمت ما هو .net framework

وان شاء الله منتظرين تفاعل من اﻻخوان ونبدأ الشرح :)

تحياتي استاذي الفاضل

هذا الموضوع مغلق.

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