الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في الصفوف والوراثة

بدأه Tammam_KD في 14 أبريل 2011 · 11 رد · 1,087 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب محتاجة مساعدتكمم لحل المشكلة التالية ..........

قمت بكتابة كلاسين (class) أحدهما موروث من الأخر كما يلي :

public abstract class Class1
 {


}

public class Class2 : class1
 {


}

ألآن قمت بالتعريف عن مصفوفة

class1[] c = new class1[1000];

public void Add(class1 C)
 {

count = -1
            c[count++] = C;
 }

لكن وللأسف يعطيني رسالة خطأ أنه لايمكن أن تتم عملية الإضافة من هذهين الصفين لبعضهما .. ....

تم تعديل هذه المشاركة بواسطة Tammam_KD في 14 أبريل 2011 في 22:54

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#3

السلام عليكم ورحمه الله وبركاته

انصحك اخي تمام باستخدام مفهوم ال Collections .. حاول تجرب هذا


List<Class1> myClasses=new List<Class1>();
public void Add(Class1 c)
{
myClasses.Add(c);
}

.:: Wish to become better and better ::.

#4
System Down كتب:

الكود الثاني أين وضعته؟ وما الغرض منه؟

عفوا أخي نسيت أن أقول لك أن الكود الثاني ... اي المصفوفة وتابع الإضافة للمصفوفة قمت بتعرفيه ضمن Class2...........

VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

انصحك اخي تمام باستخدام مفهوم ال Collections .. حاول تجرب هذا


List<Class1> myClasses=new List<Class1>();
public void Add(Class1 c)
{
myClasses.Add(c);
}

مشكور أخي VB Helper ....... لا أخفيك أني بصدد مساعدة أحدهم بحل وظيفة وقد كان أحد الطلبات القيام بهذه المهمة باستخدام المصفوفات ... أنا أعلم أن هذه الميزة متاحة ويمكن إضافة مصفوفة من صف ما إلى صف آخر موروث منه ولكن تبقى المشكلة كما اشار إلي أحدهم

أن الصف الوارث هو عبارة عن صف أكبر من الصف الموروث ... ويجب إعادة ضبطه لكي يصبح بحجم الصف الموروث ... وشبهها لي بوعاء كبير و وعاء صغير .... المهم أنني لم أمر كثيرا في OOP ولكن كيف يمكن أن نجري هذه الخطوة بنجاح

رسالة الخطأ التي يعطيني اياها هي بالتحديد :

Index was outside the bounds of the array.

وذلك بمجرد تنفيذ التابع Add

تم تعديل هذه المشاركة بواسطة Tammam_KD في 15 أبريل 2011 في 13:33

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#5

السلام عليكم ورحمه الله وبركاته

اخي ليش اسندت القيمه -1 داخل الداله؟؟ حط القيمه الافتراضيه خارج الداله

.:: Wish to become better and better ::.

#7

السلام عليكم

أخي، رسالة الخطأ واضحة

Index was outside the bounds of the array

يعني تستعمل فهرس (index) أكبر أو أصغر من المسموح به

ووضعت في بداية الحلقة c[count++] = C يعني أنك بدأت بـ -1

استخدم c[++count] = C لزيادة قيمة count قبل استخدامها

تم تعديل هذه المشاركة بواسطة __الهاوي__ في 15 أبريل 2011 في 20:42

#8

مشكورين جميعا .... فعلا تم حل المشكلة بطريقة الأخ الهاوي

الآن لم لا يضاف للمصفوفة السابقة سوى الخاصية الأولى لعنصر المصفوفة اي كل صف يحوي خصائص معينة  .... مثلا الخاصية name و الخاصية الثانية هي password .......

عندما استدعي تابع الإضافة للمصفوفة يتم إضافة الخاصية name فقط ولا أرى أثر ل password ؟؟؟؟؟؟؟؟؟

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#9
Tammam_KD كتب:

مشكورين جميعا .... فعلا تم حل المشكلة بطريقة الأخ الهاوي

الآن لم لا يضاف للمصفوفة السابقة سوى الخاصية الأولى لعنصر المصفوفة اي كل صف يحوي خصائص معينة  .... مثلا الخاصية name و الخاصية الثانية هي password .......

عندما استدعي تابع الإضافة للمصفوفة يتم إضافة الخاصية name فقط ولا أرى أثر ل password ؟؟؟؟؟؟؟؟؟

Code?

#10

السلام عليكم ورحمه الله وبركاته

قلت لك في السابق المشكله من ال count=-1 .. ووجودها هنا لا يزيد ولا ينقص المتغير؟!! المهم انها ضبطت معاك .. بالتوفيق

.:: Wish to become better and better ::.

#11
System Down كتب:

Code?

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

لدي الصف الأول كما يلي :

public abstract class class1
    {
        double amount = 0;
     int NBMonths = 0;
        string person = "";


}

يتم الاسناد لهذه القيم بشكل سليم مئة بالمئة من خلال التابع الباني

ولدي الصف :

public class class2 : class1
    {
        string Type = "";
        double amount = 0;
        int NumberOfMonths = 0;
        double salary = 0;


}

ايضا يتم اسناد القيم من خلال التابع الباني بشكل سليم

وكما علمتم في السؤال السابق كانت مشكلتي هي عدم مقدرتي على الإضافة لمصفوفة .... وبفضل جهودكم المشكورة تم حل المشكلة

الآن عند استدعاء المصفوفة أريد عرض القيمة المخزنة ضمن المتحول ammount الخاصة بكل عنصر عنصر مخزن في هذه المصفوفة  ... للأسف لا استطيع سوى  من خلال طباعة c[count].ammount

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#12
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

قلت لك في السابق المشكله من ال count=-1 .. ووجودها هنا لا يزيد ولا ينقص المتغير؟!! المهم انها ضبطت معاك .. بالتوفيق

أسف أخي VB helper لم انتبه لمدى دقة اجابتك فعلا كنت قد أجبت بالجواب الصائب

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

مواضيع مشابهة