27-11-2012, 09:24 PM
إقتباس :قمت بعمل المطلوب ولكن Tshoot لا يندرج تحت TActorسنأتي عليه...
إقتباس :هناك شيء آخر هل إستخدمنا Encapsulation مع الإجراء Initiationالتغليف مطبق على الفئة كلها TActor تطبيقا لمبدأ الصلاحيات الدنيا Least privileges
باختصار عندما تبرمج فئة Class تخيل أنك لست من سيستخدمها.
إقتباس :بصراحة لم أستخدم البرمجة الكائنية من قبل اللهم إلا عند تطبيق الأمثلة الموجودة بالكتبرائع، رائع...
أو التعامل مع المكونات التي أقوم بتحويلها من دلفي للازاراس(و لا تعتبر ممارسه أيضاً)
و لكن أول مرة أتعرض لمشكلة برمجية و أحلها بطريقة كائنية
التفكير بها متسلسل و ممتع جداً
إقتباس :هل يسمح باستخدام الوراثة المتعددة؟ وكيف يتم التصريح؟دلفي ليس مثل ++C لا يدعم الوراثة المتعددة (في نظر البعض هذا أفضل!)
دلفي كبقية لغات البرمجة الأخرى ذات التوجه الكائني يمكنه محاكاة ذلك باستخدام Interface
إقرأ عن: multiple inheritance delphi
كود :
http://stackoverflow.com/questions/1276173/how-to-implement-multiple-inheritance-in-delphiنعود إلى Tshoot لنحاول صناعة نوعين من الطلقات: TShoot رشاش، TBomb قنبلة
كلاهما يمضي عقد/يتفق/يتعهد... على:
- تصريح إجراء Procedure باسم Fire
- تصريح تابع Function باسم Fired ترجع Boolean
هنا يمكننا كتابة واجهة IFire مثلا:
PHP كود :
type
IFire = interface
procedure Fire;
function Fired: Boolean;
end;
- يمكن بناء صنف آخر (جد) لـ TShoot و TBomb
هناك حلول أخرى الأمر واسع...
كان بالإمكان بناء هيكل برمجي أكثر تطابقا مع حقيقة اللعبة لكنه أكثر تعقيدا
إقتباس :ولكن استخدمت Timage كancestorانس أمر واجهة المستخدم

المرفق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...

