Sony Ericsson W960i Review

October 10th, 2007

In this article i review the new W960i Sony Ericsson mobile phone .

i captured this video at Gitex 2007 , and the phone will be avilable in ME at the end of this year.

Sony Ericsson W960i

Here is some the features of W960i:

Size
  • 109 x 55 x 16 mm
  • 4.3 x 2.1 x 0.6 inches
Weight
  • 119 gr
  • 4.2 oz
Available colors
Screen
  • 262,144 color touchscreen
  • 240×320 pixel
Memory
  • Phone memory 8 GB

to see full list of features : W960i Features

I think Sony Ericsson answers Apple

سلسلة C# و البرمجة الغرضية التوجه - 1

October 8th, 2007

سلسلة C# و البرمجة الغرضية التوجه

هذه السلسلة لا تبدأ من الصفر إلى النهاية لتعلمك البرمجة غرضية التوجه مع C# بل هي تسليط للضوء على بعض النقاط للتعامل مع OOP في C# , اذا كنت مبتدأاً او لا تعلم شيئا عن مبادئ البرمجة غرضية التوجه او C# فلا انصحك بمتابعة هذه السلسلة , يمكنك ان تبحث عن مقالات على الانترنت او في الكتب تشرح لك مفاهيم OOP .

ملاحظة : اية سلسلة اطرحها او طرحتها لا اعني بها اني ملتزم بأن أكمل حتى النهاية او اتابع بها بشكل دوري فللحياة مشاغلها لذا اعذروني.

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

ماذا ستتعلم من هذا الدرس :

سيكون هذا الدرس شرحا لبعض ميزات لغة C Sharp و التي ستستخدمها عندما تريد الاستفادة من خصائص البرمجة غرضية التوجه (Object Oriented Programming (OOP)) و تحديدا انا اقصد الوراثة Inheritance.

هذا الدرس مطبق على :

  • Microsoft Visual Studio .NET 2005
  • Windows XP Professional SP2

مقدمة :

لغة البرمجة C# من اللغات الحديثة و قد بنيت هذه اللغة منذ الصفر لتستفيد من خصائص البرمجة غرضية التوجه , حاولت C# ان تضيف و تجمع في تعريفها للـOOP معظم الميزات المتاحة في اللغات غرضية التوجه ( و حتى بعض الميزات الموجودة في لغات ليست غرضية التوجه مثل Visual Basic ) و بالمقابل تخلت عن بعض امور الـ OOP التي تسبب تعقيدا للمبرمج او انها تستخدم نادرا( مثل الوراثة المتعددة حيث تسمح C++ للصنف Class بأن يرث من أكثر من صنف Class بينما في C# لا يمكن للصنف Class ان يرث سوى من صنف Class واحد )

في هذا الدرس سنتحدث عن الطرائق الافتراضية (Virtual Methods) و إخفاء الطرائق (Hiding Methods) في C# . (اقصد بالطريقة Method هي إما إجرائية Procedure او دالة Function )

الشرح:

الطرائق الافتراضية Virtual Methods :

 

عندما تستخدم الوراثة (Inheritance) فإنه على الأغلب سيكون لديك صنف أب (Base Class)

و صنف ابنDerived Class) ) و سيكون لديك على الأغلب دالة او إجرائية في الصنف الاب

و ترغب بأن تعطي هذه الدالة وظيفة أخرى في الصنف الابن مع الحفاظ مع اسمها , هنا يأتي دور الكلمة المحجوزة virtual استخدام هذه الكلمة المحجوزة مع اية طريقة Method في الصنف الاب يتيح لنا ان نتخطى Override هذه الدالة و نستخدمها بوظائفية ثانية في الصنف الابن لكنك مضطر هنا ان تستخدم الكلمة المحجوزة override قبل اسم الدالة في الصنف الابن

مثال على ذلك :

class MyBaseClass

