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

استفسارات بخصوص إنشاء وتهيئة array of objects

بدأه ηaseemЈava في 29 أبريل 2013 · 4 رد · 722 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فرضا لدينا كلاس اسمه Person

فيه 3متغيرات الاسم من نوع String وتاريخ الميلاد وتاريخ الوفاة من نوع كلاس أخر اسمه Date

 

public class Person
 {
 private String name;
 private Date birthDate;
private Date diedDate
 ....
}

 

الكلاس Date

public class Date{private String month; private int year;..}

 

إذا أردنا تعريف مصفوفة لعدد من الاوبجكت "ثلاثة أشخاص" من نوع كلاس، بقيم أولية كهذه

فهل سيكون الأمر بهذا الشكل؟

 

 Person[] person = {("ali", new Date("March", 21, 1785), new Date("june", 21, 1785)),
          ("sami", new Date("april", 21, 1785), new Date("March", 21, 1885)),
          ("yusuf", new Date("june", 21, 1785), new Date("May", 21, 1985))};

 

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

وكيف نهيئ instance variables بهذه القيم؟

 

المتغيرات في الكلاس Person ستكون:

 

 

private int arrayLength; private Person[] persons;

 

وكذلك إذا أردنا المستخدم هو من يدخل هذه البيانات

فكيف سيكون شكل الدالة set ؟

وشكرا

تم تعديل هذه المشاركة بواسطة ηaseemЈava في 29 أبريل 2013 في 13:31

#2

السلام عليكم

 

بالنسبة للأكواد التي قمتي بكتابتها ستحدد شكل باني الفئة لكل من الفئات Person و Date كالتالي :

 

طبعاً فئة Person ستكون على النحو التالي :

public class Person {
        private String name;
        private Date birthDate;
        private Date diedDate;
        public Person(String name, Date bDate, Date dDate)
        {
            this.name = name;
            this.birthDate = bDate;
            this.diedDate = dDate;
        }
}

وفئة Date على النحو التالي :

public class Date {
    private int day;
    private String month;
    private int year;
    
    public Date(String month, int day, int year)
    {
        this.month = month;
        this.day = day;
        this.year = year;
    }
}

 

ولتعريف مصفوفة كائنات من الفئة Person ستكون على النحو التالي :

Person person[] = { new Person("ali",new Date("March", 21, 1785),new Date("june", 21, 1785)),
                    new Person("sami", new Date("april", 21, 1785), new Date("March", 21, 1885)),
                    new Person("yusuf", new Date("june", 21, 1785), new Date("May", 21, 1985))};

- أي يجب إنشاء الكائن عند إسناد القيم داخل المصفوفة .

 

- وبالنسبة لضبط القيم داخل الفئة بإستخدام دوال set ستكون بنفس الطريقة المتبعة في باني الفئة .

 

نتمنى لكم التوفيق

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

لا إله إلا أنت سبحانك إني كنت من الظالمين

#3
ahmedsaoud31 كتب:

السلام عليكم

 

بالنسبة للأكواد التي قمتي بكتابتها ستحدد شكل باني الفئة لكل من الفئات Person و Date كالتالي :

 

طبعاً فئة Person ستكون على النحو التالي :

public class Person {
        private String name;
        private Date birthDate;
        private Date diedDate;
        public Person(String name, Date bDate, Date dDate)
        {
            this.name = name;
            this.birthDate = bDate;
            this.diedDate = dDate;
        }
}

وفئة Date على النحو التالي :

public class Date {
    private int day;
    private String month;
    private int year;
    
    public Date(String month, int day, int year)
    {
        this.month = month;
        this.day = day;
        this.year = year;
    }
}

 

ولتعريف مصفوفة كائنات من الفئة Person ستكون على النحو التالي :

Person person[] = { new Person("ali",new Date("March", 21, 1785),new Date("june", 21, 1785)),
                    new Person("sami", new Date("april", 21, 1785), new Date("March", 21, 1885)),
                    new Person("yusuf", new Date("june", 21, 1785), new Date("May", 21, 1985))};

- أي يجب إنشاء الكائن عند إسناد القيم داخل المصفوفة .

 

- وبالنسبة لضبط القيم داخل الفئة بإستخدام دوال set ستكون بنفس الطريقة المتبعة في باني الفئة .

 

نتمنى لكم التوفيق

 

فهمت وجزاك الله خير

 

بخصوص

 

 

اقتباس

- وبالنسبة لضبط القيم داخل الفئة بإستخدام دوال set ستكون بنفس الطريقة المتبعة في باني الفئة .

 

