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

مافائده Tostring Method

بدأه sa7bah* في 22 ديسمبر 2009 · 6 رد · 2,510 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا مبتدئه فى تعلم الجافا واجد صعوبه فى فهم toString method :sad: اشعر بانه مهم جدا

وانا لااعرف ..متى يمكننى ان استخدمها ..مافائدتها .. لا اعرف سوى صياغتها :(

الله يخليكم ياليت توضحونها لى بمثال بسيط لان كل الامثله التى لدى فالكتاب صعبه

.. اوتكتبون اى شي تعرفونه عن هذه الميثود :regular_smile: ..

واكون شـآكرهـ لكم..

تم تعديل هذه المشاركة بواسطة sa7bah* في 22 ديسمبر 2009 في 20:25

استغفر الله واتوب اليه ..~

لآاله الاانت سبحانك انى كنت من الظالمين ..~

#2

toString ليست مفيدة في كل الحالات، فذلك يعتمد على حاجياتك. هذه الطريقة موجودة في الفئة Object وبالتالي فهي موجودة في جميع الفئات، لأن كل الفئات ترث من الفئة Object. هذه الطريقة تعيد كائن من فئة String

لنفترض لدينا الفئة التالية

class Person {

		String firstName, lastName;
		int age;

		public Person(String firstName, String lastName, int age) {
			this.firstName = firstName;
			this.lastName = lastName;
			this.age = age;
		}
	}

إذا نفذنا الكود التالي

Person p = new Person("Ahmed", "Ali", 40);
System.out.println(p);

سنحصل على النتيجة التالية

Person@3e25a5

حصلنا على هذه النتيجة لاننا لم نعمل override لtoString الموروثة من Object.

لكن إذا غيرنا الكود السابق إلى التالي

class Person {

		String firstName, lastName;
		int age;

		public Person(String firstName, String lastName, int age) {
			this.firstName = firstName;
			this.lastName = lastName;
			this.age = age;
		}

		@Override
		public String toString() {
			return firstName + " " + lastName + " / " + age + " years";
		}
	}

سنحصل على النتيجة التالية

Ahmed Ali / 40 years

toString تكون مفيدة عندما نكون بحاجة إلى string representation لفئة ما، إما لطباعتها في الconsole أو لغرض آخر، مثل هذا المثال كيف أضيف object من فئة ما غير String إلى JList؟؟

تم تعديل هذه المشاركة بواسطة herch في 22 ديسمبر 2009 في 21:05

1
#3

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

كلام الاخ herch

صحيح 100%

#4

following to what herch posted

مثال عن إستخدام ال-toString في البرنامج هو ال-logging

/*
  for example if we have a logger in the program
  we can log info about the objects, these info must be
  readable string value.
  */

  logger.info("info about the object " + someObject.toString());
#5

جزاكم الله خير على المساعده

اممممم نحن الى الان لم نتطرق الى override فى الدراسه .. ولكنى فهمتها من هنا اكثر من الـtoString :)

المهم استاذى انا فهمت اننا نستخدم firstName, lastName, age -حسب ماذكر في المثال -

فى وظيفه ما .. وتقوم الـtoString باعاده استخدام نفس هذه المتغيرات لتعديل قيمها ..امممم اقصد لاظهارها ؟!

هل هذا صحيح :blush: ..

ايضا لدى هذا المثال :

public class Increment {
    private int total = 0 ;
    private int INcrement;

    public   Increment (int  Incremen1)
    {
         INcrement = Incremen1;
    }
public void add()
{
    total+=  INcrement;
}

public String toString()
{
    return String.format("total=%d",total );
}
}

public class IncrementTest {
    public static void main (String args[])
    {
         Increment IN =new  Increment(5);
         System.out.printf("befor  Increment:%s\n\n", IN);
         for (int i=1 ; i<=3 ;i++)
         {
             IN.add();
             System.out.printf("after Increment%d:%s\n", i,IN);


         }
    }

}

ياليت تشرحونه لي افضل لانه لا يحتوى على override الله يوفقكم و لايحرمكم الاجر

جزاكم الله الف خير مره اخرى :)

استغفر الله واتوب اليه ..~

لآاله الاانت سبحانك انى كنت من الظالمين ..~

#6

حتى في مثالك تقومين بالoverride.

كل الفئات الموجودة في الجافا ترث من الفئة Object. هذه الفئة تحتوي على الطريقة toString المعرفة كالتالي

public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

إذن عندما نكتب الطريقة toString() في فئة ما، فإننا نكون تلقائيا قد قمنا بالoverride، لأن كل الفئات ترث من Object، وبالتالي كل الفئات تحتوي على الطريقة toString() الموروثة من Object

الطريقة toString الهدف منها هو إعادة String يمثل كائن ما، وفي الغالب سنقوم بإظهار متغيراته، لكن بدون تغييرها، لأنها ليست المكان الأمثل لذلك.

في المثال السابق كنا نعيد String يحتوي على الإسم واللقب والسن.

بالنسبة لمثالك، فلا أدري ما الذي وجدت فيه صعوبة، فالفئة Increment لديها constructor يعمل instanciation للمتغير INcrement، والطريقة add تضيف قيمة هذا المتغير إلى المتغير total

داخل toString، يتم إعادة String يحتوي على قيمة total

في هذا السطر

System.out.printf("befor Increment:%s\n\n", IN);

printf تقوم بالمناداة على toString الخاصة بالكائن IN وتكتب الString الناتج مكان %s

#7

اها يعنى ـoverride هى من تستخدم فى الوراثه حتى لو لم تذكر كما فى مثالي :D

اقتباس
داخل toString، يتم إعادة String يحتوي على قيمة total

وصلت الفكره :happy:

اعتذر فالمثال السابق كنت اريد فهم toString فقط :blush: لكن عموما استاذ شرحك واضح جدا جزاك الله خير

لاحرمكم الله الاجر جميعا

استغفر الله واتوب اليه ..~

لآاله الاانت سبحانك انى كنت من الظالمين ..~

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