برمجة(3) وvirtual وأشياء أخرى....

نشره shashi في الخميس, 25/06/2009 - 7:58م

موعد الفحص : الثلاثاء 23/6/2009  الساعة : 11:00 AM 

بداية الدراسة للمادة : الأحد 21/6/2009 الساعة 9:00 PM 

 

المحموع الكلي لإمكانية دراسة المادة : 38 ساعة (متواصلة).

المجموع الكلي للساعات التي تمت الدراسة فيها : 20 ساعة(18 ساعة نوم + أكل + مشوار الطريق إلى دمر ).

 

هالإحصائيات هيه عن مادة البرمجة 3، اللي كانت من يومين "مالئ الدنيا وشاغل الناس" بالنسبة لطلاب السنة التانية "الحملة Razz ".

الفكرة من كتابتي هالمدونة مو لأحكي عن الفحص أو المادة بحد ذاتها، هدفي أحكي كيف كان شكل ليلة الفحص الجنونية اللي اكتشفنا فيها اكتشافات غريبة عجيبة ما كنا نتوقع أنو يكون في هيك شي Smile

القصة بتبدا بيوم الاثنين 22/6/2009 ببيت العزيزة Joolnar :

بدت الدراسة الجماعية(The Lady, Joolnar, Shashi) الساعة AM 11:00 على أمل أنو يكونوا الـ 24 ساعة القادمة كفيلة أنو نوصل لعلامة مرضية بفحص تاني يوم، بلشت المواضيع والأسئلة والنقاشات

و"الخناقات Razz " وكل شوي يطلع سؤال أغرب من التاني، وطبعاً الدوا الأمثل لكل سؤال هوه "اكتبي الكود وجربيه" والنتيجة طبعاً دائماً مفاجئة مع الـC++.

بعد شي أربع خمس ساعات من الـPolymorphism والـVirtual  والـClasses وليش هون في const شو يعني Static .. وصلنا لصيغة أخيرة لأفضل طريقة ممكن فيها تشكيل Polymorphism ممتازة.

الساعة 7:00 PM : قررنا أنو أسئلة الدورات هي وجهتنا للوقت المتبقي من هاليوم، وبدينا بالأسئلة "ولو أنها من نمط مختلف" بس كانت ممتعة، وغزيرة بالأفكار والسلبات الغريبة، وبالمناسبة إذا حدا قرا هالمدونة من طلاب السنة التانية القادميين بقلهون لازم لازم تحلوا أسئلة دورات، بتعلم أكتر بكتير من أي شي تاني.

استمرت المسيرة السعيدة مع الدورات ومع تعلم الشغلات الجديدة، والنكتة أنو كل شغلة نجتمع أنو لا مستحيل تكون صحيحة، التطبيق يجي ضدنا "أنو أي بيصير :)".

على الساعة 9:00 PM : تقرر أنو اليوم ما في رجعة على البيت Smile وأنو الليلة صباحية.

الحبكة Smile : تقريباً على الساعة 1 إلا ربع ليلاً بتوقيت مدينة دمشق، تم الاكتشاف العظيم التالي، ورد معنا ضمن أسئلة الدورات السؤال التالي:

Class A بيحوي على تابع virtual، وضمن الـ Class B اللي هوه ابن الـClass A التابع نفسه موجود ولكن من دون كلمة virtual! والتابع المطلوب خرجه، يعني العبارة صحيحة.

وهون كانت الصدمة!!! معقول ما تكون كلمة Virtual  ضرورية ضمن توابع الابن!!!! 

المشكلة أنو كل شي اسمو سلايدات وأمثلتهم ما فيها مثال ما بيحوي على virtual بهالموقع! طيب السلايدات ممكن تكون غلط، هاتي هالـ C++ How to Program 

نفس المشكلة أنو كل الأمثلة، بتحوي على Virtual ضمن الابن وبهالموقع بالذات.

فالحل هوه التطبيق --> والنتيحة أنو أي بيصير .. وهون كانت الصدمة والاكتشاف الفظيع، والملاحظة الغريبة اللي ما سمعنا عنها لا بمحاضرة ولا بكتاب ولا بسلايدات.

