Monday, January 28, 2013

WPF الدرس السادس من دروس تعلم تقنية

يركز الدرس السادس على بناء الواجه الرسومية User Interface بواسطة لغة XAML وتم التطرق الى بعض اساسيات نمط MVVM من خلال بناء  ViewModel وتضمينه Business Logic ,وقد أوضحنا في الدرس ايضا عملية Binding وأرجو تحميل البرنامج من الرابط التالي :


Sunday, January 27, 2013

WPF الدرس الخامس من تقنية

يركز الدرس على أنشاء الواجهات الرسومية UI وذلك بأستخدام لغة XAML ويتم التطرق حول أهمية Style وكيفية عمل مشاركة بالمصادر ولم ندخل الى كتابة الأكواد المنطقية بل كان التركيز على الواجهات فقط. 


Thursday, January 24, 2013

OOP مفهوم الكائنية المنحى

المقدمة  :

كائنية المنحى او تدعى بالموجه هي في الأصل منهجية لتطوير البرامجيات , تستخدم طرق واساليب برمجية مختلفة عن الطرق البرمجية الأجرائية  procedural programming  السابقة ومنها لغة  (C, Pascal, etc.) التي تعمل بالطريقة الخطية بحيث يكون البرنامج عبارةعن سلسة من الخطوات تنفذ خطوة بعد خطوة هذه الطريقة تصلح للبرامج الصغيرة  ولذلك تم أستبدال هذه الطريقة بمنهجية OOP بسبب تعقد المهام الحاسوبية وزيادة حجم المشاريع والكلف المقدرة , فقد قامت هذه المنهجية بتسهيل حل المشاكل وزيادة المبدأ الوظيفي وتقليل تكرارت الكود وتقسيم المشاريع الضخمة الى عدة قطع يتم توزيعها الى  الفريق البرمجي الى أخره من الفوائد الأخرى.مفهوم الكائنية المنحنى يركز على خلق شبكة من الكائنات Objects محددة بفئات او أصناف تحدد معالمها تدعى Classes التي تحوي على الخصائص والصفات والسلوكيات لمجموعة من الكائنات المتشابهة ويمكن أن يعرف على انه قالب Template لاجل كائن معين والكائن بدوره هو مثيل instance لهذا القالب او الفئة . 

المحتوى :


1- الكائنات Objects
الكائن يعرف فيزيائيا بأنه  يمثل كل الأشياء things الموجوة حولنا  سواء مادي او برمجي او كائنات حية , فالأنسان هو كائن يتفاعل مع الكائنات التي حوله ويملك صفات وخصائص ومنها (اللون ,الطول,الوزن,... ) وفي نفس الوقت يملك سلوكيات او مايسمى بأفعال يقوم بها ومنها(الأكل,المشي,التكلم,....).دعنا نأخذ مثال يوضح مفهوم الكائن لنفترض أنك مدير شؤون الموظفين تدعى أحمد ولديك وظيفة شاغرة قمت بالأعلان عنها في الأنترنيت واستلمت عدة طلبات , وبعد أختبار جميع الخيارات قمت بالأتصال بأحد المرشحين للوظيفة لأجل اللقاء معه والمرشحة تدعى مريم لننظر الصورة التالية التي توضح الفكرة:



من الصورة نرى حسب نظرة الكائنية المنحى كائنين يمتلك كلا منهما على صفات وسلوكيات قد تكون متشابهة او مختلفة في تركيبها.

2- الفئات Classes 
كل الكائنات يمكن أن توضع ضمن حدود او فئة خاصة تحدد حدودها وذلك لأجل تبسيط مفهوم الكائنات أضافة الى الوصول الى مبدأ التجريد abstract ,فلو أخذنا أحمد ومريم يمكننا أن نخلق فئة,هذه الفئة تملك جميع الصفات والسلوكيات التي تجمعهم معا ويمكن أن نسميها Person بحيث يكون عبارة عن قالب لوصف الكائنات ويمكن أن نقسم الفئة Class الى مكونين رئيسيين هما :

* الصفات (Properties)وهي صفات وخصائص توصف الكائن.
* الطرق (Methods) وبعض الأحيان تسمى بالأفعال (action) التي يتم ربطها بالكائن. 

أذن نأتي الى وصف المكونين ونطبقها على مثالنا.

صفات الفئة Class properties :
وهي عبارة عن البيانات التي تريد أن تسجلها مع الكائن, فيمكننا أن نخلق صفات عامة تجمع الكائنين أحمد ومريم توضع في الفئة Person أنظر الى الصورة التالية التي توضح الصفات :


طرق وأفعال الفئة(Class methods):
أن كل فئة تحوي على عدة أفعال يقوم بها الكائن لأجل التلاعب بالبيانات الموجودة داخل صفات الكائن . فلو أخذنا الفئة Person لوجدنا أن كلا من أحمد ومريم يملكان عدة أفعال ومنها التحدث , المشي, الكتابة الى أخره من الأفعال .وفي كل الأحوال تختلف الأفعال المستخدمة في العالم الحقيقي للشركة لكننا الأن لسنا مهتمين بالجانب التطبيقي بل نريد أن نوصل مفهوم وسياق OOP أذن يمكننا أن نرى الصورة التالية التي توضح الصفات والسلوكيات ضمن فئة Person :


 أردت أن أوضح من هذا المثال بأن مريم هي عبارة عن كائن جديد جاء الى الشركة لكي تعمل بالوظيفة الشاغرة وبالأعتماد على مبدأ OOP فيجب علينا خلق كائن خاص بها لأجل تسجيل بياناتها ويكون هذا الكائن تابع الى الفئة التي تم خلقها Person والتي ينتمي اليها أحمد لأنهما يتشاركا بالصفات والسلوكيات لكن البيانات الداخليةالتي تحملها المواصفات Properties مختلفة بالطبع عن أحمد.أذن لو ذهبنا الى العالم الحقيقي قليلا فعندما يأتي موظف جديد الى الشركة سوف نعرف مباشرة بأنه سوف يتم خلق كائن له او يمكن أن نقول مثيل instance يمثل الفئة Person وبعد خلق الكائن يتم تعبئة مواصفاته بالبيانات والتلاعب بهذه البيانات عن طريق الأفعال والسلوكيات.

