كيف تقوم بعمل Composition بمعناها في UML
يوليو 24th, 2008 بواسطة: admin |
السلام عليكم
بين الفينة والأخرى
أفكر في أن أتوقف عن التدوين
تسألوني عن السبب
لي عام وعشرون يوماً أدون
أحاول أن أكتب ما هو مفيد
لكن يبدو أن شعبيتي تخطت جميع الحدود
حتى التعليقات على تدويناتي شحيحة جداً
تصوروا كتبت أنا 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
تحياتي
انا من متابعينك على الرغم من انه توجد اشياء تذكرها لا اعرف عنها شي
ولكنني نادرا ما اعلق وهذا لا يعني انني لا استمتع بقراءة مواضيعك
اتمنى لك التوفيق .. ولا تنقطع عن توفير معلومات مفيده
أتمنى أن استطيع افادة مستخدمين الانترنت كما استفدت انا منهم
شكراً لك weeknds
بصراحة ليس في نيتي ترك التدوين
لأني أجد فيه منتفسي الخاص
لكن الإنسان يمر بأوقات يحس فيها بالإحباط
أنت تكتب فمن يقرأ ما تكتب
تصوري أثر ذلك على المدون
شكراً لك على التشجيع
ليس هذا بالشيء الصعب
تحياتي
مممم
وأنا متابعه أيضا .
اخي .. لا تتركـ التدوين .. فمدونتكـ رائعة ..
ولا تفكر في عدد تاركي التعليق .. فقط فكر في عدد القراء .
فأنا مثلا .. أقرأ لكـ دوما ولا أتركـ تعليق سوى مرات قليله .
دمت ودامت المدونه .
شكراً أميرة
على كلماتك الجميلة
أنا لا أهتم كثيراً للتعليق
لكني أحب أن أعرف أن ما أكتب فيه
يهم أحداً ما
أيا كان هذا الأحد
تحياتي
السلام عليكم
موفقين انشاءالله
وعليكم السلام
الجميع بإذن الله
بالمناسبة تعليق غريب
هل هناك سبام عربي D:
تحياتي
مشكور أخي علاء وموفق بإذن الله
على الرحب والسعة محمد
تحياتي
السلام وعليكم:اطلب منك ان تعطيني معلومات اكثر عن كيفيه تكوين الانشاء
بصراحة لم أفهم المقصود بالضبط
لكن للتوضيح أنا أتكلم عن نوع من أنواع العلاقات الموجودة في UML
وهي تعني أن الفئة أ لا يمكن أن يكون منها كائن إلا إذا وجد كائن من الفئة ب
مثال على ذلك
الرسالة تتكون من مقدمة ومحتوى
يمكن لك أن تتخلى عن المقدمة ولن يضر ذلك بالرسالة
لكن لا يمكنك أن تعتبر أن هناك رسالة ما لم يوجد محتوى
تحياتي