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

اسئلتكم واستفساراتكم

مغلقرائج
بدأه علاء الصالحي في 8 نوفمبر 2008 · 958 رد · 57,657 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#401

فقط حاول، أنا أيضا عندما دخلت المنتدى لم أكن أستطيع الكتابة بالعربية أو التعبير بها، لأن دراستي كانت بالفرنسية. إعتبرها فرصة للتدرب على اللغة :lol:

#402

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

عند تعريف متغيرات في Class ما , نعرفها كالتالي ..

private int y ;

ونستطيع تعريفها هكذا أيضاً.. ,

protected int y ;

أعلم بأن التعريف الأول هو الأفضل , و لايستحب إستخدام الطريقة الثانية ..

وسؤالي , لماذا لايستحب ؟!

وشكـراً :) ,

..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#403

private تعني أن هذا المتغير لا يمكن استعماله إلا داخل الفئة التي عرف فيها، بينما protected تعني أنه يمكن الوصول إليه وتغييره من الفئة التي عرف فيها وأيضا من الفئات التي ترث منها.

التعريف الأول ليس بالضرورة أفضل من الثاني، ذلك يعتمد على الموقف الذي يستعمل فيه، لكن غالبا يجب أن تكون المتغيرات private ويمكن الوصول للمتغير عن طريق getters & setters.

لنفترض مثلا أنك لديك فئة Product تحتوي على متغير price

class Product {
	public int price;
	//....
}

public class Main {
	public static void main(String[] args) {
		Product p = new Product();
		p.price = 20;
	}
}

نستطيع الوصول للمتغير price مباشرة وتغييره.

لنفترض أن المخزن الذي يستعمل البرنامج طلب منك عدم السماح بإدخال ثمن أقل من 50 درهما، هذا يعني أنك يجب أن تذهبي إلى جميع الأماكن التي تستعملين فيها الفئة Product وتغيري الكود بحيث لا يقبل أقل من 50 درهما. في المثال استعملت الفئة مرة واحدة، ولكن في موقف حقيقي فستكون هذه الفئة مستعملة في الكثير من الأماكن، ويصعب معرفتها كلها.

لنرى الآن لو كنا استعملنا setter method منذ الأول

class Product {
	private int price;

	public void setPrice(int pr) {
		price = pr;
	}
}

public class Main {
	public static void main(String[] args) {
		Product p = new Product();
		p.setPrice(20);
	}
}

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

	public void setPrice(int pr) {
		if (pr >= 50) {
			price = pr;
		} else {
			System.out.println("The price is under the minimum limit");
		}
	}

لهذا يتم تفضيل private على باقي الmodifiers،سواء public أو protected أو package

المبرمج الجيد هو مبرمج كسول :lol:، فعندما تكتبين برنامجك بشكل جيد ستكونين مرتاحة بشكل أكبر وتتجنبين المشاكل المتعبة.

.

تم تعديل هذه المشاركة بواسطة herch في 13 ديسمبر 2009 في 23:55

1
#404

شكراَ جزيلاً على الإجابة يا أخ عصام ,

ستكون لي عودة إذا وجدت شيء غامض بالنسبة لي ..

..

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 14 ديسمبر 2009 في 00:34

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#405

شرح أكثر من رائع , أتضحت لي الصورة .. ,

الله يجزاك الجنة ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#406

تبادر في ذهني سؤال (و حقيقة لا أعلم مدى صحته ) !

هل في عدم أستخدام protected , نوع من الحماية للبيانات ؟

سؤال غبي , لكن أحتاج الإجابة ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#407

هل تعنين عند استخدام private بدل protected؟؟

#408

نعم ,

عند إستخدام private , هل البيانات ستكون محمية أكثر ؟؟ ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#409

private تحمي ال-access لل-member. فهي لا تسمح بال-direct access لل-private member من خارج ال-class .

1
#410

شكراً جزيلاً على التوضيح ,

جزاك الله خيراً ..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#411

شكراجزيلا على الاجابه .. herch,NullOne :)

كنت اختار run main Project :blush:

جزاكم الله خيراعلى التوضيح

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

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

#412

كيف اعمل package استخدمها فيما بعد و في مشاريع اخرى ؟؟؟؟

تم تعديل هذه المشاركة بواسطة sameh mahmoud في 16 ديسمبر 2009 في 16:36

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#413

