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

متغير !

بدأه القرني في 1 مايو 2010 · 22 رد · 1,016 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اسعد الله مســـــائكم//صبـــــــــاحكم بكل خير ..

سوف ابدا استفساري بايجااااز .. واتمنى القى الاجابة لديكمــ ..

استفاسري سهل ممتنع ..

لمن يكون عندي class ويحتوي على متغيرات واحد هذه المتغيرات فريد اي لا يمكن يتكرر مع اي اوبجكت اخر ..

كيف بيكون هذا المتغير ..

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

لابد ان يكون عندي رقم الطالب unique كيف ؟؟

علما بان constructor الخاص بهذا class بياخذ جميع القيم السابقه كـ parameter

<<<<شكــــــــــــرا >>>

#2

السلام ممكن مع استعمال

//by amine el harrak 2010/4/30
public class Program {

	public static int var;
	public int number=0;
	public String name;

	public Program(String name) {
		var++;
		this.number=number+var;
		this.name=name;
	}

	public static void main(String[] args) {
		//instanc...
		Program a=new Program("Amine");
		Program b=new Program("prog_main");
		Program c=new Program("prog_main");
		Program d=new Program("prog_main");


		//print object
		System.out.println(a.number);
		System.out.println(d.number);


	}

}

تم تعديل هذه المشاركة بواسطة prog_main في 1 مايو 2010 في 22:35

#3
prog_main كتب:

السلام ممكن مع استعمال

//by amine el harrak 2010/4/30
public class Program {

	public static int var;
	public int number=0;
	public String name;

	public Program(String name) {
		var++;
		this.number=number+var;
		this.name=name;
	}

	public static void main(String[] args) {
		//instanc...
		Program a=new Program("Amine");
		Program b=new Program("prog_main");
		Program c=new Program("prog_main");
		Program d=new Program("prog_main");


		//print object
		System.out.println(a.number);
		System.out.println(d.number);


	}

}

ممتاز باركـ الله فيكـ ,,

ولكن الى الان لم تنحل مشكلتي ..

لان constructor لا اريده بهذه الطريقه ,,

public Program(String name) {
                var++;
                this.number=number+var;
                this.name=name;
        }

الـ constructor الذي اريده يكون محتوي للجميع البيانات من اسم ورقم و,,, الخ..

يعني انا لمن انشيء اي اوبجكت جديد بعطيه من ضمن الـ parameter القيمة التي اريدها ان تكون unique

فلا اريد الكمبيوتر يعطي القيمة بل المستخدم ,,

بارك الله فيكـ ,,,

#4

:) لاشكر على واجب ممكن تستعمل دالة للبحث عن الرقم الطالب هل موجود قبل الاضافه

تم تعديل هذه المشاركة بواسطة prog_main في 1 مايو 2010 في 23:42

#5

تحتاج إلى proxy لعملية إنشاء الكائن من النوع طالب

بمعنى آخر هناك class آخر يقوم ببناء الكائنات من النوع student

وهذا الـ proxy يحتوي على pool فيه كل الكائنات التي تم إنشاؤها من الفئة Student مسبقاً

تحياتي

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

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

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

728x90.png

#6
علاء الصالحي كتب:

تحتاج إلى proxy لعملية إنشاء الكائن من النوع طالب

بمعنى آخر هناك class آخر يقوم ببناء الكائنات من النوع student

وهذا الـ proxy يحتوي على pool فيه كل الكائنات التي تم إنشاؤها من الفئة Student مسبقاً

تحياتي

استاذ علاء ,,,

فضلا لا امرا .. ممكن توضح موضوع proxy اكثر ولو بعرض مثال مبسط ..

او تضع لنا اسم لكتاب او مصدر يشرح لنا هذا التكنيك ..

دمت بالف خير ..

#7

هو شيء متعلق بعلم الأنماط design patterns

على العموم كنت كتبت موضوع عنه في مدونتي

http://modonat-alaa.freehostia.com/2008/12/%D8%A7%D9%84%D9%86%D9%85%D8%B7-%D8%A7%D9%84%D8%AE%D8%A7%D9%85%D8%B3-%D9%86%D9%85%D8%B7-%D8%A7%D9%84%D9%88%D9%83%D9%8A%D9%84/

تحياتي

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

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

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

728x90.png

#8

نعم وهو نفس الجواب مسبقا اي تخزين الكائنات داخل arraylist / map / .....

#9

اخوتي هذا السؤال بصراحة ..

وينطوي عليه اسئله كثيره وهذا وقف عقبه في طريقي ..

