النتائج 1 إلى 9 من 9

الموضوع: الشرح الوافى للبرمجة الشيئة Object Oriented Programming

  1. #1
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    Post الشرح الوافى للبرمجة الشيئة Object Oriented Programming



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

    بإذن الله سوف يتم شرح Object Oriented Programming وسف يكون تمهيد لشرح MCPD 2010 بالتناوب.


    Object Oriented Programming يعتبر تقنية ساعدة المبرمجين على عمل البرامج بشكل هيكلى Modeling وشبه إلى حد ما الاشياء الموجوده فى حياتنا Like Real-Life Objects, وساعدة أيضا شركات البرمجه على توفير الوقت والمجهود فى عدم كتابة الأكواد المتكرره مرات عديده فى كثير مشارعها, وأيضا حلت مشكلات DLL.
    لو نظرنا فى عالمنا سوف نجد مجموعه من الفئات objects تشترك فى الخصائص Attributes مثل الطول الوزن اللون والسلوكيات Behaviors يمشى يأكل يشم يرى, مثل الإنسان أو الحيوان أو النبات وكلها تحمل صفات مميزه لكل فئه same ,characteristic نفس الشىء فى البرمجة الشيئية فهناك مجموعه من ال Classes تحمل مجموعه من الخصائص data ومجموعه من السلوكيات Methods تحمل صفاتها المميزه.
    مثال:
    Human is a model

    Characteristics
    1- Tall=180
    2- Weight =80

    3- Color eye : black
    4- Name : Ahmed


    Behaviors
    1- Speak
    2- Eat

    3- Drink


    قبل أن نبدء فسأستخدم لغة #C تحت بيئة Net. فى شرحى لأن ده هيكون بإذن الله تمهيد لشرح كورس MCDP2010 من Microsoft
    ماهى عيوب البرمجة التقليدية Traditional Programming
    1- صعوبة الإصلاح difficult maintenance
    2- بطىء التطوير slow development
    مميزات البرمجة الشيئية object oriented programming
    1- سهولة الإصلاح والصيانة Easy maintenance
    2- سهولة التطوير fast development
    OPP Concepts
    OPP مبنية على ثلاثة مفاهيم رئيسية ويمثلون أحجار البناء ل OPP
    Encapsulation
    Inheritance
    Polymorphism
    قبل أن نبدء فى تعريف كل concept يجب أن نعرف أولا الفرق بين Object & Class
    ممكن أسألك سؤال؟ ما الفرق بين الإنسان وأحمد أو محمد أو منى؟الإنسان له طول وله وزن وله حاسة شم وحاسة سمع وحاسة إبصار
    أحمد عبارة عن إنسان طوله 180 سم ووزنه 80 كيلو ونظره 6/6.
    محمد عبارة عن إنسان طوله 170 سم ووزنة 70 كيلو وهكذا
    فالإنسان يضم كل الصفات وكل والخصائص التى يملكها أى إنسان, أما أحمد ومحمد ومنى فهم عبارة عن نسخه من الإنسان لهم خصائصهم وصفات خاصه بكل شخص منهم.
    فى البرمجه لا تختلف كثيرا فال Class يمثله الإنسان والأشخاص يمثلهم Objects.
    Class عبارة عن Software Templates يعرف بداخله Variables & Methods لكى يتم إرسالها إلى Object معين
    Object هو نسخه من الكلاس له هوية خاصه به ويختلف عن Object أخر واخد نسخه من نفس الكلاس.



    كما هو موضح بالصورة فإن هناك كلاس معين إسمه خاص بالموظف يحتوى على إسم الموظف وعمره ورقمه وهناك بعض الموظفين Objects لهم بعض الخواص الخاصه بهم تختلف من موظف عن الأخر من حيث الاسم والعمر ورقمه فى الشركة.
    بعد أن تعرفنا على الفرق بين ال Object و Class
    هيا بنا نتعرف على شىء مهم جدا أيضا وهو ما الفرق بين Reference Type & Value Type
    Reference Type & Value Type
    Value type وتنقسم إلى Simple Type& Enum & Structs وهى ال Types المحدده ب Size معين كما بالشكل التالى.
    Reference Type عباره عن User-Defined Types أى Types يتم تحديد ال Size بواسطة ال User كما بالشكل التالى.

    هيا بنا نتعرف على شىء مهم جدا وهو كيف يتم تخزين ال Object فى ال Memory


    Represent Object in Memory

    يجب أن نعرف أن Net Framework. يقسم ال Memory الى قسمين
    Heap
    Stack
    دعنا نعرف جميعا بأن ال Value Type يتم تخزينه فى Stack أما Reference Type يتم تخزينة فى ال Heap كما هو موضح فى الشكل التالى
    كما وضحنا سابقا بأن ال Value Type يتم تخزينه فى Stack أما Reference Type يتم تخزينة فى ال Heap يشز عن هذا القاعدة ال Variables المعرفة داخل class تم عمل له Object( أنا عارف أن كده الأمور ممكن ماتكنش واضحه) لكن شوف أوضحها فى الشكل التالى:
    using System;
    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    float Fet;
    Human Mohamed = new Human();
    Human Ahmed = Mohamed;
    Fet=Mohamed.fetness(180, 80);
    Console.WriteLine(Fet);
    }
    }
    class Human
    {
    float tall;
    float weight;
    public float fetness(float _T,float _W)
    {
    tall = _T;
    weight = _W;
    return tall - weight;
    }
    }
    }
    فنلاحظ أن Tall و ال Weight تم تخزينهم فى ال Heap وليس Stack مع أنهم Value Type
    الأن جاء الوقت للدخول بتعمق فى ال Object Orianted Programing
    وسوف نبدء ب Encapsulation


    :ah7: المصدر: مدونة مبرمجون بلا حدود

  2. #2
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    Post الدرس الثانى: Encapsulation أو التغليف

    قبل أن نتعرض ل Encapsulation سوف أعطى سؤال بسيط لكى نفكر فى مخرجات البرنامج وفى أخر الدرس سوف أعطى الحل بإذن الله


    ما هى مخرجات البرنامج التالى:



    إذا وجدت صعوبة فى الحل فيجب أن تراجع الدرس السابق


    Encapsulation

    الهدف:

    أولا: هدف بالنسبة للمبرمج المنشىء لل Model


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


    For programmers whom build class, encapsulation represents a model which contents a set of element which has the same states and behaviors

    ثانياً: هدف بالنسبة للمبرمج المستخدم لل Model

    هو عمليه إخفاء للكود الخاص بال Model لان فى هذه الحالة المبرمج المستخدم للموديول لا يهمه فى المقام الأول الكود الذى تم عمل به ال Model ولكن يهمه ماذا يفعل هذا الموديول.


    For programmers whom use the class, encapsulation represents a data hidden where programmer will use the functionality of the class without know its implementation and all things that programmer care about is that the class does and achieves my goal requirements
    حل المثال السابق



    الدرس التالى إن شاء الله سوف يكون Inheritance


    المصدر: :ah7:مدونة مبرمجون بلا حدود

  3. #3
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    Post

    سوف يتم وضع باقى الشرح فى القريب العاجل
    إدعوا لى بالتوفيق

  4. #4
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    Post الدرس الثالث Inheritance أو الوراثة

    Inheritance أو التوريث



    تعريفه: هو القدرة على إنشاء Class من كلاس موجود مسبقاً عن طريق إستدعائه.


    Ability of a new class to be created, from an existing class by extending it, is called inheritance



    الهدف منه: إعادة إستخدام الكود Reusing of Code


    فى Inheritance نوعين من Classes.


    Parent Class أو Super Class وهو الكلاس الأب الذى يتم إنشقاق منه كلاس الإبن.
    Child Class أو Sub Class وهو الكلاس الإبن المنشق من الأب.



    يوجد علاقة بين Sub class و Super Class


    وهى علاقه is a Relationship, بمعنى أن Male Is a Human


    وهناك علاقه أخرى لكنها ليست علاقه توريث وهى Has a Relationship سوف نتحدث عنها فى وقتها.


    سؤال فرضا أنى عملت كلاس ولا أريد أحد أن يعمل له توريث ما الحل؟؟


    الحل هو إستخدام Key Word إسمها Sealed قبل ال Class


    Sealed Class Human


    }

    any code

    }

    لا يمكن لكلاس أن يورث أكثر من كلاس لماذا؟؟

    لو فرضنا أن هناك ثلاث كلاسات Class A و Class B و Class C و كلاس B ورث من A وكلاس C ورث من A إلى الأن لا يوجد مشكله المشكله لو كلاس C ورث من B هنا هيحدث خطأ بسبب Methods Duplicated هذا الخطأ يسمى Diamond Problem


    class A

    {



    }

    class B : A //B inherit from A - OK

    {

    }

    class c : A //C inherit from A - OK

    {

    }

    class c : B // C inherit from B - Diamond Problem

    {



    }






  5. #5
    عضو
    تاريخ التسجيل
    May 2008
    المشاركات
    114
    الدولة: Egypt
    معدل تقييم المستوى
    0

    رد: الشرح الوافى للبرمجة الشيئة Object Oriented Programming

    السلام عليكم
    بارك الله فيك اخى الفاضل
    oop مهم جدا لاى مبرمج دوت نت

    اكمل على بركه الله

  6. #6
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    Post Polymorphism

    الدرس الرابع: Polymorphism


    Polymorphism هى كلمة منشقه من كلمتين باللغة الاتينية Poly Morph بمعنى تعدد الأشكال وهناك ثلاثة مفاهيم من تعدد الأشكال




    1-Overloading

    2-Overrides


    3-Inheritance

    ممكن سؤال يختر فى بالك الأن إزاى Inheritance يمكن أن يكون به تعدد للإشكال؟





    والإجابة سوف تعرفها فى الشرح التالى.




    أولاً: Overloading




    هو القدرة على تعريف أكثر من Method بنفس الإسم ولكن بإختلاف التوقيع أو .Signature




    الغرض:




    هو عمل Package لأكثر من Method بنفس الإسم وبإختلاف التنفيذ .Implementation




    ماهو التوقيع أو Signature؟




    Signature عبارة عن ثلاثة أشياء




    1-Access Modifier

    2-Return Type

    3-No. of Parameters






    ملحوظه: لو تم تغير Access Modifier أو Return Type فقط يحدث Compiler Error





    ثانياً: Overriding




    عندما تكون Methods موجوده فى كلاس منشق Derived Class تملك نفس الإسماء فى Base Class ونريد أن نغير الكود بداخلها Implementation هذه العملية تسمى Overriding.




    الغرض:

    إضافة إجراءات جديدة إلى نفس ال Method الموجوده فى Base class أو إلغاء هذا الإجراء ووضع إجراء جديد.




    Add New Functionality or enhance the method performance

    Cancel the old implementation of method and write new




    لاحظ أننى أحيانا بضع التعريف أيضا بالغة الإنجليزية لأنه فى بعض الأحيان يكون أوضح للأننا بطبيعة الحال بنتعامل مع لغة برمجه تستعمل اللغة الإنجليزية فى إجراءاتها.




    الكلمات التى تستخدم فى عملية Overriding:




    1-Virtual

    2-Override

    3-New
    4-Abstract


    سوف نستخدم الأن New و Override و New وفى الدروس القادمة بإذن الله سوف نتعرض ل Abstract


    أولا: Virtual وهى Key word عند كتابتها فى Method داخل كلاس أب Parent تعنى أن هذه ال Method يمكن عمل له تعديل عليها فى الكلاس الإبن Child class.


    ثانيا: Override وهى Key word تكتب فى ال Method المراد التعديل على الكود المنفذ لها داخل كلاس الابن والموجوده مسبقا فى كلاس الاب.


    ثالثا: New عند كتابتها فى ال Method الموجوده فى كلاس الابن والموجودة مسبقا فى الكلاس الاب تعنى بأن ال Method الجديده تلغى وجود ال Method المنشقه من الكلاس الأب ولا يمكن أن تنشق مره أخرى إلى كلاس جديدة.


    رابعا: Abstract سوف يتم الحديث عنها بشىء من التفصيل فى الدروس القدمة إن شاء الله


    Virtual keyword is used to modify a method declaration, and allow it to be overridden in a derived class.



    Override modifier is required to extend or modify the abstract or virtual implementation of an inherited method



    New – When used as a modifier, the new keyword explicitly hides a member inherited from a base class. Hiding an inherited member means that the derived version of the member replaces the base-class version



    ملحوظة: يسمح بعمل Multilevel Overrides



    ثالثأ: Inheritance
    البعض ممكن أن يتسائل ما علاقه Inheritance بال Polymorphism

    أقول لكم بأن ال Polymorphism هو مبدء تعدد الأشكال و ال Inheritance ينطبق عليه هذا المبدء وهذا يتضح فى الميثال التالى:




    لو فرضنا أن يوجد كلاس أسمه Human فيه Method أسمها Speak, ويوجد أيضا كلاس أسمه Mute أى أخرص وبها Two Method واحده Speak منشقه من الكلاس الأب وأخرى NonSpeak.

    ولدينا شخصين Ahmed و Ali لا يستطعا الكلام, فهنا يمكن Object من كلاس Mute بطريقتين مختلفتين.



    إضغط على الصورة للتكبير

    ما هو الفرق وما الفائدة؟؟؟

    الفرق بأن فى حالة Human Ali = New Mute فإننا بنقيد ali بالأسماء وأعداد ال Method الموجوده فى Human

    بمعنى لو أردنا أن نستدعى NonSpeak Method من Mute يحدث خطأ لان هذه ال Method غير موجوده فى Human.

    Ali.NonSpeak Error



  7. #7
    عضو
    تاريخ التسجيل
    Mar 2007
    المشاركات
    146
    الدولة: Iraq
    معدل تقييم المستوى
    11

    رد: الشرح الوافى للبرمجة الشيئة Object Oriented Programming

    شكرا لك يا اخي على هذا المجهود والتلخيص الذي قمت به ..

  8. #8
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    3
    معدل تقييم المستوى
    0

    رد: الشرح الوافى للبرمجة الشيئة Object Oriented Programming

    جزاكم الله خيرا يأخى ولكن يجب عليك ذكر المصدر الذى اوصلت لنا منة المعلومة

    يمكن للجميع تحميل ذلك فى فيديو حى للمهندس احمد ربيع من هنا جزاة الله عنا خيرا.

    عذرا أخى ولكنى وجدتها حق فارادت ان اقولها.

  9. #9
    عضوية جديدة
    تاريخ التسجيل
    Nov 2011
    المشاركات
    10
    معدل تقييم المستوى
    0

    رد: الشرح الوافى للبرمجة الشيئة Object Oriented Programming



    اقتباس المشاركة الأصلية كتبت بواسطة Medo2012 مشاهدة المشاركة
    جزاكم الله خيرا يأخى ولكن يجب عليك ذكر المصدر الذى اوصلت لنا منة المعلومة

    يمكن للجميع تحميل ذلك فى فيديو حى للمهندس احمد ربيع من هنا جزاة الله عنا خيرا.

    عذرا أخى ولكنى وجدتها حق فارادت ان اقولها.
    ومن أين أتى مهندس أحمد بتلك المعلومات ؟؟؟!!! إليس بالتعليم من غيره؟؟؟

    هذه الدروس هى تلخيص شخصى من مجهودى الخاص بالإستعانه من الغير مثل أستاذى الفاضل م. أحمد ربيع جزاه الله خيرا عنا جميعا وله الفضل الاكبر والموضوع سوف يستكمل بمصادر أخرى أيضا من تلخيصى وليس Copy Paste من مصادر

المواضيع المتشابهه

  1. Object Oriented
    بواسطة mhdalaa في المنتدى البرمجه والتصميمات الفنيه ( الجرافيكس )
    مشاركات: 0
    آخر مشاركة: 10-03-2011, 19:52
  2. كيف افتح هذا الملف Wrox - Beginning C# 3.0 An Introduction to Object Oriented Program
    بواسطة aaddeel في المنتدى مشاكل الحاسب وحلولها
    مشاركات: 1
    آخر مشاركة: 22-11-2010, 15:07

الكلمات الدلالية لهذا الموضوع

المفضلات

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •