السلام عليكم
بين الفينة والأخرى
أفكر في أن أتوقف عن التدوين
تسألوني عن السبب
لي عام وعشرون يوماً أدون
أحاول أن أكتب ما هو مفيد
لكن يبدو أن شعبيتي تخطت جميع الحدود
حتى التعليقات على تدويناتي شحيحة جداً
تصوروا كتبت أنا 74 تدوينة وهناك 200 تعليق في المدونة
بالطبع النصف أنا قمت بالرد على المعلقين
بمعنى أن العدد الفعلي 100 تعليق
وهذا يعني معدل 1.3 تعليقاً للتدوينة الواحدة
يبدولي أني سأموت كمداً من جراء تفاعلكم معي 🙂
اتركوكم مني ومن ضجري ففي الغالب لن أترك التدوين
لأني أتمتع بكتابة ما يعذبكم
تعالوا نتكلم عن موضوعنا
الموضوع كما لابد وأنكم لاحظتم من العنوان
كيف تقوم بعمل Composition بمعناها في UML
بمعنى آخر
كيف تمنع كائن من أن يولد إذا لم يكن هناك كائن آخر
بمعنى آخر
كيف تخبر المطور على حزمتك بأنه لا يستطيع استخدام null كمدخل لمدخل معين
بداية يجب أن أوضح مفهوم الترابط Composition في UML
الترابط هي علاقة بين كائن وكائن
مغزاها أن الكائن الأول لا يستيطيع التواجد بدون أن يكون الكائن الثاني موجوداً
مثال
السيارة لا وجود لها بدون العجلات
وتمثل في UML بمعين صغير مغلق إلى ناحية الفئة التي تحتاج إلى الفئة الأخرى
في مثالنا السيارة
مثال آخر
الرسالة تتكون من ثلاثة أقسام عنوان المرسل ونص الرسالة والملحقات
عنوان المرسل ونص الرسالة ضروريان وإلا فإنه لا يمكن إعتبار المظروف رسالة
بالنسبة للملحقات
قد أضع عملة ورقية كمساعدة
أو طابع بريد كتذكار
وقد لا أضع شيء
الشيفرة التالية توضح المفهوم
package Composition; public class Car { Wheel[] wheels; private Car(){ //you can not use this constructor /*في الجافا إذا كان هناك صانع كائنات آخر فلا حاجة لهذا * الصانع لكني أضيفه للغات الأخرى * وجعلت صلاحيته خاص لمنع استخدامه * لا أعلم إن كان هناك لغة تعمل بهذه الطريقة * لكن الاحتياط واجب */ } public Car(Wheel[] wheels) throws Exception{ if(wheels==null) throw new Exception("please give me cover"); this.wheels=wheels; System.out.println("Thank you"); } public static void main(String[] args) { Car c=null; try { c=new Car(null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } c.wheels=null; /*لاحظ أن الجملة السابقة ستعطيك *nullException *في حالة عدم تكوين الكائن c *وهو الحاصل في حالتنا هذه */ } }
أعيد وأكرر الموضوع مهم في الحزم packages
أنا أطور حزمة معينة أريد أن أخبر المبرمجين
الذين يستخدمون حزمتي
أن الكائن من فئة أ يعتمد على كائن من فئة ب
سأستخدم الشيفرة السابقة
أتمنى أن أكون أضفت شيئاً جديداً
ملاحظة: كتبت الموضوع لقسم الخبراء في منتدى الفريق العربي للبرمجة
مراجع
موقع wikipedia مقالة بعنوان Class diagram الجزء الخاص بالترابط Composition
http://en.wikipedia.org/wiki/Class_diagram#Composition
تحياتي
Tags: Composition, UML
انا من متابعينك على الرغم من انه توجد اشياء تذكرها لا اعرف عنها شي
ولكنني نادرا ما اعلق وهذا لا يعني انني لا استمتع بقراءة مواضيعك
اتمنى لك التوفيق .. ولا تنقطع عن توفير معلومات مفيده
أتمنى أن استطيع افادة مستخدمين الانترنت كما استفدت انا منهم
شكراً لك weeknds
بصراحة ليس في نيتي ترك التدوين
لأني أجد فيه منتفسي الخاص
لكن الإنسان يمر بأوقات يحس فيها بالإحباط
أنت تكتب فمن يقرأ ما تكتب
تصوري أثر ذلك على المدون
شكراً لك على التشجيع
ليس هذا بالشيء الصعب
تحياتي
مممم
وأنا متابعه أيضا .
اخي .. لا تتركـ التدوين .. فمدونتكـ رائعة ..
ولا تفكر في عدد تاركي التعليق .. فقط فكر في عدد القراء .
فأنا مثلا .. أقرأ لكـ دوما ولا أتركـ تعليق سوى مرات قليله .
دمت ودامت المدونه .
شكراً أميرة
على كلماتك الجميلة
أنا لا أهتم كثيراً للتعليق
لكني أحب أن أعرف أن ما أكتب فيه
يهم أحداً ما
أيا كان هذا الأحد
تحياتي
السلام عليكم
موفقين انشاءالله
وعليكم السلام
الجميع بإذن الله
بالمناسبة تعليق غريب
هل هناك سبام عربي D:
تحياتي
مشكور أخي علاء وموفق بإذن الله 🙂
على الرحب والسعة محمد
تحياتي
السلام وعليكم:اطلب منك ان تعطيني معلومات اكثر عن كيفيه تكوين الانشاء
بصراحة لم أفهم المقصود بالضبط
لكن للتوضيح أنا أتكلم عن نوع من أنواع العلاقات الموجودة في UML
وهي تعني أن الفئة أ لا يمكن أن يكون منها كائن إلا إذا وجد كائن من الفئة ب
مثال على ذلك
الرسالة تتكون من مقدمة ومحتوى
يمكن لك أن تتخلى عن المقدمة ولن يضر ذلك بالرسالة
لكن لا يمكنك أن تعتبر أن هناك رسالة ما لم يوجد محتوى
تحياتي
موقع أكثر من رائع
شكراً على الإطراء الذي لا أستحقه في الغالب
تحياتي
thx 4 u.
جزاااااااااكـ الله خير الجزااااء …
مااارااا استفدت من الموضوع…واحمد ربنا على الهوم وركـ اللي عرفني على البيج
تبعتكـ وشكرا…وان شاءالله اكون من تابعينك..
تم اضافة المدونهـ لـ للمفضله واز هوم بيج كمان ^_^
وعندي كم سؤال ماعرف اذا ممكن تقدر تفيدني فيهم …
تقبل مروري
الحمد لله الذي جعلني ميسراً لأمور البشر
بالطبع أي سؤال أنا في الخدمة
تحياتي
الله يعطيك العافيه يالغالي ,
متآبعين وبصمت , الله يجزاك خير وينور دروبك كما تنور دروب اخوانك واخواتك من يهمهم ما تكتب ,,
دعوآتي لك بالتوفيق الله يوفقك ,
لآعدمنآك يآلغلا ,,
تقبل ردي المتواضع
الله يعافيك أخ العمري
وأي أسئلة أو استفسارات أنا في الخدمة
تحياتي
sry bt ma fhemet she o 3ende bkra exam plz bde brnamej ana atab2o
والله يا أخي نفسي أفهم ايش بدك بالضبط
بس على العموم يبدولي أنك قدمت الامتحان
وأي كلام مني هيكون بدون فائدة تذكر
على العموم لو مازلت بحاجة للمساعدة أخبرني
وبرجاء اكتب بالعربي أو الإنجليزي على الأقل حتى أستطيع الفهم
تحياتي
طيب اللي فهمته من اللي بتحكيه الاتي
بدي امنع الراجل يعمل من عندي اوبجكت سيارة الا لو حط عجال وا وا وا
العبرة اللي ما فهمتها انو يعني ليييييش خليت الكونستركتور برايفت !
بدكاش الناس تعمل من الكار تبعتك اوبجكت !
طيب ليش مش عامل ستاتيك فنكشن على الاقل ترجع شوية غراض من الكار تبعتك !؟
ولا انت قصدك انو انت عامل الكار على اساس انو بس مكان بتعمل فيه
assembly
و بيعطيك نتيجة نهائية و بس … على اساس العجلات و البواب و المتور و الاشياء هادي !
و بدكاش حد يقعد يبعبشلك فيه !
تمام الاشي هادا و زي اللوز
هذه المقالة كتبتها في الماضي السحيق
1- منع صانع الكائنات الخالي empty constructor باستخدام private و private تعني أن هذا العضو في الفئة class لا يمكن أن تتم مناداته خارج الفئة
لأن صانع الكائنات الخالي يعني وجود سيارة بدون عجلات
أنا وضعت حل للغات الكائنية جميعاً وما جعلني أفترض أن بعض لغات البرمجة قد تقوم بتوليد صانع كائنات خالي من ذاتها أن الجافا نفسها في حال عدم وجود صانع كائنات بمدخلات تقوم بوضع صانع كائنات خالي من ذاتها
2- استخدام return لإيقاف صناعة الكائن لكن فعلياً هذه غير صحيح لأن اللغات الكائنية تعتمد على تنفيذ صانع الكائنات لبناء كائنات جديدة واستخدامي return لا يقدم أو يؤخر لذا انتهيت إلى رمي خطأ في حال كون المدخلات تساوي Null
حل آخر بعدما تعلمت بعض الأنماط الشهيرة:
1- صانع كائنات بصلاحية عبور private (سواءاً كان الصانع الخالي أو ذو المدخلات)
2- استخدام نمط المصنع البسيط (دالة static تكون مسؤولة عن بناء الكائنات)
تحياتي
انت راجل فخم 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂
أنا غلبان على الآخر 🙂