ووقتها قررنا نكتب هالمدونة لحتى اللي ما بيعرف هالمعلومة يستفاد منها، ونفتخر باكتشافنا العظيم في تلك الليلة الصعبة المتعبة المثمرة :D 

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

الوقت القليل ما هو معيار لدراسة المادة، التركيز وتجميع أكبر قدر من المعلومات هوه المعيار.


( )

خيارات عرض التعليق

اختر الطريقة التي تفضلها لعرض التعليقات، ثم اضغط على "احفظ الإعدادات" لتفعل التغيرات.
صورة NightWolf

طبعاً ممكن كتير

طبعاً ممكن كتير ما يكون بقلب تابع الابن
معنى Virtual : في حال كنا عم نستخدم Polymorphism اذا كان النمط الحقيقي هو نمط ابن ( بغض النظر عن نمط الHandler ) فالتوابع يلي لازم استخدما هي التوابع المعرفة بالابن
هلق ليش لتحطي بالابن Virtual ?
منشان اذا حدا ورت من هال Class كمان يقدر ينزل على الابن مو اكتر

صورة THE LADY

مدونة مفاجئة

مدونة مفاجئة shashi، صحيح كانت ليلة طويلة بس حلوة ورح تضل بالبال Smile وأحلى مافيها وقت نكتشف شي وتبدا كل وحده تكتب الملاحظات عن الأفكار الجديدة Smile أكيد وقت نكتشف شي أو نتعرف عليه لأول مرة بدون تلقي يعني( بتعليم شخصي ) منحس وقتها بنوع من السعادة Smile

وان شالله نرفعها بمعدل نحن ال3 سوا Smile

صورة ZerOne

أنا بعرف انو ما

أنا بعرف انو ما بيصير ابدا

يعني مثلا ليكون عنا

<br />
class a<br />
{<br />
public :<br />
	at(int,const string &);<br />
	virtual void print()const;<br />
private:<br />
	int number;<br />
};<br />

class b : public a<br />
{<br />
public :<br />
	b(int num,const string &first);<br />
	virtual void print()const;<br />
};

وهون بفرض أخدنا المؤشرين

pa = &a
pb = &b

فشو بدو يطبع هون ؟؟

pa->print()
pa->print()

يعني بكل تابع print() بدو يشتغل حسب الكلاس اللي فيه التابع

وهي هي فائدة تعددية الأشكال كلا اللي اخذناها بالمادة كلا !!

يعني معقولة يعطونا هالمفهوم علفاضي ؟؟

لا تكونوا عاملين التابعين نفس الشي D:

صورة BlackSigma

أحلى شي بالفحص

أحلى شي بالفحص إنو أجت الفكرة ذاتها بس اللعبة ما كانت فيها كانت إنو محطوط Int main بدون return و اللي ما بتنبه لهاي الشغلة بصير يفكر بموضوع الـ virtual function

اقتباس:  ووقتها

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

حلوة كتير هل الفكرة ...

و إن شاء الله بترفعوا المادة بمعدل(أنتو الـ 3) ..

 

 

صورة BlackSigma

كتب ZerOne: وهون

كتب ZerOne:

وهون بفرض أخدنا المؤشرين

pa = &a
pb = &b

فشو بدو يطبع هون ؟؟

pa->print()
pa->print()

يعني بكل تابع print() بدو يشتغل حسب الكلاس اللي فيه التابع

وهي هي فائدة تعددية الأشكال كلا اللي اخذناها بالمادة كلا !!

يعني معقولة يعطونا هالمفهوم علفاضي ؟؟

لا تكونوا عاملين التابعين نفس الشي D:


هون ما صار في تعددية أشكال
إذا ما كان عندك غرض من الإبن عم يتم التعامل معه على إساس إنو هو غرض من الأب ما صار في إلها معنا لتعددية الأشكال
و هدف الـ virtual function إنو يخليك قادر على تنفيذ توابع الإبن على الرغم من إنو هو عم يتم التعامل معه كأنه غرض من الأب

صورة ZerOne

أي اكيد لازم

أي اكيد لازم تاخذ غرض من كل class ( علما أنو a أب b ) يعني بس أنا اخصارا كتبت هيك

pa = &a
pb = &b

وأنا بالمثال كان قصدي أنو هو رح يستدعي تابع print() بكل كلاس حسب المؤشر يعني مثلا الغرض المشتق من b المؤشر عليه pb
فلما استدعي
pb->print() رح يستخدملي التابع الموجود عند الإبن مو عند البيي..

@ ZerOne class b : public

@ ZerOne
class b : public a{
public :
b(int num,const string &first);
virtual void print()const;
};

هون الكلمة ممكن أنو تنشال دون أنو تأثر على عملية تحدد تابع الprint المستدعى(إنا كان بيخص الابن أو كان بيخص الأب).

الفكرة أنو التابع مثلاً print رح يكون virtual بالأب أما الابن إذا ما حدا بيورث منو ما في داعي يكون التابع virtual لأنو عملية الـoverloading اللي بدها تصير بتعتمد بس على اسم التابع والـargument list يعني كلمة virtual ضمن الابن مالها ضرورة بتحديد أي تابع رح يتم استدعاؤه.

فإذا كان عنا : pa مؤشر من نوع أب

pa = & a 

pa -> print رح يتم استدعاء print الأب

pa=& b

pa-> print رح يتم استدعاء print الابن (مع عدم الحاجة لإضافة كلمة virtual).

 

صورة ZerOne

آسف كتير هلق

آسف كتير هلق وصلت الفكرة :-s

ومعلومة حلوة رح تفيدنا بتوفير الكثير من كلمات virtual Mr. Green
طبعا إذا عدنا استخدمنا ال Oop بالجامعة يعني ما بعرف يمكن بعد شي ...

هلق صحيح بأي مادة رح نعود نحتاج ال oop ؟

كتب ZerOne:آسف

كتب ZerOne:
آسف كتير هلق وصلت الفكرة :-s

ومعلومة حلوة رح تفيدنا بتوفير الكثير من كلمات virtual Mr. Green
طبعا إذا عدنا استخدمنا ال Oop بالجامعة يعني ما بعرف يمكن بعد شي ...

هلق صحيح بأي مادة رح نعود نحتاج ال oop ؟

بعتقد بكل شي لقدام ما عاد لازم نفكر إلا OOP ولا تنسى أنو السنة الجاية عنا مادة لغات البرمجة اللي مناخد فيها JAVA واللي هيه Pure OOP.

صورة ZerOne

بعدني ما عرفت

بعدني ما عرفت حتى انسى Very Happy ، شكرا علمعلومة...

صورة eng.samar

الفحص بيحمل

الفحص بيحمل كتير من الذكريات الحلوة Smile..موفقين إن شاء الله

صورة N.S

حلوة

حلوة الاكتشافات اللي طلعت معكن ليلة الامتحان بس الاحلى تطلع معك بعد الامتحان Mr. Green

هاد الامتحان كان اتعس امتحان بين كل المواد اللي قدمتها بالرغم من انو في مواد تانية بعرف انو ممكن احملها بس ما كانت التعاسة بهاد المقدار Sad

عوضنا على الله و ان شالله ترفعيها بمعدل انتي و الصبايا Smile

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

صورة N.Sham

كتب shashi:  الوقت

كتب shashi:

 

 

الوقت القليل ما هو معيار لدراسة المادة، التركيز وتجميع أكبر قدر من المعلومات هوه المعيار.

 

صحيح ومهما درست ومهما جربت ومهما عملت .. رح تضل امتحانات البرمجة 3 تحوي مالم بخطر على بالك تجريبه Sad

صورة The Tornado

يمكن هي المادة

يمكن هي المادة بالذات اذا الواحد حابب يجيب فيها علامة منيحة لازم يقعد شي اسبوع يمسك السلايدات (المواضيع المطلوبة) ويقعد يشوف كل مثال ويجربو عالكمبيوتر ويجرب يفترض تعديلات من عندو (تفئيسات) ويجرب ويشوف الخرج

وما صعب انو ينجاب فيها علامة منيحة

بس كل مادة والها طريقة دراسة... وبتصور هي الطريقة اللي بتخلي الواحد يجيب علامة بهيك مادة

