درس مهم فى ( Object-Oriented Programming (OOP

الموضوع في 'برمجة وتطوير وتصميم المواقع والمنتديات' بواسطة المصـرى, بتاريخ ‏مايو 6, 2007.

  1. المصـرى

    المصـرى Active Member

    إنضم إلينا في:
    ‏أغسطس 25, 2006
    المشاركات:
    208
    الإعجابات المتلقاة:
    35
    نقاط الجوائز:
    28
    الوظيفة:
    study
    مكان الإقامة:
    EGYPT


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

    مقدمة :

    ( Object-Oriented Programming (OOP ​

    لغة تلتزم بقواعد البرمجة بواسطة الأهداف حيث وفرت كثير من الجهد الذي كان يبذل باستخدام البرمجة التقليدية ، حيث كانت البرمجة التقليدية توفر للمبرمج مكتبة من الدوال إضافة إلى تركيب تقليدي للبرنامج وعلى المبرمج أن يستعمل الدوال مع تركيب البرنامج لإنشاء التطبيقات مما يضطره لكتابة السطور الكثيرة أكثر من مرة ؛ لقد كانت وحدة بناء البرنامج هي الدالة .. في حين أتت البرمجة بواسطة الأهداف بفكرة جديدة هي إنشاء عناصر متكاملة تحتوي على بيانات ودوال هي أساس إنشاء البرنامج .. وبالتالي أصبحت وحدة بناء البرنامج وحدة كبيرة هي الفصيلة أو العنصر Object مما سهل واختصر الكثير .
    شرح لبعض المصطلحات في OOP التي سيكثر الحديث عنها وهي ,,
    • الكلاس وهي عبارة عن البرنامج ككل او الوصف الرئيسي الذي تنحدر منه objects
    • كل Object يتبع الى كلاس معينة
    • Object عبارة عن شئ له صفات واساليب معينة خاصة به
    • Attribute الصفات للكلاس وكمان ال object
    • Methods الاساليب المستخدمة في الكلاس
    [​IMG]
    وبشكل عام يتكون الكلاس من ثلاث اجزاء وهي :
    كود:
    modifier className
    {
    //attribute
    //Construtor 
    modifier  className()
    {
    }
    //methods
    }
    

    1. المشيد او Constructor :
    من المهم في OOP ان يكون في كل كلاس على الاقل اسلوب حتى نقوم بانتاج object لهذه الكلاس ولاساليب التي تقوم بعملية انتاج الابجكت للكلاس يسمى المشيد او Constructor واسمه لازم يكون نفس اسم الكلاس وهو (حتى نستطيع استخدامه عند فحص الكلاس واستخدام الاساليب او الصفات الموجودة في الكلاس)
    وفي كل كلاس في الجافا حتى وان لم يضعه الشخص فانها تحتوي على Constructor
    داخلي او ما يسمى ب Standard-Constructor اسم الكلاس و ()
    2.الصفات . صفات الكلاس
    3. الاساليب .
    الصفات تكون على هذا الشكل او تعرف على هذا الشكل
    كود:
    modifier type atributte;
    type :
    • int
    • double
    • float
    • char
    • String
    هذا ال modifier ممكن يكون كالتالي في الاساليب والصفات وحتى الكلاسات
    • public : يمكن استخدام الاسلوب او الصفة المعرفة في public اينما يريد الشخص حتى في كلاس ثاني والكلاس المعرفة ببليك يستطيع استخدامها الشخص اينما يريد لذلك بكون دائما كبداية البرنامج public classname
    • private : الاساليب والصفات تستخدم فقط في الكلاس المعرفة فيها ويستحب دائما استخدامها
    • protected : الاساليب والصفات يتم استخدامها في الكلاس وكمان الكلاسات المشتقة من الكلاس الاصلي
    • static : الاساليب والصفات المعرفة بها تستخدم ايضا اينما يريد الشخص وتسمى وتسمى الصفة او المتغير المعرف بstatic ...classvariable
      ويسمى الاسلوب المعرف بstatic ...classmethod
    • final : الصفة والاساليب المعرفة ب final لا يجوز تغييرها يعني ثابت في البرنامج كله
    وهناك الكثير من هذه modifier وهذه تستخدم بكثرة لذلك احببت شرحهن-

    والاساليب تكون على هذا الشكل
    كود:
    modifier Type MethodName()
    }
    return Type;
    {
     
    
    كود:
    modifier void  MethodName()
    }
    {
    اسلوب مع void يجب ان لا يوجد return
    اسلوب بدون void يجب يوجد return
    وعندما يكون الاسلوب مع return لازم يكون التعريف للاسلوب نفس القيمة مع return مثل
    كود:
    public String getName()
    {
    return name;
    }
    
    واليكم هذا المثال مثلا لدينا طالب وصفاته ونريد تطبيق مثال عليه بحيث نجمع بين ذلك في كلاس معين كتطبيق
    كود:
    public class Student
    {
    //الصفات
    //Attribute
    String name; //*
    private String adress;
    final int age;
    /*
    نضع الصفات جميعها هنا مثل ما نريد
    */
    // Constructor المشيد
     
    Student(String name/*here*/, String adress,int age)
    {
    /*this
    نعني بها ان المقصود بها هو الصفة العامة للكلاس وليس الصفة في المشيد يعني بالعربي 
    this.name هي *
    name هي here
    وهكذا مع بقية الصفات
    وممن الممكن وضع متغيرات اخرى ف المشيد  حتى ما يحدث لخبطة عن الشخص مثل
    Student(String n, String a, int g){name=n;a=adress;age=a;}
    */
    this.name   =name;
    this.adress =adress;
    this.age =age
    }
    /*
    */
    // Methods  الاساليب
    public String getName()
    {
    return name;
    }
    public void PrintAdress()
    {
    System.out.println("The Adress :"+adress);
    }
    public int getAge()
    {
    return age;
    }
    /*
    ونضيف من الاساليب هنا ما نريد
    */
    }
    
    قبل ان نختم هذه المقدمة اريد ان اريكم كيف نقوم بفحص برنامج من هذا القبيل لنرى اذا كانت الاساليب والصفات تعمل ويفضل ان نقوم كتابة الكلاس لفحص البرنامج في ملف مستقل وساخذ المثال السابق Student.java ونسمي الملف لفحصه StudentTest.java
    فمثلا لدينا كما في المثال السابق
    كود:
    public class Student
    {
    //Attribute
    String name; 
    private String adress;
    final int age;
    // Constructor 
    Student(String name, String adress,int age)
    {
    this.name   =name;
    this.adress =adress;
    this.age =age;
    }
     
    // Methods  
    public String getName()
    {
    return name;
    }
    public void PrintAdress()
    {
    System.out.println("The Adress :"+adress);
    }
    public int getAge()
    {
    return age;
    }
    }
    برنامج الفحص هو كالتالي

    كود:
    public class StudentTest
    {
     
    public static void main(String [] args)
     
    {
     
    Student s = new Student("Majdi","Palestine","23");
     
    System.out.println("The Name : "+s.getName());
    s.PrintAdress();
    System.out.println("The Age : "+s.getAge());
     
    }
    }
    وهذا هو شرحه
    كود:
    public static void main(String [] args)
    
    يجب ان يحتوي على هذه العبارة لاننا نريد هنا مخرجات يعبي تشغيل البرنامج
    كود:
    Student s = new Student("Majdi","Palestine","23");
    
    هذه العبارة حتى يفهم المترجم اي كلاس نريد ان نفحصها بحيث يرجع الى الكلاس Student.java لل Constructor ويعطي الى كل صفة قيمتها المعطى هنا مثلا
    كود:
    name ="Majdi"
    adress ="Palestine"
    age =23
    
    ويجب ان يكون هناك تطابق بين Constructor والصفات المعطى من حيث النوع والترتيب والعدد مثلا كتابة الاتي خطا
    كود:
    Student s = new Student(23,"Majdi","Palestine");
     
    
    وكل ذلك يجب ان يكون عن طريق new
    كود:
    System.out.println("The Name : "+s.getName());
    System.out.println("The Age : "+s.getAge());
     
    
    لان الناتج من الاسلوب getName() الموجود في Student يكون عن طريق return يجب كتابة عبارة System.out.println() و classname.method يعني هنا s.getName() و s.getAge() نفسه ولكن النوع هنا يختلف وهو int

    كود:
    s.PrintAdress();
    
    لان الناتج من الاسلوب s.PrintAdress() الموجود في Student يكون عن طريق void فكتابة عبارة System.out.println() خطا ولذلك نكتب classname.method يعني هنا s.PrintAdress()
    والناتج سيكون بالطبع
    كود:
    The Name   : Majdi 
    The Adress : Palestine
    The Age     :23
    

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

    الملفات المرفقة:

    • oo.jpg
      oo.jpg
      حجم الملف:
      11.1 ك. ب
      المشاهدات:
      10,670
    ghanou ،قطرات و (عضو محذوف) معجبون بهذا.
  2. ghanou

    ghanou مشرف إداري

    إنضم إلينا في:
    ‏أكتوبر 11, 2006
    المشاركات:
    9,275
    الإعجابات المتلقاة:
    4,644
    نقاط الجوائز:
    128
    الجنس:
    ذكر
    الوظيفة:
    مهندس دولة طاقويات
    مكان الإقامة:
    الجزائر
    جزاك الله خيرا اخي المصري على الموضوع المفيد
    اطيب التحيات لك​
     
  3. المصـرى

    المصـرى Active Member

    إنضم إلينا في:
    ‏أغسطس 25, 2006
    المشاركات:
    208
    الإعجابات المتلقاة:
    35
    نقاط الجوائز:
    28
    الوظيفة:
    study
    مكان الإقامة:
    EGYPT
    أسعدنى مرورك أخى غانو
    الله يعطيك العافية
     
  4. ghostxp

    ghostxp New Member

    إنضم إلينا في:
    ‏يوليو 7, 2006
    المشاركات:
    8
    الإعجابات المتلقاة:
    0
    نقاط الجوائز:
    0
    شكرا ليك ياغالى جميل الموضصوع
     
  5. جروحي بروحي

    جروحي بروحي New Member

    إنضم إلينا في:
    ‏أغسطس 12, 2008
    المشاركات:
    20
    الإعجابات المتلقاة:
    0
    نقاط الجوائز:
    0


    تسلم على هذا التميز ..........الف شكر مصري
     
  6. جروحي بروحي

    جروحي بروحي New Member

    إنضم إلينا في:
    ‏أغسطس 12, 2008
    المشاركات:
    20
    الإعجابات المتلقاة:
    0
    نقاط الجوائز:
    0


    ممكن سؤال الحين لو كنت داخل الكلاس في تو فنكشن عادي لو اخترت نفس تعريف المتغير لكل وحدة يعني مثال
    الفنكشن الاولى :int sum(int x(
    {}
    int mult(int x)
    {}
    هل هذا صحيح
    اولأ
     

مشاركة هذه الصفحة