وكل من الكائنات والفئات يتم ترابطها من خلال علاقات هذه العلاقات والمفاهيم تعكس مفهوم OOP ويمكن أن تصنف الى ألأنواع التالية :

 

·     التغليف (Encapsulation) : وهي أن كل شخص يملك معلومات شخصية مثل بيانات كارت البنك او بيانات سرية, ويجب أن تكون هذه المعلومات مغلفة لأجل أن لايصل لها شخص واقصد كائن او فئة معينة بمعنى تبقى سرية للشخص المالك اي مغلفة داخل الكائن .

·   التجريد (Abstraction)  : وهي أن كل شخص يملك بيانات مثل أسم الشخص , عنوان السكن , الهاتف الى أخره. هذه البيانات يمكن للشخص أن يتشارك مع شخص أخر من خلال أضهارها له او أضهارها للكل او أضهار بعضها حسب الحاجة  ويمكن عمل هذا بأستخدام الكلمات المحجورة   Public , Protected  وممكن أن أعطي مثال على المجرد وهو شاحن البضاعة يهمه عندما يشحن البضاعة من مكان الى أخر وزن وحجم البضاعة ولايهمه لون البضاعة.

·   التعددية(Polymorphism) : وهي التنفيذ المتعدد لنفس الواجهة بحيث تعتمد على مصطلح يسمى Overloading  الذي يعكس هذه التعددية ,ونقصد من هذا أن جميع الأنواع يمكنهم أن يتحدثوا مثال ألأنسان , الحيوان, الأسماك كل هذه ألأنوع تتحدث بلغة مختلفة أذن Polymorphism  كيف  يحل هذه المشكلة : خصائص التكلم ممكن أن تكون مختلفة من حيث الأبناء عن ألاب او النوع الرئيسي او يمكن أن تكون متشابهة بمعنى الأنسان يتحدث لغة البشر لكن الأبناء الذين يرثوا من الكائن الأب(الأنسان) يمكن أن يتحدثو بلغات مختلفة لكنها في كل الأحوال لغة بشرية .

·   الوراثة(Inheritance)   : وهو أن الشخص ممكن أن يرث بعض الصفات والسلوكيات من الأب وهذا منطقي , برمجيا يمكن الأستفادة من هذا النوع بعمل كلاس أب رئيسي parent class مثلا عمل Person وخلق أبناء child class  يرثوا منه مثلا Employee, Customer  


 في المقالات القادمة سوف أقوم بشرح كل من المفاهيم الاربعة أعلاه مع التطبيق.

Monday, January 21, 2013

C# مطوري


السلام عليكم , أصدقائي في العالم التقني تم بعون الله افتتاح منتدى مطوري #C و منصة Net.  في +Google الرابط التالي : مطوري #C
المواضيع الرئيسية للمنتدى على النحو التالي :


مناقشة وحوار : يهتم بالحوارات مابين الأعضاء وطرح المواضيع والأسئلة ومناقشتها من قبل الأعضاء والمشاركين.

أكواد برمجية : يهتم بكتابة الأكواد البرمجية للمبتدأيين وايضا التركيزعلى كتابة الأكواد الذكية والمختصرة الخاصة بلغة #C او الأكواد الجديدة لتعم الفائدة على الأخرين. 
الأنماط : يهتم هذا الحقل بالأنماط التي تسهل عمل المبرمج وتنظم الأكواد ضمن طبقات او مستويات معينة .
أخبار Net. : يهتم بتقنيات Net. والأخبار التقنية الحديثة حول المنصات والمكتبات والمقالات الخاصة بنطاق Net.
بناء تطبيقات ويندوز: يركز على بناء التطبيقات التي تعمل تحت منصة Windows 
افكار ومشاريع   : يهتم الحقل بجميع الأفكار البرمجية والمشاريع التي قام بها الأعضاء 

  • الدروس والمصادر التعليمية : يركز على الدروس والكتب الحديثة والمصادر الأخرى

سوف أكون بأنتظار أرائكم واقتراحاتكم مباشرة من خلال التعليق المباشر او بأمكانكم أرسال أقتراحاتكم الى الايميل الخاص بي skmf84@gmail.com

Thursday, January 17, 2013

Data Binding (Tow-Way)

يركز الدرس الرابع على شرح خاصية DataBinding في تقنية WPF وكيفية انعكاس التغيرات مابين المصدر Source والهدف Target , وتم في الدرس أخذ الجانب التطبيقي وذلك بكتابة برنامج بسيط يعبر عن هذه الخاصية .
أرجو تحميل البرنامج مع العرض  :




Friday, January 11, 2013

Data Binding

يركز الدرس على خاصية DataBinding المتواجدة في تقنية WPF , Silverlight .تحتوي هذه الخاصية على الكثير من المميزات والخصائص التي سوف يتم شرحها من خلال هذا الدرس والدروس القادمة وقد تم أرفاق البرنامج مع العرض التقديمي لأجل زيادة المنفعة .

تحميل البرنامج + العرض :