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

مقدمه المكاتب التنفيذيه Business Objects

مغلق
بدأه الحسين في 26 نوفمبر 2004 · 9 رد · 2,047 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

قبل الدخول في الموضوع دعني أطلب منك أن تنظر في ساعتك وتحدد الوقت (في حالة أنك لا تملك ساعه لا داعي للحزن , ولكن يبقي لك أن تتخيل معي)

دعني أسئلك الأن كيف تمكنت من تحديد الوقت ؟

ربما سوف تقول أن من صمم هذه الساعة قام بتوفير واجهه (Interface) لرؤيه الوقت من خلال عقارب الساعه أو من خلال شاشه رقميه

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

و قد تم إخفاء الجزء المسئول عن إجراء العمليات الحسابيه المسئوله عن تحديد الوقت عن عين صاحب الساعه.

ربما تظنوا أني أقوم بعمل دعايه لشراء الساعات , ولكن هذا غير صحيح ولكن كل ماا أهدف له

أن نحاول أن نفكر في تصميم البرامج كما فكر مصمم الساعات , ولكن كيف ؟

بكل بساطه سوف نقوم بتقسيم عمل البرنامج إلي جزئين

1- جزء للواجهه الخاصه بعرض البرنامج ( كما كان الحال في واجهة الساعه )

2- و جزء أخر خاص بالعمليات التي تتم من خلال البرنامج وهذا الجزء عادة ما يطلق عليه Business Objects

وهو يختص بتوفير الوظائف التي تتم من خلال البرنامج.

ودعنا نضرب مثال يوضح الأمر :

تخيل أنك قد كلفت ببرمجة صفحة تسجيل دخول للأعضاء (login page)

ربما سوف تقوم بإنشاء ملف واحد باسم login.php وسوف تدرج تصميم الصفحه والكود الخاص بتسجيل الدخول داخل هذه الصفحه

ولكن لاحظ أنك بهذا الإسلوب قد قمت بمزج التصميم (واجهة الساعه) مع الوظائف الخاصه للتأكد من صحة بيانات تسجيل الدخول (اسم المستخدم وكلمة المرور)

وهذا الأسلوب فعلا مستخدم بشكل كبير , ولكنه يفتقر إلي التالي :

- سهولة إجراء تطوير وصيانة البرنامج

- سهولة التعامل بين فريق العمل بالمشروع

- سهولة التعامل بهذا الإسلوب في إدارة المشاريع المتوسطه والكبيره

ولكن يفضل في مثل الحالات السابقه اللجوء إلي تطبيق فكر مكتبات التنفيذ Business Objects

دعنا الأن نقوم ببرمجة صفحة تسجيل الدخول بهذا المفهوم كما يلي :

سوف نقوم بتقسيم هذه الصفحه إلي جزئين

1- جزء كواجهه للعرض وهي عباره عن صفحة تسجيل الدخول (login.php)

2- وجزء أخر (business object) يحتوي علي الوظائف الخاصه للقيام بعملية تسجيل الدخول

وتختلف طريقة بناء هذا الجزء من مبرمج إلي أخر

وللحديث بقيه ....

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

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#2

السلام عليكم

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

ما هى خبايا هذه اللغه, كيف, هل ينصح باستخدام oop فى البرمجه بها.

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

ارجو من الاخ الحسين المتابعه, وشكراً على هذا الدرس القيم

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

بسم الله الرحمن الرحيم

مرحبا بك أخي احمد غريب في منتديات ال php

اقتباس
هل ينصح باستخدام oop فى البرمجه بها

بالطبع ينصح باستخدام ال oop

وحتي تتمكن من الإستفاده من هذا الموضوع يمكنك متابعة

المشروع التالي مشروع نظام للنسخ الاحتياطي لـ Mysql DB

فهو مثال حي علي تطبيق مفاهيم ال Business Objects

وإستكمال للموضوع السابق

فقد أرفقت مثال بسيط للقيام بعمليه تسجيل الدخول

بشكل مبسط من خلال إستخدام مفهوم المكاتب التنفيذيه

والسلام عليكم

WebApplicationTest.rar

تم تعديل هذه المشاركة بواسطة الحسين في 27 نوفمبر 2004 في 22:13

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#4

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

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

بالتأكيد اخي الحسين ان مفهوم الـ Smarty الذي اضيف على php يعبر عن تقصده بالضبط

فصل الكود عن الواجهة

و بالتالي سهولة بالتعامل بشكل كبير جدا

Let's google help you Before ask

--------------------------

My Blog : www.phplover.net

#6

السلام عليكم

بعد قراة هذا الموضوع :

http://www.webmasterstop.com/tutorials/eff...y-PHP-OOP.shtml

إتضح لى ان إستخدام oop فى PHP يبطئ الحصول على المعلومات, بالتاكيد إستخدام oop يسهل البرمجه ولكن ما هى الخسائر المترتبه عليه بالنسبه للفعاليه وإختصار الوقت.

انا لا اجادل فى فعالية oop ولكن على ما اعتقد php لم تنمو بعد بحيث يصبح إستخدام oop محرزاً .

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#7

في الحقيقية انا اعتقد ان OOP لا يقارن البطئ الناتج مع النتائج المتوخاة

انا بالنسبة لي وجدت صعوبة في Smarty Templets اكثر بكير من البرمجة في OOP

اما بالنسبة لفاعلية OOP اعةقد انها تحسنت كثير في PHP5 رغم انني لم اعمل على هذا الاصدار لحد الان

Let's google help you Before ask

--------------------------

My Blog : www.phplover.net

#8

بسم الله الرحمن الرحيم

