إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    Java الكلاس Properties في جافا

    مقدمة

    الكلاس Properties يرث من الكلاس Hashtable و هو يستخدم أيضاً لتخزين العناصر بشكل Key / Value.

    بما أنه يرث من الكلاس Hashtable, فهذا يعني أنه يملك جميع الدوال الموجودة فيه.

    الفرق الأساسي بين الكلاس Properties و الكلاس Hashtable هو أن الكلاس Properties يمكنه تخزين Keys و Values فقط من النوع String.
    بالإضافةً إلى أن الكلاس Properties يحتوي على دوال جاهزة للتعامل مع الملفات.

    كونستركتورات الكلاس Properties

    الجدول التالي يحتوي على جميع الكونستركتورات الموجودين في الكلاس Properties.

    الكونستركتور مع تعريفه
    public Properties() هذا الكونستركتور الإفتراضي في الكلاس Properties, يستخدم لإنشاء كائن نوعه Properties.
    public Properties(Properties defaultProperty) يستخدم هذا الكونستركتور لإنشاء كائن نوعه Properties يملك عناصر مسبقة من كائن الـ Properties الذي نمرره كـ Argument.
    سيتم اللجوء إلى الكائن defaultProperty عند البحث عن قيمة مفتاح غير موجود في كائن الـ Properties.

    دوال الكلاس Properties

    الجدول التالي يحتوي على جميع دوال الكلاس Properties.

    الدالة مع تعريفها
    public String getProperty(String key) ترجع قيمة المفتاح الذي نمرره لها كـ Argument.
    في حال كان كائن الـ Properties لا يحتوي على المفتاح الذي مررناه لها, ترجع القيمة null.

    ملاحظة: في حال كان كائن الـ Properties يملك كائن Properties إفتراضي يحتوي على المفتاح المطلوب و الذي لم يتم العثور عليه في كائن الـ Properties الذي قام باستدعائها, عندها سيتم إرجاع قيمته التي تم إيجادها في كائن الـ Properties الإفتراضي.
    public String getProperty(String key, String defaultProperty) ترجع قيمة المفتاح الذي نمرره لها مكان الباراميتر key.
    في حال كان كائن الـ Properties لا يحتوي على المفتاح الذي مررناه لها, ترجع قيمة الـ defaultProperty.
    public void(PrintStream streamOut) تنسخ محتوى كائن الـ Properties بالكامل في الملف الذي يشير له كائن الـ PrintStream.
    تنسخ محتوى كائن الـ Properties الإفتراضي أيضاً.
    public void(PrintWriter streamOut) تنسخ محتوى كائن الـ Properties بالكامل في الملف الذي يشير له كائن الـ PrintWriter.
    تنسخ محتوى كائن الـ Properties الإفتراضي أيضاً.
    public void load(InputStream streamIn) throws IOException تنسخ محتوى الملف الذي يشير له كائن الـ InputStream في كائن الـ Properties.
    public Enumeration propertyNames() ترجع كائن نوع Enumeration يحتوي على جميع مفاتيح كائن الـ Properties.
    public Object setProperty(String key, String value) تستخدم لتبديل قيمة عنصر معين من عناصر كائن الـ Properties من خلال مفتاحه.
    و هي ترجع قيمة المفتاح القديمة, أو ترجع null في حال كان الـ key الموضوع غير موجود و عندها سيتم إضافة الـ key و الـ value كعنصر جديد في كائن الـ Properties.
    الباراميتر key هو المفتاح الذي سيتم تبديل قيمته.
    الباراميتر value هو القيمة الجديدة التي ستعطى للمفتاح.
    public void store(OutputStream streamOut, String comments) تنسخ محتوى الـ Properties بالكامل في الملف الذي يشير له كائن الـ OutputStream. مع إضافة تعليقات فوق المحتوى.
    تنسخ محتوى الـ Properties الإفتراضي أيضاً.
    الباراميتر comments عبارة عن التعليقات التي سيتم إضافتها فوق محتوى كائن الـ Properties.
    public void store(Writer streamOut, String comments) تنسخ محتوى الـ Properties بالكامل في الملف الذي يشير له كائن الـ Writer, مع إضافة تعليقات فوق المحتوى.
    تنسخ محتوى الـ Properties الإفتراضي أيضاً.
    الباراميتر comments عبارة عن التعليقات التي سيتم إضافتها فوق محتوى كائن الـ Properties.

    أمثلة شاملة

    في كل مثال موضوع استخدامنا كونستركتور مختلف و دوال جديدة.


    المثال الأول

    في المثال التالي قمنا بتعريف كائن نوعه Properties, إسمه h, ثم أدخلنا فيه 12 عنصر.

    بعدها قمنا بتخزين جميع المفاتيح في كائن نوعه Enumeration, إسمه keys.
    و قمنا أيضاً بتخزين جميع القيم في كائن نوعه Enumeration, إسمه values.

    بعدها عرضناهم كجدول يتألف من عامودين من خلال الحلقة while.

    في الأخير قمنا بالبحث عن قيمة مفتاحين, واحد موجود و آخر غير موجود في الكائن الـ h.

    Main.java
    import java.util.Properties;          // Properties هنا قمنا باستدعاء الكلاس
    import java.util.Enumeration;         // Enumeration هنا قمنا باستدعاء الكلاس
     
    public class Main {
     
        public static void main(String[] args) {
     
            // و الذي سنضع فيه كود البلد و إسمه p إسمه Properties هنا قمنا بتعريف كائن نوعه
            Properties p = new Properties();
     
            // كل عنصر يحتوي على كود البلد كمفتاح و إسمه كقيمة .h هنا قمنا بإضافة 12 عنصر في الكائن
            p.put("+961", "Lebanon");
            p.put("+962", "Jordan");
            p.put("+963", "Syria");
            p.put("+964", "Iraq");
            p.put("+965", "Kuwait");
            p.put("+966", "KSA");
            p.put("+967", "Yaman");
            p.put("+968", "Oman");
            p.put("+970", "Palestine");
            p.put("+212", "Morocco");
            p.put("+281", "Libya");
            p.put("+20",  "Egypt");
     
            // أي وضعنا اكواد البلاد فيه .keys بداخل الكائن p هنا قمنا بتخزين جميع مفاتيح الكائن
            Enumeration keys  = p.keys();
     
            // أي وضعنا أسماء البلاد فيه .values بداخل الكائن p هنا قمنا بتخزين جميع قيم الكائن
            Enumeration values = p.elements();
     
            System.out.println("The table below contains all Codes & Countries \n");
            System.out.println("---------------------");
            System.out.println("Code \t | Country");
            System.out.println("---------------------");
     
            // ليس فارغاً. الفكرة هنا المرور على جميع المفاتيح الموجودة و عرض كل مفتاح موجود و قيمته keys هنا أنشأنا حلقة تستمر في تكرار نفسها طالما أن الكائن
            while( keys.hasMoreElements() ) {
                System.out.println(keys.nextElement() + "\t | " + values.nextElement());
            }
            System.out.println("---------------------\n");
     
     
            // KSA هنا قمنا بالبحث عن إسم البلد الذي يملك الكود 996+ فكان الجواب
            System.out.println("Which Country use the code +966 ?");
            System.out.println(p.getProperty("+966", "Code not found!"));
     
            // +لأنها القيمة التي وضعناها في حال عدم إيجاد الكود 123 Code not found! هنا قمنا بالبحث 123 إسم البلد الذي يملك الكود 123+ فكان الجواب
            System.out.println();
            System.out.println("Which Country use the code +123 ?");
            System.out.println(p.getProperty("+123", "Code not found!"));
     
        }
     
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    The table below contains all Codes & Countries
    
    ---------------------
    Code     | Country
    ---------------------
    +281     | Libya
    +966     | KSA
    +965     | Kuwait
    +964     | Iraq
    +963     | Syria
    +962     | Jordan
    +961     | Lebanon
    +212     | Morocco
    +20      | Egypt
    +970     | Palestine
    +968     | Oman
    +967     | Yaman
    ---------------------
    
    Which Country use the code +966 ?
    KSA
    
    Which Country use the code +123 ?
    Code not found! 
    		


    المثال الثاني

    في المثال التالي قمنا بتعريف كائن نوعه Properties, إسمه defaultNumbers, ثم أدخلنا فيه 10 عناصر.
    بعدها قمنا بتعريف كائن آخر نوعه Properties, إسمه, ثم أدخلنا فيه أيضاً 10 عناصر.
    الكائن arabicNumbers يستخدم الكائن defaultNumbers كـ Properties إفتراضي.

    في الأخير قمنا بالبحث في الكائن arabicNumbers عن مفتاحين, واحد يملكه و الآخر يملكه إفتراضياً.

    Main.java
    import java.util.Properties;                         // Properties هنا قمنا باستدعاء الكلاس
     
    public class Main {
     
        public static void main(String[] args) {
     
            // و الذي سنضع فيه الأرقام باللغة الإنكليزية defaultNumbers إسمه Properties هنا قمنا بتعريف كائن نوعه
            Properties defaultNumbers = new Properties();
     
            // defaultNumbers هنا قمنا بإضافة 10 عناصر في الكائن
            defaultNumbers.put("0", "Zero");
            defaultNumbers.put("1", "One");
            defaultNumbers.put("2", "Two");
            defaultNumbers.put("3", "Three");
            defaultNumbers.put("4", "Four");
            defaultNumbers.put("5", "Five");
            defaultNumbers.put("6", "Six");
            defaultNumbers.put("7", "Seven");
            defaultNumbers.put("8", "Eight");
            defaultNumbers.put("9", "Nine");
     
            // و الذي سنضع فيه الأرقام باللغة العربية arabicNumbers إسمه Properties هنا قمنا بتعريف كائن نوعه
            // عند الحاجة له defaultNumbers هذا الكائن يستخدم الكائن
            Properties arabicNumbers = new Properties(defaultNumbers);
     
            // arabicNumbers هنا قمنا بإضافة 10 عناصر في الكائن
            arabicNumbers.put("٠", "صفر");
            arabicNumbers.put("١", "واحد");
            arabicNumbers.put("٢", "إثنان");
            arabicNumbers.put("٣", "ثلاثة");
            arabicNumbers.put("٤", "أربعة");
            arabicNumbers.put("٥", "خمسة");
            arabicNumbers.put("٦", "ستة");
            arabicNumbers.put("٧", "سبعة");
            arabicNumbers.put("٨", "ثمانية");
            arabicNumbers.put("٩", "تسعة");
     
            // defaultNumbers عن رقم موجود فيه و رقم آخر حصل عليه من الكائن arabicNumbers هنا قمنا بالبحث في الكائن
            System.out.println(arabicNumbers.getProperty("1"));
            System.out.println(arabicNumbers.getProperty("١"));
     
        }
     
    }
    		

    سنحصل على النتيجة التالية عند التشغيل.

    One
    واحد
    		


    المثال الثالث

    في المثال التالي قمنا بتعريف كائن نوعه Properties, إسمه names, الهدف منه تخزين الأسماء بالإنجليزية و العربية, ثم أدخلنا فيه 5 عناصر.

    في الأخير قمنا بالبحث في نسخ محتوى الكائن names في ملف جديد إسمه ar-en-names.txt.

    Main.java
    import java.io.IOException;          // IOException هنا قمنا باستدعاء الكلاس
    import java.io.PrintWriter;          // PrintWriter هنا قمنا باستدعاء الكلاس
    import java.util.Properties;         // Properties هنا قمنا باستدعاء الكلاس
     
    public class Main {
     
        public static void main(String[] args) {
     
            // و الذي سنضع فيه الأٍسماء بالإنجليزية و العربية names إسمه Properties هنا قمنا بتعريف كائن نوعه
            Properties names = new Properties();
     
            // names هنا قمنا بإضافة 5 عناصر في الكائن
            names.put("Ahmad"  , "أحمد");
            names.put("Ibrahim", "إبراهيم");
            names.put("Samer"  , "سامر");
            names.put("Hala"   , "هالة");
            names.put("Rana"   , "رنا");
     
            try {
                // لإنشاء ملف و الكتابة فيه لاحقاً FileWriter هنا قمنا بإنشاء كائن نوعه
                PrintWriter fw = new PrintWriter("C:\\Users\\Mhamad\\Desktop\\ar-en names.txt");
     
                // fw في الملف الذي يشير له الكائن names هنا قمنا بنسخ محتوى الكائن
                names.list(fw);
     
                // هنا قمنا بإغلاق إتصال البرنامج مع الملف و تنظيف الذاكرة
                fw.flush();
                fw.close();
            }
            // لإلتقاط أي خطأ قد يحدث بسبب الملف catch هنا وضعنا الجملة
            catch(IOException e){
                System.out.println("There is IOException!");
            }
     
     
        }
     
    }
    		

    بعد تشغيل البرنامج, قم بفتح الملف ar-en-names.txt و ستجد النص التالي بداخله التالية.

    --ing properties --
    Ibrahim=إبراهيم
    Samer=سامر
    Rana=رنا
    Hala=هالة
    Ahmad=أحمد 
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب