• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • النتائج 1 إلى 12 من 12

    الموضوع: [درس] الرد على أي إستفسار عن السي بلس بلس

    1. #1
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      [درس] الرد على أي إستفسار عن السي بلس بلس

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

      كما هو مبين من العنوان ..

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

      أريد التنوية:
      بأن الموضوع مفتوح من الآن إلى نهاية شهر رمضان الكريم ..

      -------------

      يلا فتحنا المزاد

    2. #2
      التسجيل
      05-11-2000
      الدولة
      arabgn.net
      المشاركات
      4,662
      المواضيع
      255
      شكر / اعجاب مشاركة

      رد: الرد على أي إستفسار عن السي بلس بلس

      و الله مبادرة طيبة منك , و أهلاً بك بالمنتدى ,,,

      يلا الحق نفسي قبل ما يخلص الصيام

      س1- هل نستطيع القول عن السي ++ أنها كائنية التوجه OOP ؟
      س2- ما هي دوال API الت ذكرتها أنت سابقاً هل هي مثل الـfunctions في لُغات اُخرى ؟
      س3- أين أجد هذه الدوال ؟ هل هناك manual ما ؟

      و شكراً

    3. #3
      التسجيل
      19-03-2005
      الدولة
      العين
      المشاركات
      1,261
      المواضيع
      29
      شكر / اعجاب مشاركة

      رد: الرد على أي إستفسار عن السي بلس بلس

      جزاك الله خير وعانك ع الأسئلة

      عندي سؤال ::

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

      وشكرا ^_^
      ليس العيب أن تقع العيب أن تضل على الأرض ولا تقف مجددًا
      I was GameMakerer, may back...I'M BACK o..o

      دردشها دردش دردشها

      ~.~

    4. #4
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: الرد على أي إستفسار عن السي بلس بلس

      س2- ما هي دوال API الت ذكرتها أنت سابقاً هل هي مثل الـfunctions في لُغات اُخرى



      API هي إختصار إلى Applicatin Programming Interface ..


      وهي عبارة عن ملفات يستخدمها المبرمجون من أجل ربط برامجهم بي نظام التشغيل (Operating System).



      تقوم فكرتها كالتالي: بما أن نظام التشغيل يستخدم
      بعض العناصر مثل (textbox, frame, font, color, button) أو بعض الدوال (Functions) مثل (Createwindow, SetwindowText, ExitWindow, TextOut, Copyfile) أو بعض المكتبات مثل (User32, Gdi32.dll, Kernel32) أو بعض من Data Structure مثل (Font) من أجل التحكم في عملياتهفإذن سأقوم بإستخدامها أنا أيضاً لمصلحة برنامجي


      ظهرت هذه المكاتب في ثلاثة أجيال وجيل منتظر:

      الأول: win16 Bit وهو قديم جداً.


      الثاني : win32 Bitحيث كتبت دوالها بإستخدام لغة السي والسي بلاس بلاس, وجائت بالمكتابات (User32, Gdi32.dll, Kernel32)


      الثالث: win64 Bit حيث أنها إحتوت على نفس الـ win32 ولأكن بشكل أوسع فتستطيع الدوال الآن معالجة وعنونة أرقام أكبر, وجائت هذه المكاتب على نظامي التشغيل windows XP و Window Server 2003


      الرابع: Winfix وهذا الجيل هو المنتظر في windows Vista (على الأقل إلى الآن) حيث أنها كما أعلنوا ستدعم جميع خصائص الـ .Net بما فيها Garbage Collector System (GLR), وأيضاً سوف تستبدل مكتبات الرسومات وهي الـ GUI بي الـ Avalon


      ولجعل الأمور تأخذ منحى عملي .. لنأخذ مثال بسيط وهو إظهار Message Box


      نقوم بفتح مشروع جديد من نوع Windows Application ونكتب الكود التالي:

      كود:
       
       
       
       
      #include <windows.h>
       
      int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
      LPSTR lpCmdLine, int nCmdShow)
      {
       
      MessageBox(NULL, "RAAD Say Hi To ALL", "RAAD", MB_OK);
      return 0;
       
      }




      الشرح ..

      كود:
      #include <windows.h>


      الهيدر الخاص بإستدعاء دوال API



      كود:
      int WINAPI WinMain


      وهي الدالة الرئيسية Access Point الخاصة بي دوال API أي مثل int main()




      كود:
      HINSTANCE hInstance


      وهي التي توضح نوع الملف المراد إخراجة بعد عملية التنفيذ هل exe أم dll



      كود:
      HINSTANCE hPrevInstance


      لا تستخدم ,, إلا بالأنظمة القديمة مثل win16


      كود:
      LPSTR lpCmdLine


      تختص بأمور الـ datatype


      كود:
      int nCmdShow


      للإتصال بالدالة ShowWindow(). من أجل عرض النتيجة على الشاشة



      -------------------------------

      قد لا تكون هذه الأكواد مألوفة للوهله الأولي .. ولأكن مع كثرة التدرب عليها ستري أنك بدأت تفهمها ..



      حسناً الآن ما علاقة الـ api ببرمجة الألعاب .. في الحقيقة أن لها كل العلاقة .. عندما تخاطب كرت الشاشة فأنت بحاجة إليها عن طريق Device Context , حسناً عندما تريد إدخال صورة .. فأنت بحاجه إليها أيضاً عن طريق BitBlt , تحريك الأشكال, عمل render التحكم بي الـ buffer , حساب الـوقت المنقضي بين كل فريم ,, عمل الـ Sprites وما إلى ذلك من هذه الأمور ... والأهم عمل وبندوز لتستطيع عن كل هذا بداخلها ..

      الخلاصة .. من لم يدخل في الـ api فلن يستطيع الدخول بشكل صحيح ببرمجة الألعاب .. طبعاً أن هنا لا أطالب بحفظ جميع هذه الدوال لأنها تعد بالمئات .. ولأكن أطالب بفهمها ... وبخاصة التي يتعلق الأمر فيها بأمور الرسم ..



      س3- أين أجد هذه الدوال ؟ هل هناك manual ما ؟
      بي الـ help التابع للـ Visual Studio أو موقع مايكروسفت ...

    5. #5
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: الرد على أي إستفسار عن السي بلس بلس

      بقيت هذه الاسئلة ...

      س1- هل نستطيع القول عن السي ++ أنها كائنية التوجه OOP ؟
      أريد الوقع الرسمي لشرح المكتبات في السي ++ ...
      وسأجيب عليها بعد الإفطار .... لأني بدأت أحس بأن العالم يلف من حولي

    6. #6
      التسجيل
      21-02-2003
      الدولة
      الإمارات العربية المتحدة
      المشاركات
      2,350
      المواضيع
      80
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      مشكور على فتح موضوع كهذا ؟ يزيد التفاعل بين الاعضاء ... و ما شاء الله .. يبدو ان لديك باع طويل بالسي بلاس بلاس

    7. #7
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      رجعنا بعد الفطور ...

      أولاً أشكر كل الأخوة الذين علقوا على الموضوع ...

      ------------------------------

      س1- هل نستطيع القول عن السي ++ أنها كائنية التوجه OOP ؟


      شوف يا .. CHALLENGER .. أعرف بأن سؤالك يدل عن حيره لأن هناك من يقول نعم هي كائنية والآخر يقول لا بل ليست كذلك ... وفي الحقيقة لا أدري الصنف الآخر وهم الذين يقولون بأنها غير كائنية ما هو دليلهم ...

      إذن لنرد على هذا الكلام كالتالي :

      إشترط الباحثون بأن أي لغة تريد أن تكون كائنية يجب أن تدعم عدة مصطلحات ومن أهمها ..

      الـ Class الفئات
      الـ Polymorphism تعدد الأشكال
      الـ Encapsulation التغليف
      الـ Inheritance الوراثة

      ------------------------------

      الآن لنرى هل تدعم السي بلس بلس هذه المصطلحات :


      الـ Class الفئات: بكل بساطة هي عبارة عن الكائن مع محتوياته من data member و data function , بمعني آخر ((هي مجموعة من الدوال والمتغيرات لها علاقة ببعضها البعض.

      في المثال بالأسفل قمنا بعمل فئة وأسمينها ((Mosters)) وحوش ,, وقمنا بتعريف القيم والمشيدات فية ,,, وأعلنا عن هذا الوحش ككائن بي الدالة الرئيسية وسميناه Kong

      كود:
       
       
      //By RAAAAD
      #include <iostream>
      #include <string>
       
      using namespace std;
       
      class Monsters
      {
      public :
          Monsters(string name,int power,int damage);
          void dis();
       
      private:
          string mname;
          int mpower;
          int mdamage;
      };
       
       
      Monsters::Monsters (string name,int power,int damage)
      {
          this->mname = name;
          this->mpower = power;
          this->mdamage = damage;
      }
      void Monsters::dis ()
      {
          cout << "The Name Of Monster Is:  " << this->mname << endl;
          cout << "The Power Of Monster Is:  " << this->mpower << endl;
          cout << "The Damage Of Monster Is:  " << this->mdamage << endl;
      }
       
      int main()
      {
          Monsters Kong("KONG",4,6);
          Kong.dis ();
          cout << "-----------------------------"<< endl;
       
      }
      
      ==================

      الـ Polymorphism تعدد الأشكال : هو المصطلح الذي يتيح لي لجعل الفئة تتخذ أكثر من
      شكل, وجميع هذه الأشكال تنتمي للشكل الرئيسي

      نأخذ مثال على ذالك, حيث نلاحظ كيف أن الفئة shapes أخذت أكثر من شكل ففي مرة أخذت شكل الدائرة , وفي المرة الآخرى أخذت شكل المستطيل


      كود:
      //By RAAAAD
      #include <iostream> #include <string> using namespace std; const float pi = 3.14; class shapes { public: virtual float area(); virtual float perimeter(); virtual string type(); }; class circle : public shapes { public: circle(float x); float area(); float perimeter(); string type(); private : float mx; }; class rectangle : public shapes { public: rectangle(float w,float l); string type(); float area(); float perimeter(); private : float mw; float ml; }; string shapes::type () { return "No Shapes"; } float shapes::area () { return 0; } float shapes::perimeter () { return 0; } circle::circle(float x) { this->mx = x; } float circle::area () { return pi * this->mx * this->mx; } string circle::type() { return "Circle"; } float circle::perimeter() { return 2 * pi * this->mx ; } rectangle::rectangle (float w, float l) { this->ml = l; this->mw = w; } string rectangle::type () { return "Rectangle"; } float rectangle::area () { return this->mw * this->ml ; } float rectangle::perimeter () { return 2 * this->mw + 2* this->ml ; } int main() { shapes* ss[8]; ss[0] = new circle(1); ss[1] = new circle(2); ss[2] = new circle(3); ss[3] = new circle(4); ss[4] = new rectangle(2,4); ss[5] = new rectangle(6,4); ss[6] = new rectangle(2,10); ss[7] = new rectangle(2,8); for (int i =0;i <8;i ++) { cout << ss[i]->type () <<" "; cout << ss[i]->area () << " " << ss[i]->perimeter () << endl; } for (int i =0;i <8;i ++) { delete ss[i]; } }
      ==================

      الـ Encapsulation التغليف : وهي إخفاء بعض البيانات لحمايات الكائن .. بواسطة إستخدام الجمل التالي :

      public في حالة الرغبة بمشاركة أجزاء هذا الكائن مع أي جزء أو كائن آخر في الكود

      Private : في حالة الرغبة بمشاركة أجزاء الكائن داخلياً فقط.

      Protected : في حالة مشاركة أجزاء من الكائن مع كائن آخر تربطهم علاقو وراثة ..

      ==================

      الـ Inheritance الوراثة : وهي توريث جمييع خصائص الـ Base Class إلى الـ Sub Class , كما في المثال بالأسفل .. حيث أن لدينا فئة Monsters وهي الفئة الأساسية ,, وغالباً ما تكون هذه الفئة ((Base Class )) في الفئة التي تحوي الروابط المشتركة ما بين الـ Sub Class , يعني نلاحظ في المثال بأن جميع الوحوش Gorila أو Shark سيكون لها إسم, وطاقة, وقوة تدمير ...

      كود:
       
      //By RAAAAD
       
      #include <iostream>
      #include <string>
       
      using namespace std;
       
       
      //Base Class
      class Monsters
      {
      public :
          Monsters(string name,int power,int damage);
       
      protected:
          string mname;
          int mpower;
          int mdamage;
      };
       
      //Derive Class
      class Gorila : public Monsters
      {
      public:
          Gorila(string name,int power,int damage,int boxing);
          void dis();
      private:
          int mboxing;
      };
       
      class Shark : public Monsters
      {
      public:
          Shark(string name,int power,int damage,int hunt);
          void dis();
      private:
          int mhunt;
      };
       
      //Decleartion of Monsters
      Monsters::Monsters (string name,int power,int damage)
      {
          this->mdamage = damage;
          this->mname = name;
          this->mpower = power;
      }
       
      //Decleartion of Gorila
      Gorila::Gorila (std::string name,int power,int damage,int boxing) : Monsters(name,power,damage)
      {
          this->mboxing = boxing;
      }
       
      //Print Function
      void Gorila::dis ()
      {
          cout << "The Name Of Monster Is:  " << this->mname << endl;
          cout << "The Power Of Monster Is:  " << this->mpower << endl;
          cout << "The Damage Of Monster Is:  " << this->mdamage << endl;
          cout << "The Boxing Of Monster Is:  " << this->mboxing << endl;
      }
       
      Shark::Shark (std::string name,int power,int damage,int hunt) : Monsters(name,power,damage)
      {
          this->mhunt = hunt;
      }
       
      void Shark::dis ()
      {
          cout << "The Name Of Monster Is:  " << this->mname << endl;
          cout << "The Power Of Monster Is:  " << this->mpower << endl;
          cout << "The Damage Of Monster Is:  " << this->mdamage << endl;
          cout << "The Hunt Of Monster Is:  " << this->mhunt << endl;
      }
       
      //Access Point
      int main()
      {
          Gorila Kong("KONG",3,5,9);
          Shark Fish("BigFish",4,6,7);
          Kong.dis ();
          cout << "-----------------------------"<< endl;
          Fish.dis ();
      }
       
      
      الخلاصة :

      نستطيع أن نستنتج بأن الـ c++ كائنية ... بلا خلاف ... ولأكن الإختلاف يكون بي نسبة دعمها لهذا المفهوم ..



      ملاحظة ...

      أي شئ غير مفهوم بالأعلا الرجاء إخباري .. وسأقوم بتوضيحة
      التعديل الأخير تم بواسطة RAAAAD ; 02-10-2006 الساعة 09:22 PM سبب آخر: أخطاء إملائية

    8. #8
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      أريد الوقع الرسمي لشرح المكتبات في السي ++ ...
      عندي هنا ملاحظة على كلمة ((رسمي)) ..

      لغة السي بلس بلس لا يوجد لها راعي رسمي مسأول عنها أي كما في الجافا فهناك sun

      أو السي شارب فهناك مايكروسوفت ...

      يعني أن هذه اللغة ليست حقر لشركة معينة توجب شراء تراخيص لها ... بل هي للجميع ,, ويما أن مايكروسوفت قامت بتبنيها من ناحية التطوير, فإليك هذا الموقع, MSDN التابع لها ..

      http://msdn2.microsoft.com/en-us/visualc/default.aspx

    9. #9
      التسجيل
      27-11-2002
      الدولة
      Demon * World
      المشاركات
      300
      المواضيع
      60
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      الله يبارك فيك اخوي رااد انشاء الله درس الكلاسات ايي عن قريب


      صج بارك الله فيك
      www.nightvisiongames.com
      المشروع الحالي (غير معلن عنه) : N-1
      نوع اللعبة : RTS (إستراتيجية)
      لغة اللعبة : English + عربي (احتمال كبير)
      فريق العمل :
      حسين هاني (أنا) : مبرمج
      المهندس وائل : مبرمج
      فراس الإسكندراني : تصميم و إدارة
      Snake_x86 : المصمم القائد لرسوم الـ 3D

      إذا تبي تدخل معانا ، ادخل منتدانا الإنظمام من هذي الوصلة :
      http://nightvisiongames.com/communit...hp?showforum=4

      و شوف الموضوع المثبت

    10. #10
      التسجيل
      05-11-2000
      الدولة
      arabgn.net
      المشاركات
      4,662
      المواضيع
      255
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      هي إختصار إلى Applicatin Programming Interface ..


      وهي عبارة عن ملفات يستخدمها المبرمجون من أجل ربط برامجهم بي نظام التشغيل (Operating System).



      تقوم فكرتها كالتالي: بما أن نظام التشغيل يستخدم
      بعض العناصر مثل (textbox, frame, font, color, button) أو بعض الدوال (Functions) مثل (Createwindow, SetwindowText, ExitWindow, TextOut, Copyfile) أو بعض المكتبات مثل (User32, Gdi32.dll, Kernel32) أو بعض من Data Structure مثل (Font) من أجل التحكم في عملياتهفإذن سأقوم بإستخدامها أنا أيضاً لمصلحة برنامجي


      ظهرت هذه المكاتب في ثلاثة أجيال وجيل منتظر:

      الأول: win16 Bit وهو قديم جداً.


      الثاني : win32 Bitحيث كتبت دوالها بإستخدام لغة السي والسي بلاس بلاس, وجائت بالمكتابات (User32, Gdi32.dll, Kernel32)


      الثالث: win64 Bit حيث أنها إحتوت على نفس الـ win32 ولأكن بشكل أوسع فتستطيع الدوال الآن معالجة وعنونة أرقام أكبر, وجائت هذه المكاتب على نظامي التشغيل windows XP و Window Server 2003


      الرابع: Winfix وهذا الجيل هو المنتظر في windows Vista (على الأقل إلى الآن) حيث أنها كما أعلنوا ستدعم جميع خصائص الـ .Net بما فيها Garbage Collector System (GLR), وأيضاً سوف تستبدل مكتبات الرسومات وهي الـ GUI بي الـ Avalon
      الآن صار عندي فكرة واضحة تماماً عن الـAPI , أنا كانت مشكلتي في السي++ أنني لا اتشجع على تعلمه بسبب ان اغلب الكتب التي بدأت أقرئها تعلم على الكونسول و أنا كنت أريد عمل برمجيات Software من خلاله لذلك اتجهت للـVisual C Sharp ! و كنت استخدم الـAPI بدون اي فكرة عنه عند البرمجة بالدايركت إكس لأخرج نافذة تتضمن اللعبة !


      قد لا تكون هذه الأكواد مألوفة للوهله الأولي .. ولأكن مع كثرة التدرب عليها ستري أنك بدأت تفهمها ..



      حسناً الآن ما علاقة الـ api ببرمجة الألعاب .. في الحقيقة أن لها كل العلاقة .. عندما تخاطب كرت الشاشة فأنت بحاجة إليها عن طريق Device Context , حسناً عندما تريد إدخال صورة .. فأنت بحاجه إليها أيضاً عن طريق BitBlt , تحريك الأشكال, عمل render التحكم بي الـ buffer , حساب الـوقت المنقضي بين كل فريم ,, عمل الـ Sprites وما إلى ذلك من هذه الأمور ... والأهم عمل وبندوز لتستطيع عن كل هذا بداخلها ..

      الخلاصة .. من لم يدخل في الـ api فلن يستطيع الدخول بشكل صحيح ببرمجة الألعاب .. طبعاً أن هنا لا أطالب بحفظ جميع هذه الدوال لأنها تعد بالمئات .. ولأكن أطالب بفهمها ... وبخاصة التي يتعلق الأمر فيها بأمور الرسم ..
      المثال يلي وضعته و شرحته خلاني اسكت و ما اعرف اسئلك أي سؤال لأني فعلا كنت استخدم هالأكواد و اغلب الأشياء ما اعرف ليش استخدمها بس الحين تغيرت نظرتي لها

      ي الـ help التابع للـ Visual Studio أو موقع مايكروسفت ...
      لم تخظر على بالي لأني لم ابحث اصلا , فما زلت في مرحلة القراءة من الكتب

    11. #11
      التسجيل
      05-11-2000
      الدولة
      arabgn.net
      المشاركات
      4,662
      المواضيع
      255
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      رجعنا بعد الفطور ...

      أولاً أشكر كل الأخوة الذين علقوا على الموضوع ...

      ------------------------------

      اقتباس:
      س1- هل نستطيع القول عن السي ++ أنها كائنية التوجه OOP ؟
      صحتين و هنا (( استغرب على ماذا يتغذى مبرمج السي++ , يمكن فيتامين C ))

      ,,, شرحك اذا كانت السي++ كائنية التوجيه مفصل و طبعا واضح انها لغة كل شيء , و انا لما دخلت في برمجة OOP ما كان عندي فكرة عنها ابدا يعني طول عمري استخدم برمجة سطر بسطر ما اعرف شو اسمها نسيت بس كل اللغات مثل الباسكال و الـphp كانت ليست OOP و عندما حاولت ادخل بسرعة لهذا النوع من البرمجة اتبهدلت فتخيل اني نزلت كتب كاملة تتكلم عن هذه الطريقة !!! و بيني و بينك ما زلت لا اعلم كل شيء عنها غير انا تعتمد على الـevents و فهمتها عندما عملت على #

      أي شئ غير مفهوم بالأعلا الرجاء إخباري .. وسأقوم بتوضيحة
      و الله انت ما تركت مجال لشي غير مفهوم و ردودك كلها Value

      و ما اعرف كيف اشكرك انت يلي تطلب

    12. #12
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: [درس] الرد على أي إستفسار عن السي بلس بلس

      صحتين و هنا (( استغرب على ماذا يتغذى مبرمج السي++ , يمكن فيتامين C ))


      ههههههههههههه حلوة


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


      هذا الموضوع طال النقاش فيه .... وسأحاول إختزاله ..


      شوف يا CHALLENGE ,, عند الإنتقال من البرمجة ((الإجرائية)) – سطر بي سطر ,, إلى البرمجة الكائنية .. بكل تأكيد ستشعر بصعوبة بالغة ...

      سأقول لك لماذا ...

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

      لذلك قال الباحثون في هذه الأمور التالي :-

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

      لذلك يجب أن تعود نفسك أن تستخدم البرمجة الكائنية لكي تعتاد على التفكير بنمطها ... أكرر ((يجب أن تعود نفسك)) يعني كمثال ((صغير)) في الـ PHP بدلاً من أن تكتب

      كود:
       
       
      <? 
        echo ("RAAD Say Hi To All");
      ?>

      قم بإستخدام مفهوم الـبرمجة الكائنية

      كود:
       
       
      <? 
      class wellcom
      {
       function main()
       {
        echo ("RAAD Say Hi To All");
       }
      }
      $ver = new wellcom;
      $ver->main();
      ?>
      وعلى المدي البعيد ستحس بالفارق ...


      و بيني و بينك ما زلت لا اعلم كل شيء عنها غير انا تعتمد على الـevents و فهمتها عندما عملت على #

      البرمجة الكائنية أكبر من مجرد الإعتماد على الـ Events ,,, فالمصطلح الوحيد المسؤول عن ذلك في السي شارب هو الـ Delegate ,,, بمعني آخر ((نستطيع عمل الـ event بالإعتماد على مصطلح الـ delegate والذي هو جزء من البرمجة الكائنية ..

      نعرف مصطلح الـ Delegate بأنه هو ((مرجع Reference خاص بي دالة نستدعيها وقت ما نريدها)).

      مثال

      كود:
       
      //By RAAD
      using System;
      class test
      {
      public delegate int deleme (int a,int b);
       
      class maths
      {
       
      public int addme(int a,int b)
      {
      return a+b;
      }
       
      public int subme (int a,int b)
      {
      return a-b;
      }
      }
       
      class last 
      {
      public static void Main()
      {
      deleme delemeobj;  // Delcare Delegate
      maths mm = new maths(); // Create Object
      delemeobj = new deleme (mm.addme); // CreateDelegate
      int i = delemeobj (9,4); // Call Delegate
      Console.WriteLine (i);
      }
      }
       
       
      }
      
      الآن كبف تستفيد الـ event من هذا الكلام ... بواسطة هذه الطريقة

      كود:
      EventName += New DelegateName (eventHandlerFinction)

      مثال على ذالك ...

      كود:
       
      //By RAAD
      using System;
      using System.Timers ;
       
            class test
            {
                     static int counter = 0;
                     static string dis = "RAAD SAY IT IS EASY";
       
                     static void Main()
                     {
       
                     Timer my = new Timer(1000);
                     my.Elapsed  += new ElapsedEventHandler (WriteChar);
                     my.Start();
                     Console.ReadLine ();
                     }
       
                     static void WriteChar (object my, ElapsedEventArgs z)
                     {
                               Console.WriteLine (dis[counter++ % dis.Length]);
                     }
       
      }
      
      و في النهاية أشكرك Challenge على فتح مثل هكذا مواضيع ... ,, فإني آراك من الأشخاص الذين يحبون أن يعرفوا ماذا يجرى من وراء الستار ... وهذا هو طريق الفهم الصحيح


      وإذا عندك أي سؤال .. أو أحد الأخوه ... فاليتفضل
      التعديل الأخير تم بواسطة RAAAAD ; 03-10-2006 الساعة 08:35 PM

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

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