تعمل الحزمة بشكل عادي وتضيف لها الفئات الخاصة بها، ثم تضعها في ملف jar، وفي الفئات التي ستسعمل الحزمة تعمل import لها، وبالطبع لازم تضيف الملف jar للCLASSPATH

تم تعديل هذه المشاركة بواسطة herch في 16 ديسمبر 2009 في 17:04

#414

شكرا عصام

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#415

يجب أن تفكر في تصميم الكود

تتعلم بعض الأشياء عن design pattern و refactoring

تتعلم بعض الأشياء عن thread safe

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#416

شكرا للأخ علاء

سؤال اخر (انا اسف انه سؤال بدائي )

و هو : ما هو الـ collection الذي يؤدي وظيفة الجدول ؟؟ , او بمعنى اخر يؤدي وظيفة المصفوفة ذات البعدين [][] و لكن يحتوى على خاصية مسح سطر معين و كذلك اضافة سطر جديد ؟؟

و شكرا جدا

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#417

هل تعني مثل dictionary؟؟ يعني يكون فيه أزواج key->value

#418

ليسkey value يا عصام هو عبارة عن اعمدة و صفوف , بحيث تقاطع صف مع عمود يعطي قيمة معينة , مثل المصفوفة ذات البعدين

هل وصلت الفكرة ؟؟؟

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#419

لا أدري إذا كانت موجودة، لكن ممكن تعمل collection ذات بعدين، أو collection مكونة من collection، كالمصفوفة ذات بعدين التي هي في الحقيقة مصفوفة مكونة من مصفوفات

ArrayList<Arraylist<String>>
#420

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

جربت الكود في هذا الموضوع

/index.php?showtopic=210304

تظهر لي النافذة في الزاوية اليسرى العليا , وأنا أريد ظهورها في منتصف الشاشة ؟

ماهو الكود اللازم لفعل ذلك ؟ .

بحثت لكن لم أجد أو ربما لم أبحث جيداً :sad: ..

و لم نتطرق إلى التعامل مع النوافذ حتى الآن ..

وشكـراً جزيلاً ..

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 17 ديسمبر 2009 في 02:47

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#421

استعملي setLocationRelativeTo ومرري لها null

		JFrame frm = new JFrame();
		//...
		frm.setLocationRelativeTo(null);
		frm.setVisible(true);
#422

أضفت هالسطر ..

 frm.setLocationRelativeTo(null);

ونفذ المطلوب ..

المعذرة :sad:..

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#423
herch كتب:

استعملي setLocationRelativeTo ومرري لها null

		JFrame frm = new JFrame();
		//...
		frm.setLocationRelativeTo(null);
		frm.setVisible(true);

شكراً جزيلاً ..

تم تعديل هذه المشاركة بواسطة إشراقــه فجــر في 17 ديسمبر 2009 في 03:21

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#424

لماذا تحتاج هكذا شيء يا سامح؟

كما قال عصام بإمكانك أن تستخدم مصفوفة المصفوفات فينتج عندك بعد ثاني

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#425

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

اولا اعتذرعن طرح سؤالى بهذه الطريقه لكنى محتاجه لمساعدتكم ولم اعرف كيف اوضحه :blush:

ثانيا السؤال كما يلي :)..

The CPU class is described as follows:

• One attribute:

clockSpeed – a double value representing the clock speed of the CPU object. Note: clock speed of a modern computer may be something like 2.5GHz, so a value you could use for testing purposes is 2.5.• Two constructors:

A default constructor.

A constructor that initializes the attribute, where cs is the clockSpeed.

• Two methods:

getClockSpeed() – return the clockSpeed value associated with the CPU object.

setClockSpeed(cs) – change the clockSpeed value associated with the CPU object, where cs is the new value.

انا قمت بحله كما يلى مع انى لم افهم الملاحظه :( لااعلم مدى اهميتها لكنى اتمنى توضيحها :

public class CPU
{
    private double clockSpeed;

    public CPU(double cs)
    {
        clockSpeed = cs;

    }

		public double getclockSpeed()
		{

			return clockSpeed;
		}

public void setclockSpeed( double cs)
	{
		 clockSpeed = cs;
	}
}

ايضا الكلآس test كتبته باكثر من طريقه لكنه مليء بالاخطاء :( ..

public class CPUTest
{
     public static void main(String args[])

     {
      CPU cpu1=new CPU();

      cpu1.getclockSpeed();

     }

}

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

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

هذا الموضوع مغلق.

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