نعم نعم لغة C++

نعم نعم
لغة C++ أوسع وأكبر وأعم وأدهش لغة برمجة
مليئة بالمفاجئات

وسعيدي الحظ يللي لح يختصوا برمجيات أكيد أكيد لج يوقعوا بغرام هاللغة خاصة بعد مشروع المترجمات

سألوا NightWolf إذا مو مصدقين Smile

بدها Rasha.88 تطلع

بدها Rasha.88 تطلع تكتب مدونة عن اليوم اللي قبل فحص الأتومات..
هداك اليوم كان تحفة بكل ما تحمل هذه الكلمة من معنى Mr. Green

صورة NightWolf

كتب M-Ramy: سألوا

كتب M-Ramy:

سألوا NightWolf إذا مو مصدقين Smile

يلي مو مصدق بكرا بيجرب عمي رامي Very Happy

صورة Joolnar

كتب shashi: وهون

كتب shashi:

وهون كانت الصدمة!!! معقول ما تكون كلمة Virtual ضرورية ضمن توابع الابن!!!!

وفي لسا الاكتشاف التاني تبع إذا كانوا الـ arguments تبع الـ function معرفين objects من الـclass الأب و بعدين باستدعاء الـ function مرّأنا object من الابن بيمشي الحال يعني ما بيقللي "cannot convert...."
كمان هاد الاكتشاف كان شي الساعة 2 و نص Very Happy "وشكلنا بالآخير كلنا طلعنا مو دارسين برمجة(1) Razz "

بانتظار مدونتك "خوارزميات (2) و أشباح وأشياء أخرى..." Mr. Green

صورة mpcabd

كتب Joolnar:كتب

كتب Joolnar:
كتب shashi:

وهون كانت الصدمة!!! معقول ما تكون كلمة Virtual ضرورية ضمن توابع الابن!!!!

وفي لسا الاكتشاف التاني تبع إذا كانوا الـ arguments تبع الـ function معرفين objects من الـclass الأب و بعدين باستدعاء الـ function مرّأنا object من الابن بيمشي الحال يعني ما بيقللي "cannot convert...."


يعني ما شاء الله حولكم اكتشفتو الـ Polymorphism بدون ما حدا يقللكم عليها؟ يا هيك الإكتشافات يا بلا Very Happy

صورة THE LADY

كتب

كتب Joolnar:

بانتظار مدونتك "خوارزميات (2) و أشباح وأشياء أخرى..." Mr. Green

أما ليلة الخوارزميات 2 =; كانت كئيبة وكانت سباق مع الزمن Confused بس بتضل زكرى حلوة Smile Wink

صورة NightWolf

كتب mpcabd:كتب

كتب mpcabd:
كتب Joolnar:
كتب shashi:

وهون كانت الصدمة!!! معقول ما تكون كلمة Virtual ضرورية ضمن توابع الابن!!!!

وفي لسا الاكتشاف التاني تبع إذا كانوا الـ arguments تبع الـ function معرفين objects من الـclass الأب و بعدين باستدعاء الـ function مرّأنا object من الابن بيمشي الحال يعني ما بيقللي "cannot convert...."


يعني ما شاء الله حولكم اكتشفتو الـ Polymorphism بدون ما حدا يقللكم عليها؟ يا هيك الإكتشافات يا بلا Very Happy

في ال implicit conversion كمان Smile

صورة The Tornado

كتب mpcabd:كتب

كتب mpcabd:
كتب Joolnar:
كتب shashi:
وهون كانت الصدمة!!! معقول ما تكون كلمة Virtual ضرورية ضمن توابع الابن!!!!
وفي لسا الاكتشاف التاني تبع إذا كانوا الـ arguments تبع الـ function معرفين objects من الـclass الأب و بعدين باستدعاء الـ function مرّأنا object من الابن بيمشي الحال يعني ما بيقللي "cannot convert...."
يعني ما شاء الله حولكم اكتشفتو الـ Polymorphism بدون ما حدا يقللكم عليها؟ يا هيك الإكتشافات يا بلا Very Happy

Mr. Green