هل ممكن أن تكتب لنا مثال؟

نريد الادخال للقيم عبر المستخدم..

وشكرا جزيلا

تم تعديل هذه المشاركة بواسطة ηaseemЈava في 29 أبريل 2013 في 21:36

#4

السلام عليكم

 

بالنسبة لضبط قيم الفئة , على سبيل المثال ضبط قيمة الـ name في فئة Person تكون على النحو التالي :

public void name(String name){    this.name = name;}

ولضبط تاريخ الميلاد في نفس الفئة تكون كالتالي :

public void setBirthDate(Date bDate)
{
    this.birthDate = bDate;
}

وهكذا على هذا المنوال لباقي صفات الفئة وبالمثل باقي الفئات .

 

- سننشئ دالة تعود لنا بقيم خصائص الفئة وسيكون شكل كل من فئتي Person و Date كالتالي :

 

1- فئة Person :

public class Person {
        private String name;
        private Date birthDate;
        private Date diedDate;
        public Person(String name, Date bDate, Date dDate)
        {
            this.name = name;
            this.birthDate = bDate;
            this.diedDate = dDate;
        }
        
        public String getPerson()
        {
            String ret;
            ret = "Name: "+this.name+"\n";
            ret += "Birth Date: "+this.birthDate.getDate()+"\n";
            ret += "Died Date: "+this.diedDate.getDate()+"\n";
            return ret;
        }
        
        public void name(String name)
        {
            this.name = name;
        }

        public void setBirthDate(Date bDate)
        {
            this.birthDate = bDate;
        }
        
        public void setDiedDate(Date dDate)
        {
            this.diedDate = dDate;
        }
}

2- فئة Date :

public class Date {
    private int day;
    private String month;
    private int year;
    
    public Date(String month, int day, int year)
    {
        this.month = month;
        this.day = day;
        this.year = year;
    }
    
    public String getDate()
    {
        return this.month+" "+this.day+" "+this.year;
    }
    
    public void setDay(int day)
    {
        this.day = day;
    }
    
    public void setMonth(String month)
    {
        this.month = month;
    }
    
    public void setYear(int year)
    {
        this.year = year;
    }
}

 

* نعود للطلب الثاني وهو إدخال القيم من المستخدم , فلنفرض أن المستخدم يريد إدخال بيانات الأشخاص تبعاً وعند الإنتهاء يكتب كلمة exit مثلاً

سيتم إدخال بيانات الشخص على النحو التالي :

Name,Month dd yyyy,Month dd yyyy

- أي اسم الشخص ثم فاصلة يليه تاريخ الميلاد الشهر ثم مسافة فارغة ثم اليوم ثم مسافة فارغة ثم السنة ثم فاصلة ويأتي تاريخ الوفاه بنفس النمط

- ثم الضغط على مفتاح enter لإدخال شخص جديد

- للإنهاء نكتب كلمة exit ثم نضغط enter

 

نأتي لمعالجة السلسة النصية التي قام المستخدم بإدخالها سيتم تحويل السلسة النصية إلى مصفوفات بإستخدام split ومن ثَم تحويل القيم  العددية لأعداد صحيحة ثم إسنادها كوسائط لإنشاء الكائن

- قمنا بإنشاء مصفوفة ArrayList لتخزين الكائنات المنشأة من الفئة Person كما هو واضح من الكود في الفئة الأساسية :

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String arr1[];
        String arr2[];
        String arr3[];
        String str;
        List<Person> person = new ArrayList<Person>();
        while(true)
        {
            str = input.nextLine();
            if(str.equals("exit"))
            {
                break;
            }
            arr1 = str.split(",");
            arr2 = arr1[1].split(" ");
            arr3 = arr1[2].split(" ");
            person.add(new Person(arr1[0],
                    new Date(arr2[0],Integer.parseInt(arr2[1]), Integer.parseInt(arr2[2])),
                    new Date(arr3[0],Integer.parseInt(arr3[1]), Integer.parseInt(arr3[2]))));
        }
        for(int i=0;i<person.size();i++)
        {
            System.out.print(person.get(i).getPerson());
            System.out.println("------------------------");
        }
    }
}

- وفي النهاية تم عمل حلقة لطباعة البيانات التي تم إدخالها من جهة المستخدم

تم تعديل هذه المشاركة بواسطة ahmedsaoud31 في 30 أبريل 2013 في 00:49

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

لا إله إلا أنت سبحانك إني كنت من الظالمين

#5

جزاكم الله كل خير على المجهود والشرح

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