Hanan Fahad2 نشر 21 سبتمبر 2022 أرسل تقرير نشر 21 سبتمبر 2022 ابغا اسئل عن فكرة ارسال كائن public static void fun(className ob){ } ارسال classnameكيف شكلة بالذاكرة فكرة هذا ايش هي refrence /كيف يكون بالذاكرة 2 اقتباس
0 معاذ قره محمد نشر 21 سبتمبر 2022 أرسل تقرير نشر 21 سبتمبر 2022 (معدل) بالطبع يحفظ الكائن من نمط صف ما في الذاكرة على شكل reference (مرجع). أي يقوم بحجز مكان في الذاكرة يناسب خصائص هذا الكائن، ومن خلال هذا المرجع يمكن الوصول إلى الوظائف. وبالتالي عند تمرير الكائن ضمن وظيفة يقوم بعمل نسخة من مرجع هذا الكائن وتمريرها للوظيفة -ربما يختلف هذا الأمر من لغة لأخرى-. فمثلا في لغة جافا يقوم بتمرير الصف كمرجع، وبالتالي إذا كان في الصف وظائف تستطيع التعديل على الكائن (باستخدام ما يسمى بال setter methods) فبإمكاننا التعديل على هذا الكائن. تم التعديل في 21 سبتمبر 2022 بواسطة معاذ قره محمد اقتباس
0 Kais Hasan نشر 21 سبتمبر 2022 أرسل تقرير نشر 21 سبتمبر 2022 في لغة جافا يتم التمرير دائماً بالقيمة، أي أن نسخة من البيانات هي التي يتم تمريرها، لكن ما الذي يتم تمريره هو الذي يجعل فكرة التعديل ممكنة. حيث أنه في جافا عند التعامل مع متحول يحتوي على كائن فإننا فعلياً نتعامل مع ما يسمى object-handler و هو مثل مرجع للغرض، أي أن المتحول بحد ذاته يحمل قيمة مرجع للغرض، و بالتالي عند تمريره بالقيمة سنمرر قيمته و التي هي بحد ذاتها مرجع للغرض. و هذا ما يسمح لنا بالتعديل على الغرض في تابع ما، و لكن لا يمكننا إعادة إسناد المتحول مثل التمرير العادي بالمرجع، حيث أن إعادة الإسناد سوف تعطي قيمة أخرى للمرجع و بالتالي سنصبح نتعامل مع كائن آخر. باختصار يمكنك تغيير القيمة باستعمال توابع الكائن، و لكن لا يمكنك تغيير ما يؤشر إليه الكائن الذي قمت بتمريره، أي أنه سيبقى يحوي على نفس الكائن و لكن يمكن تغيير خصائصه. اقتباس
0 Hanan Fahad2 نشر 21 سبتمبر 2022 الكاتب أرسل تقرير نشر 21 سبتمبر 2022 ليش نحط اسم الكلاس بالداله ليش مانحط اسم الكائن لوحدة public static void fun(className ob){ className ob ليش مانقول ob بدون لاحظت كثير يتم استخدامها شالغرض منها 1 اقتباس
0 معاذ قره محمد نشر 21 سبتمبر 2022 أرسل تقرير نشر 21 سبتمبر 2022 بتاريخ 6 دقائق مضت قال hanan fahad11: ليش نحط اسم الكلاس بالداله ليش مانحط اسم الكائن لوحدة public static void fun(className ob){ className ob ليش مانقول ob بدون لاحظت كثير يتم استخدامها شالغرض منها نضع اسم الكائن ضمن الدالة لكي يعرف المترجم طول البيانات وحجمها في الذاكرة. يعني مثلا عندما نقول للمترجم لدينا الغرض من النمط (Person) فهو يضع بحسبانه أن له صفات معينة مثل الاسم والوظيفة وغيرها (بفرض أننا قمنا بتعريف صف Person). أي أنّ وضع اسم الصف يكون ليعرف المترجم ما هو نمط الغرض الذي يمرّر له وصفاته. وبشكل عام إن كنت تكتب بلغة الجافا فأنت لا تستطيع تعريف طريقة تأخذ غرض من صف بدون اسم الصف void function(obj){...} // خطأ void function(className obj){...} // صواب لا بد من أن تضع نوع هذا الغرض. ويجب أن تنتبه أنك عندما تمرر غرض من صف ضمن طريقة ما تتم عملية قصر ضمني، مثلا لتكن الطريقة: void function(Person p){..} والآن إذا حاولت تمرير كائن من غير نمط ال Person لهذه الطريقة، سيشير لك لخطأ في الكود أنك تحاول تمرير كائن لا يتوافق مع النمط الذي تتطلبه الوظيفة: Car c = new Car(); function(c); // هنا سيشير لك لخطأ وإذا قمت بتنفيذ الكود سيخرج لك الخطأ عدم التوافق بين المعطيات. اقتباس
0 رهف السعيدي نشر 24 يناير 2023 أرسل تقرير نشر 24 يناير 2023 (معدل) Write any Java program that shows the concept of sending an object as a parameter and returning an object to the caller method. تم التعديل في 24 يناير 2023 بواسطة رهف السعيدي اقتباس
السؤال
Hanan Fahad2
ابغا اسئل عن فكرة ارسال كائن
public static void fun(className ob){ }
ارسال classnameكيف شكلة بالذاكرة فكرة هذا ايش هي refrence /كيف يكون بالذاكرة
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.