مشكورا أخوي أحمد غريب علي مقاله الكاتب Wojciech Hlibowicki

ولكن سوف أحاول التأكد من هذه المقاله الأن معكم (ليس مدافعا عن ال php ولكن حتي نعلم هل كل ما ورد بالمقال كلام يوثق به ام لا ) وهذا مع إحترامي الشديد للكاتب Wojciech Hlibowicki

Obviously, this is not a true object oriented program,
but the use of classes contribute quite a bit

هذا الكلام صحيح بالنسبه للإصدار الرابع وما قبل ذلك

أما الإصدار الخامس فلا تنطبق عليه هذه المقوله

ثم قام الكاتب بسرد ثلاث مقارنات وهما

1- OOP : مثال يستخدم مفهوم البرمجه الكائنيه الموجهه

2- Function : مثال يستخدم داله فقط

3- Neither : مثال مجرد من الدوال والفئات

وبالطبع بدون إجراء اي إختبار فمن المعلوم أن إستخدام الداله سوف يكون أبطئ من ال Neither

وبالتالي إستخدام ال OOP سوف يكون أبطئ من إستخدام الداله

أما بالنسبه لمثال ال oop فقد وجدت أنه يوجد سطر بالكود تم وضعه في مكان خطأ ربما بدون تعمد ولكن هذا يجعل بالمقارنه إختلال

حيث أن الكود بالمقال كان علي النحو التالي

class test
{
    function one() {
        return 1;
    }

}

for ($i=0; $i<1000000; $i++) {
    $testclass=new test();
    $cnt+=$testclass->one();
}

وكان يجب أن يكون علي النحو التالي

حيث أنه ما الداعي لإنشاء كائن جديد باسم testclass في كل دوره (إلا إبطاء تنفيذ البرنامج)

class test
{
    function one() {
        return 1;
    }

}

$testclass=new test();
for ($i=0; $i<1000000; $i++) {
    $cnt+=$testclass->one();
}

وحتي أتأكد من فاعلية ال OOP في الإصدار الخامس قمت بتنفيذ المثال السابق علي سيرفر يدعم PHP5

وللأسف كانت النتائج متقاربه إلي حدا ما ولم ألحظ اي فروقات كبيرة في الوقت المستغرق للتنفيذ

لكن هذا لا ينفي ما تم من تحسينات في بنيته ال OOP بالإصدار الجديد

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

كما بالمثال السابق حيث تم تنفيذ حلقه تكراريه (for loop) لعدد كبير جدا من المرات

لذلك يجب عدم الإعتماد علي هذه النتائج بشكل كبير إلا إذا كان الكود يقع بالفعل تحت ظروف تجعل إستخدام الدوال أو حتي مجرد أكواد فقط بدون داله هو أفضل من إستخدام oop

ويجب أن نضع في إعتبارنا أيضا مدي صيانة الكود code maintenance وهي تكون بشكل أفضل

عندما نستخدم الدوال بدلا من أكواد فقط بدون داله

وتكون أفضل عندما نستخدم ال oop بدلا من الدوال

لذلك أؤيد قول الكاتب التالي

Therefore, the next time you are developing PHP code,
you should consider whether you want
faster execution times / less CPU load, or easier to maintain code.

ولكني لم أكتفي بهذا فقد قمت بعمل نفس المثال لكن بلغة csharp مستخدما تكنيك Asp.Net

والمثال كالتالي

<%@ Page Language="C#" %>
<script runat="server">
class test
{
    public int one() {
        return 1;
    }

}

void Page_Load(object sender, EventArgs e) {
    int cnt = 0;
    System.DateTime curTime = System.DateTime.Now;
    test testclass = new test();

    for (int i=0; i<1000000; i++) {
        cnt += testclass.one();
    }
    this.Response.Write("time elapsed: " + (System.DateTime.Now.Subtract(curTime).ToString()) + " second(s)" );
}
</script>

وقد لاحظت فرق في السرعه لايذكر حيث أن كود ال CSharp أثبت كفاءه عاليه جدا

وقد أرجئت ذلك إلي جودة ال .NET في طريقة إدارتها للذاكره Memory managment

ولأن لغة ال php مازالت Scripting Language لا يتم إدارة الذاكره فيها بشكل جيد فعلا سبيل المثال لا توجد أنواع واضحه data Types للمتغيرات بلغة ال php

مما يؤثر علي سرعة الإسكربت , والله أعلي وأعلم

وقد أرفقت هنا الأمثله السابقه

والسلام عليكم

PerformanceTest.rar

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#9

السلام عليكم

مشكور اخى الحسين على هذا المجهود العظيم فى تحليل الموضوع, ربما لم يحن الاوان بعد لإستخدام oop فى php وذالك لان ال script language تحتاج إلى تغير الشفره لملفات اقرب للغه الاله بدلاً من تشغيلها مباشرتاً.

هل هناك مقارنه بين asp و php فى إستخدام oop ارجو الإفاده.

انا مازلت اعمل على الاصدار 4 لان اغلب السرفرات مازالت تستخدمه, وإن شاء الله ننتقل إلى الاصدار 5 قريباً.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#10

وانا ايضا على الاصدار الرابع :)

حسنا لا احتاج oopللعمل فى php حتى الان واكتفى بالدوال وهى أسرع فى نظرى ... هناك مقال آخر أحاول العثور عليه وقد تضايق الكاتب من oop فى php4 :(

http://www.oracle.com/technology/pub/articles/hull_asp.html

الرابط مقارنة ولكن مع asp.net

وبالله التوفيق وجزاك الله خيرا اخى الحسين :)

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

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