{

public virtual string VirtualMethod()

{

return “This method is virtual and defiend in MyBaseClass”;

}

}

class MyDrivedClass : MyBaseClass

{

public override string VirtualMethod()

{

return “This method is an override and defiend in MyDrivedClass”;

}

}

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

ثم أنشأنا الصنف الابن MyDrivedClass الذي يرث من الصنف MyBaseClass

و عرفنا فيه الدالة VirtualMethod و وضعنا في تعريفها الكلمة المحجوزة override لنقوم بتخطيها و تعديل عملها في الصنف الابن

و بالتالي اصبح لدينا صنفين احدهما أب و الاخر ابن و فيهما دالتان متطابقتان من ناحية التعريف لكنهما مختلفتان وظيفيا

إخفاء الطرائق Hiding Methods :

إخفاء الطرائق يحدث عندما تعرف دالة في الصنف الاب لكنك لا تضع في تعريفها الكلمة المحجوزة virtual

ثم تقوم بوضع دالة متطابقة من ناحية التعريف مع الدالة السابقة في الصنف الابن لكنها مختلفة معها وظائفيا كما في المثال التالي:

class MyBaseClass

{

public string HidenMethod()

{

return “This method is an Hiden and defiend in MyBaseClass”;

}

}

class MyDrivedClass : MyBaseClass

{

public string HidenMethod()

{

return “This method is an Hiden and defiend in MyDrivedClass”;

}

}

حسنا ستعمل معك الشيفرة السابقة لكن من الافضل ان تستخدم الطرائق الافتراضية و تقوم بـ override

كما أن القيام بإخفاء الطرائق قد يؤدي إلى حصول أخطاء في استدعاء الدالة المناسبة لذا يظهر لك مترجم الـ C# رسالة تنبيه عند تنفيذ برنامجك تنبهك إلى ان قيامك بذلك ستسبب بعملية إخفاء للدالة

أوبس !! هل حقا ما أراه؟؟ -2

October 6th, 2007
أهلا بكم نلتقي الان مع الجزء الثاني من سلسلة الظواهر المدهشة في الجز الاول تحدثت عن مشكلة التعامل مع اعداد الفاصلة العائمة في هذا الجزء نتحدثعن ظاهرة جديدة فلنبدأ انظر معي للشيفرة التالية:

byte x = 1;
byte y = 2;
byte z = x + y;

قد تقول في نفسك ما هذه الشيفرة السخيفة مجرد جمع عددين ؟ سأسألك سؤالا بسيطا ماذا سينتج عند تنفيذ الشيفرة السابقة , ربما ستجيب بكل بساطة نحن نعرف متحولا اسمه x من النوع byte و نسند له القيمة 1 و نعرف متحولا اخر اسمه y من النوع byte و نسند له القيمة 2 ثم نعرف متحولا ثالثا z من النوع byte أيضا و نسند له ناتج جمع القيم في المتحولين x و y اي 1+2 و بالتالي ستكون القيمة المخزنة في هذا المتحول هي 3 . أسف لأني سأخيب ظنك ناتج تنفيذ الشيفرة السابقة هو أنها لن تنفذ أصلا لأن مترجم اللغة Compiler سيعطي رسالة خطأ عند ترجمة الشيفرة و ستتوقف عملية الترجمة و بالتالي لن يتم التنفيذ , نص الرسالة هو

” Cannot implicitly convert type ‘int’ to ‘byte’. An explicit conversion exists (are you missing a cast?) “