Define a class, called Student, to represent students. Each student has an idNumber (that is unique to them), afamilyName, a personalName and a yeaOfBirth. Make use of the NetBeans facility to generate getters and setters. Note that the idNumber should only have a getter while all other instance variables should have getters and setters. Also use the NetBeans facility to generate a constructor (see below):

A student can then be created with:

( Student student1 = new Student(1,"Bloggs", "Fred",1980) ;

وهذي محاولتي البائسة ..

public class Student {
    private int idNumber ;
    private String afamilyName;
    private String personalName;
    private String yeaOfBirth;

    private ArrayList<Integer> arr ;

 public  Student(int id ,String fm ,String per ,String dob){
     if(arr.contains(id))
     System.out.println("Soory :The student id is errdy used ");
     else  {
     this.idNumber=id;
     this.afamilyName=fm;
     this.personalName=per;
     this.yeaOfBirth=dob;
     arr.add(id);
     }

    }
#10

أخي أنت الآن لديك طالب واحد

لكن لكي تقول أن لديك مجموعة من الطلاب تحتاج إلى فئة جديدة اسمها مجموعة طلاب

وهذه الفئة تحتوي على طريقة لتخزين الطلاب

مثل array أو List

وعندما تريد إضافة طالب جديد إلى مجموعة الطلاب ستقوم بفحص مجموعة الطالب إذا كان الطالب ينتمي للمجموعة مسبقاً

(بمعنى أن المعرف الخاص به موجود مسبقاً)

لن تضيفه مع رسالة خطأ تقول أن المعرف موجود مسبقاً

تحياتي

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

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

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

728x90.png

#11
علاء الصالحي كتب:

أخي أنت الآن لديك طالب واحد

لكن لكي تقول أن لديك مجموعة من الطلاب تحتاج إلى فئة جديدة اسمها مجموعة طلاب

وهذه الفئة تحتوي على طريقة لتخزين الطلاب

مثل array أو List

وعندما تريد إضافة طالب جديد إلى مجموعة الطلاب ستقوم بفحص مجموعة الطالب إذا كان الطالب ينتمي للمجموعة مسبقاً

(بمعنى أن المعرف الخاص به موجود مسبقاً)

لن تضيفه مع رسالة خطأ تقول أن المعرف موجود مسبقاً

تحياتي

اخي علاء..

احس باحباط شديد ..

لكن بارك الله فيك

تجمدت الافكار ,,

#12

ما المشكلة أخي بالضبط؟

ما الذي يصعب عليك؟

تحياتي

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

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

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

728x90.png

#13
علاء الصالحي كتب:

ما المشكلة أخي بالضبط؟

ما الذي يصعب عليك؟

تحياتي

المشكه اخي هذا السؤال ..

وانا لم اتوصل لحله الى الان .. ويرتبط به اسئله اخرى ..

اتمنى المساعده ولو على بي سي دكود .. لان هذه اول مره ابرمج جافا ..

دمت سالمـــــــاُ..

#14

وهذا ما أقوم به منذ البداية

أنا أعطيك الفكرة العامة عن الموضوع

وعليك أنت أن تقوم بكتابة الشيفرة وعندما تكتب الشيفرة أقوم بمساعدتك في حل الأخطاء

تحياتي

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

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

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

728x90.png

#15

اخي علاء ..

انا وصلت الى هنـــأ ..

الكلاس الاول

package mypkg;

import java.util.ArrayList;

/**
 *
 * @author M
 */
public class Student {
    private int idNumber ;
    private String afamilyName;
    private String personalName;
    private String yeaOfBirth;



 public  Student(int id ,String fm ,String per ,String dob){


     this.idNumber=id;
     this.afamilyName=fm;
     this.personalName=per;
     this.yeaOfBirth=dob;



    }

    public int getIdNumber() {
        return idNumber;
    }


}

والكلاس main

package mypkg;

import java.util.ArrayList;

/**
 *
 * @author M
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       Student s1 = new Student(1 , "FFFFF" , "GGGGGG" , "23" );
       Student s2 = new Student(2 , "AAAAA" , "BBBBBB" , "23" );
       Student s3 = new Student(1 , "SSSSS" , "NNNNNN" , "23" );

       ArrayList<Student> arr = new ArrayList<Student>();




    }

}

وش ممكن اسوي الان ...

دم ســــــــالماً

#16

جيد جداً الآن الوضع كالتالي

قم بتخزين الكائنات في ArrayList وذلك عن طريق الدالة add

ثم بعد ذلك قم بعمل بحث داخل arrayList باستخدام الدالة get فإذا وجدت الكائن الجديد له نفس المعرف القديم فلا تضيفه للمجموعة

وبهذا نضمن عدم وجود تكرار

تحياتي

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

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

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

728x90.png

#17

ااستاذ علاء.. صباح النور

اضيف هذا الكونتينر ؟؟

لكن كيف بيكون الشرط

public static void main(String[] args) {
        // TODO code application logic here
       Student s1 = new Student(1 , "FFFFF" , "GGGGGG" , "23" );
       Student s2 = new Student(2 , "AAAAA" , "BBBBBB" , "23" );
       Student s3 = new Student(1 , "SSSSS" , "NNNNNN" , "23" );



       ArrayList<Student> arr = new ArrayList<Student>();

       for(Student s : arr)
           if(s.getIdNumber()==?????)

اعرف اني غلبتكـ معي .. جزاك ربي الجنة .

#18

طيب الآن فكر في عمل فئة اسمها StudentGroup

وهذه الفئة يفترض أن تكون فيها ArrayList

ودالة اسمها addStudent لها مدخل من نوع Student تقوم بأمرين

1- تقوم باستخدام الدالة get في arrayList بحيث تتأكد أن المعرف الخاص بالطالب غير مكرر

2- باستخدم الدالة add الموجودة في arrayList نقوم بإضافة الكائن الجديد إلى مجموعة الطلاب

تحياتي

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

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

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

728x90.png

#19
علاء الصالحي كتب:

طيب الآن فكر في عمل فئة اسمها StudentGroup

وهذه الفئة يفترض أن تكون فيها ArrayList

ودالة اسمها addStudent لها مدخل من نوع Student تقوم بأمرين

1- تقوم باستخدام الدالة get في arrayList بحيث تتأكد أن المعرف الخاص بالطالب غير مكرر

2- باستخدم الدالة add الموجودة في arrayList نقوم بإضافة الكائن الجديد إلى مجموعة الطلاب

تحياتي

اخي علاء هل الداله addStudent اضيفها في الـ Student كلاس

او اضيف كلاس اخر اسميه تسجيل طلاب واضيف هذه الداله اليه ؟؟

#20

يمكنك عمل الاثنيتين

1- تقوم باستخدم singleton pattern

بحيث يكون لديك دالة static تقوم بإناشاء الكائنات من خلالها

ويكون صانع الكائنات لديك private

2- تعمل على الفئة Students وتقوم باستخدامها على أساس أنها هي الممر للفئة Student

ونحن نعمل على هذا الحل

لذا نعم الدالة addStudent تكون في Students

تحياتي

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

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

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

728x90.png

#21
علاء الصالحي كتب:

يمكنك عمل الاثنيتين

1- تقوم باستخدم singleton pattern

بحيث يكون لديك دالة static تقوم بإناشاء الكائنات من خلالها

ويكون صانع الكائنات لديك private

2- تعمل على الفئة Students وتقوم باستخدامها على أساس أنها هي الممر للفئة Student

ونحن نعمل على هذا الحل

لذا نعم الدالة addStudent تكون في Students

تحياتي

اخي علاء ماذا تقصد بكلمة ممر "تعمل على الفئة Students وتقوم باستخدامها على أساس أنها هي الممر للفئة Student"

وماهو رايك لو عملت اكسبشن باستخدام التراي والكاتش داخل Student هل هذا ممكن يعنينا عن هذه الداله ؟؟

بارك الله فيكـ ..

#22

كما قلنا مسبقاً proxy

طيب ما رأيك أن تقرأ عن singleton قليلاً

وهذه وصلة من موقعي

اقرؤه وحاول أن تدمجه مع ArrayList ثم ارني محاولاتك وبإذن الله لن تكون إلا راضٍ

بالمناسبة هل هذا مشروع لمادة برمجة جافا؟

إذا كان كذلك فاسمحلي أبلغ أستاذك أن هذا فوق المستوى بمراحل

تحياتي

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

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

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

728x90.png

#23

لا داعي للبروكسي ! لدي طريقة أسهل ...

import java.util.ArrayList;
import java.util.Random;

public class Student {
	static private ArrayList<Integer> arr = new ArrayList<Integer>();
	private int id;
	private String name;

	Student(String name) {
		Random r = new Random();
		int id = r.nextInt();
		while(!arr.contains(id)){
			id = r.nextInt();
		}
		this.id = id;
		arr.add(id);
		this.name = name;
	}

	Student(int id, String name) {
		if (!arr.contains(id)) {
			this.id = id;
			arr.add(id);
			this.name = name;
		} else {
			// throw some exception !
		}
	}
}

:wink:

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 5 مايو 2010 في 16:53

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