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

كيف ارسل قيمة متغير من class الى class آخر

بدأه vector_ever في 26 مارس 2011 · 9 رد · 668 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال وهو كالتالي

اذا كان لدي صنفان class A و class B وعرفنا بالصنف الاول متغيرات كما يلي على سبيل المثال :

class A {
private x = 5;
private y = 3;

}

ولنفرض انني اردت ان ارسل قيمة x واخزنها في متحول تابع للصنف B

class B {
private z ;

/*
من المفروض ان اخزن هنا في المتحول
 z
 القيمة
 x
 من
 class A
*/

}

مع العلم اني لا اريد ان استخدم اي من الماهج setter & getter

فما هي الخطوة الناقصة

وشكرا

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#2

باستخدام المنشئ constructor

calss B{

private int z = 0;

public B(int value){

z = value;

}

}

class A{

private int x = 5;

private void Func(){

B b = new B(x);

}

}

ويمكنك جعله مرئى لكل الفئات

class B{

public static int z = 0;

}

class A{

private int x = 5;

private void Func(){

B.z = x;

}

}

ولكن الاولى افضل ولك حرية الاختيار

تحياتى

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

شكرا لك اخي محمد على هذا الشرح بارك الله بك

دائما متميز ما شاء الله

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#4

أو عن طريق الـ inheritance

class ClassA
{
    protected int x = 5; // لازم يكون بروتكتيد هنا على الأقل
}

class ClassB extends ClassA
{
    private int z;
    public ClassB()
    {
        z = x;
    }
}
597657.png
#5

طيب انا سؤالي سيكون بالتحديد وهو ما اريده وتم اغفاله ببداية سؤالي

وهو كيف امرر قيمة موجودة داخل method الى method آخر بكلاس آخر والشرح كما يلي

class A{

/*
here we can declare evry thing 
private values, constractor, setter & getter
and what ever
*/

// هنا ناتي للميثود الذي سنعرف بداخله متغير بحيث نريد ان نمرر هذا المتغير لميثود اخر بكلاس اخر

public void move(){

 المتغير الذي نريد تمريره لميثود اخر بكلاس اخر//
int x =5;
}
}

ناتي الآن لكلاس آخر وهو الذي نرغب بان نمرر قيمة المتغير السابق اليه

class B{

/*
here we can declare evry thing 
private values, constractor, setter & getter
and what ever
*/

 // هنا سنعرف ميثود وبداخل هذا الميثود نريد ان نمرر قيمة المتغير الموجود في الكلاس السابق

public void move(){

int y = 0;
/*
 الآن ما نريده هو تمرير قيمة المتغير في الكلاس الاخر الى هنا 
مثلا نريد ان نحصل على النتيجة التالية
y = x+1;
*/
}
}

اخواني انا حاولت استخدام الحلول السابقة ولم اجد اي منها مناسب للاىسف

فهل من مساعدة

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#6

عرّف المتغير كـ field للكلاس الأول

فرضاً راح نستخدم الـ inheritance

class ClassA
{
    protected int x = 0;
    public void move()
    {
        x = 5;
    }
}

class ClassB extends ClassA
{
    public void move()
    {
        int y = 0;
        y = x + 1;
    }
}

تم تعديل هذه المشاركة بواسطة Eng.Fouad في 26 مارس 2011 في 22:38

597657.png
#7
Eng.Fouad كتب:

عرّف المتغير كـ field للكلاس الأول

فرضاً راح نستخدم الـ inheritance

class ClassA
{
    protected int x = 0;
    public void move()
    {
        x = 5;
    }
}

class ClassB extends ClassA
{
    public void move()
    {
        int y = 0;
        y = x + 1;
    }
}

للاسف اخي حلك للاسف لن يفيدني لانني لا أستطيع التصريح عن المحول x خرج الميثود move

لانه هذا المتغير حصرا يجب ان يكون داخل المتغير بالاساس المشكلة لدي انه المتغير الذي ارغب به سيكون ناتج عن عمليات تنتج داخل هذا الميثود

لذلك لا استطيع التصريح عنه خارج الميثود

فهل لديك فكرة انية

شكرا

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#8

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

الحل الوحيد أعتقد هو أن تخرن قيمة المتغير الموجود داخل الميثود في متغير آخر على مستوى الكلاس بحيث يمكن للكلاسات الأخرى معرفة قيمته

597657.png
#9

اعرف انه طلبي صعب وغريب لذلك لجات الى امساعدة

على كل حال اخي ما قصرت

حياك الله

تقبل مودتي

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#10

حاولت فى حل اخر هو ملخبط شوية

class A
{
   static int y;
    public void move()
    {
      int  x = 5;
       y= B.move(x);


    }
}

class B 
{
    public static int move(int x)
    {
        int y = 0;
        y = x + 1;
        return y;
    }
//و قيمة الجمع النهائية تكون فى A.y 
}

و اعتقد انه لا يوجد حل اخر غير المعروض من الاخوة

00020309t.gif

1958_1963.gif

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