كما توضح الصورة التالية: int2byeErr قد تستغرب من نص الرسالة السابقة فهي تقول انه لا يمكن للمترجم أن يقوم بعملية تحويل ضمني (مباشر) من النوع int (الذي هو ناتج الجمع) إلى النوع byte (و الذي هو نوع المتحول z الذي نخزن فيه نتيجة الجمع) و انه ان كنت فعلا تنوي التحويل من int إلى byte فعليك ان تستخدم دوال او طرق التحويل بنفسك. حسنا أشعر بوقع الصدمة التي تحسها , ربما تقول في نفسك من اين اتى النوع int أصلا؟ نحن قمنا بجمع متحولين كل منهما من نوع byte قيمة الأول 1 و قيمة الثاني 2 و كان الناتج هو الرقم 3 و بما ان مجال الارقام للنوع byte هو من 0 إلى 255 فبالتالي هو قادر على على استيعاب العدد 3 الذي نتج عن الجمع فلماذا كان ناتج الجمع من النوع int ؟ هممم قد يكون هذا الكلام منطقيا لكن مترجم اللغة له رأي أخر النوع byte يتألف كما يشير اسمه من 1 Byte اي 8 bit و عندما نجمع رقمين من النوع byte نكون نجمع 8 bit مع 8 bit و سيكون على الأغلب من غير الممكن وضع قيمة ناتج هذا الجمع في 8 bit اي Byte واحد لذا يقوم المترجم بالتعامل مع القيمة الناتجة على انها من النوع int لذا لتجاوز هذه المشكلة يكون عليك إما أن تقوم بتحويل الناتج من int إلى byte باستخدام إحدى طرائق تحويل البيانات لكن انتبه هذا قد يكلفك خسارة بعض البيانات او الحصول على نتائج غير دقيقة لأنك تحول من نوع أكبر إلى نوع أصغر الحل الأخر و الأفضل أن تخزن الناتج في متحول من نوع يتسع له مثل int أو long فتكون الشيفرة بعد التعديل:

byte x = 1;
byte y = 2;
int z = x + y;

نلتقي في الجزء الثالث مع حالة جديدة.

تمام كوجان في 06/10/2007 ُ
Email : TammamKoujan@Gmail.com
يجوز نشر هذه المقالة أو أجزاء منها بشرط المحافظة على اسم الكاتب و ذكر المصدر

Hama - Syria 2007 - Video 5

October 4th, 2007
مجموعة من الصور التي ألتقطتها (ما عدا الصورة الاولى فلست انا الذي التقطتها)

Hama - Syria 2007 - Video 4

October 2nd, 2007
فيديو اخر من تصويري لمدينة حماة الرائعة

Dubai Metro

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

Hama - Syria 2007 - Video 3

September 5th, 2007
فيديو أخر من تصويري

Hama - Syria 2007 - Video 2

August 28th, 2007
فيديو أخر من تصويري

و مرت الايام

August 27th, 2007
اهلا بكم اعود إليكم من إجازتي القصيرة لكن المليئة بكثير من الأمور منها الجميل و منها المحزن هناك الكثير لأكتبه و هناك الكثير لأعرضه لكن كالعادة سأكتب على قدر ما يتوفر لي من الوقت و الفراغ نبدأ الان بمقطع فيديو صورته لمدينتي حماة خلال الاجازة

أستودعكم الله

August 2nd, 2007
في اللحظة التي تقرؤون فيها هذه الرسالة تكون طائرتي قد انطلقت باتجاه سوريا حيث سأقضي إجازة قصيرة ستكون فرصة لأن أنعش نفسيتي و أجددها حيث سأقوم بالسياحة و التجول في كثير من المناطق السورية الجميلة خلال هذه الفترة سأخذ أجازة من المدونة أيضا لكن عندما أعود سيكون في جعبتي الكثير و قد تكون هذه الإجازة فرصة لأتحدث عما سيمر معي و ان اضع بعض المواضيع و الاخبار الحية عن سوري و بالتالي ترقبوا مواضيع مدونتي من سوريا لمن يسأل كيف يتم نشر الموضوع في اللحظة التي تكون فيها طائرتي محلقة في الجو أقول أني استخدمت خاصية النشر الالي للمواضيع و هي ميزة رائعة في مدونات ووردبرس اخر وصية ريكا بلاش لعب هنا و انا مش موجود ادعوا لي بالتوفيق