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

البداية مع Design Patterns

مغلق
بدأه فيصل الردادي في 25 أغسطس 2005 · 15 رد · 2,727 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

قبل ان تبدأ في تعلم كيفية تصميم انظمة جيدة التصميم تحتاج لان تكون على دراية كاملة في جميع الامور المتعلقة في اللغات الكائنية التوجه.

هناك مشاكل كثيرة تواجه المطورين عند اختيار تصميم معين لنظام معين. هذه المشاكل قد تأخذ وقتا طويلا من المطور في حلها. فهو يبدأ اولا بتحليل المشكلة ثم الى معرفة الحل ثم الى اعادة التصميم للنظام(الفئات).

ولحل هذه المشكلة – استحدث شئ يسمى design patterns . وهي باختصار عبارة عن المشاكل الشائعة بين المطورين في عملية تنظيم الفئات.

لتوضيح هذه الصورة دعونا نأخذ مثال بسيط على واحده من هذه الباترنز.

اسم الباترن: Singleton

لنفرض ان عندك برنامج فيه مجموعة من البانلز وفي كل مرة تظهر للمستخدم بانل معينة في حال حدث حدث معين. اذا انت ستحتاج في كل مرة يحدث الحدث – ان تقوم باستدعاء الفريم الرئيسي واضافة بانل معينة داخلة. وبما ان نظامك سوف يحتوي فقط على فريم رئيسي واحد – تحتاج للدخول الى هذا الفريم واضافة بانل معينة من داخل فئات اخرى.( اتمنى ان الصورة وضحت).

دعني اقول لك ماذا كنت افعل قبل ان اقرأ عن هذا الباترن.

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

public class ObjectsStorage {
    
   public static MainFrame frame;
    
}

وبعد ذلك من داخل MainFrame اقوم بتعريف هذا المتغير بهذه الطريقة:

public MainFrame() {
        ----
        ----
                
        ObjectsStorage.frame = this;
    }

بعد ذلك استطيع استخدام ObjectsStorage.frame في اي مكان داخل البرنامج وان اضيف او احذف منه ماارغب من البانلز.

قد يقول البعض ومالمشكلة في ذلك:

اولا: MainFrame يجب ان ينفذ والا سوف تحصل على خطأ. في حالتنا السابقة – انا اتفق معك ان الفريم الرئيسي سنفذ لامحالة. لكن في حالات كثيرة اخرى لن تستطيع ضمان ذلك.

ثانيا: ليس لديك التحكم الكامل في هذا الكائن ObjectsStorage.frame – لانه عام و static اذا يحق لاي شخص الدخول الى هذا الكائن وتغيير مايريد فيه.

اذا هنا تتضح اهمية هذا الباترن – فهو يريك كيف تختار التنظيم الجيد لفئاتك اذا كان عندك كائن عام على مستوى البرنامج ( في حالتنا هذا الكائن هو من نوع MainFrame ) وهذا الكائن لايوجد منه الا نسخة واحده في كل البرنامج.

الحل :

public class MainFrame extends JFrame {
    
    private static MainFrame frame;
    
    private MainFrame() {
       
        frame = this;
    }
    
     public static MainFrame getMainFrame(){
        return frame;
    }

قد تتساءل – لماذا وضعنا private constructor . اذا سألت هذا السؤال فيحق لي ان اقول لك انه يجب عليك مراجعة شروط قراءة هذا الدريس( تصغير درس) ولكنني سأجيبك:

انت تريد من برنامجك ان يكون له كائن واحد فقط من نوع MainFrame - ولا تريد ان تجعل اي شخص يعمل نسخة اخرى من داخل فئته. ولهذا جعلنا هذه الفئة تحتوي على هذا ال private constructor . ( ارأيت كم ان اللغات الكائنية التوجه ممتعة وبسيطة).

ومن داخل اي كلاس اخر تستطيع ان تستدعي MainFrame.getMainFrame() .

اتمنى ان اكون قد وضحت الفكرة ولاي اسئلة انا حاضر.

ملاحظة سأبدأ بين فترة واخرى في عرض بعض ال design patterns التي اعرفها واتمنى ان البداية تكون جيدة- وفي النهاية تهمني اراؤكم.

تم تعديل هذه المشاركة بواسطة مبتدئ جدا في 25 أغسطس 2005 في 22:17

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

http://www.shbab1.com/2minutes.htm

#2

هل الموضوع غير مهم ام ان الشرح غير واضح؟

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

http://www.shbab1.com/2minutes.htm

#3

موضوع جميل جداً ومهم، يجب أن يتعلمه الجميع فقد غدا من أساسيات البرمجة.

عندي تعليق بسيط أخي مبتدئ جداً، يفضل أن تكتب الكلمات الإنكليزية بأحرف إنكليزية وليس بأحرف عربية، فإن هذايضيع بعض الشيء. وهذا مجرد اقتراح والله يعطيك العافية.

#4

و الله أنا زعلان منك أخوي مبتدئ جداً تبدأ من غير ما تقولي

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

شكراً

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

أخوي الموضوع رهيب جداً على فكرة أنا استغربت حكاية الـ cunstractor الـ private

شكراً كثير ويا ريت تعطينا كل الي تعرفه عن الموضوع بالتفصيل الممل

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

جزاك الله خير في الحقيقة انا لم اكن اعرف اي شيئ عن هذا الموضوع

فشكرا لك

منقطع من حين لاخر

#7

الأخ فيصل :

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

وكل عام وانتم بخير

اتمنى أن تكمل فا لموضوع مهم و نحتاج المزيد من المعلومات حولة

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

#8

اتمني ان تنقل الموضوع للسي ++ ايضاً فهو اساساً من مواضيع البرمجة عامةً ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#9

وجدت موقع مفيد و سلس يتكلم عن الـ design pattern

http://www.javacamp.org/designPattern/

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

#10

الف شكر اخوي على الشرح الرائع

تحياتي قيصر

#11

أستاذ فيصل بأي كتاب تنصحنا بنسبة الى موضوع Design Patterns

مع جزيل لللللللكل

تم تعديل هذه المشاركة بواسطة yadoo86 في 31 أكتوبر 2005 في 14:47

winter-main.jpg

6179.gif

#12

Thinking in Patterns

Thinking in Java

Thinking in Enterprise Java

Thinking in C++

كلها مجانية ولنفس الكاتب والله أعلم..

ابحث عنها في google!!

بالتوفيق!!

#13

مشكور أخي أبو مازان

winter-main.jpg

6179.gif

#14

هذا الرابط فيه الكتب الي اتكلم عنها الأخ أبو مازن

http://www.pythoncriticalmass.com/

#15

السلام عليكم

مجهود رائع تشكر عليه اخي

ارجو ان تستممر في الشرح

وجزاك الله عنا كل خيرو تطيل علينا

#16

هناك كتاب رائع اسمه :

head first desgin patterns

حاول البحث عنه هنا :

ebooksportal.com

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

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