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

سؤال للمبتدئين في الجافا (3)

بدأه Snack3r في 8 يونيو 2013 · 11 رد · 841 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

أكمل الكود التالي (بأقل شيء ممكن) لكي يتم تشغيل كائن من Processus باعتباره Thread.

post-219439-0-21816200-1370692752_thumb.

 

 

 

 

تحياتي.

#2
public class LancerProcessus {

public static void main(String[] args) {

Thread t = new Thread(new Processus());

t.start();

}

}

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

اوافق جواب الاخ احمد لكن اعتقد انو لازم اضافة مكتبة Thread

هل يمكن تغيير مكان JApplet بThread

#4

يا عزيزي .. هل نسيت أن الفئة ترث JApplet ؟ + لا وجود للدالة main :)

#5

للاسف ليس لدي اي فكرة عن JApplet  ولا الـ Thread


م زلت في بدايات الـ object-oriented programming


 


دمت في حفظ الله


#6

غفر الله لك أخي ...وهل هذا سؤال للمبتدئين ؟ :) "هذا ما يتواسى"

 

على كل حال أنا كنت قد اطلعت منذ زمن على الأبلات ولكني لم أعرها اهتمامي إذ كان توجهي  تطبيقات سطح المكتب ولكن بفضلك راجعت هذا الفصل من الجافا وأضفت إليه معرفتي وخلصت بهذا الكود

 

public class Applet extends JApplet implements Runnable{
    @Override
    public void run() {
    }
    @Override
    public void inti(){
        run();
    }
}
 وفي داخل الدالة run نضع الكود

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 10 يونيو 2013 في 23:13

1

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#7

ثم التجأت إلى netbeans فصنع هذا الكود تلقائيا

package test;

public class Aform extends javax.swing.JApplet {

   
    @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

   
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        jButton1.setText("jButton1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(146, 146, 146)
                .addComponent(jButton1)
                .addContainerGap(160, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(205, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(70, 70, 70))
        );
    }// </editor-fold>                        
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    // End of variables declaration                   
}

ولكن شيئا واحدا لم أفهمه وهو أننا نعرف أن interface لا يمكن إنشاء كائن منها فكيف صحت هذه العبارة new runnable

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#8

حسنا يبدو أنني سأتوقف عند الحلقة الثالثة للأسف.

 

الحل بسيط جدا لمن درس الــ Applet و الــ Thread :

 

import javax.swing.JApplet;

public class Processus extends JApplet implements Runnable {

    @Override
    public void start() {
        Thread th = new Thread(this);
        th.start();
    }

    @Override
    public void init() {
    }

    @Override
    public void run() {
        System.out.println("OK !");
    }
}

 

 

 

تحياتي.

تم تعديل هذه المشاركة بواسطة Sn@CkeR في 11 يونيو 2013 في 16:24

#9
اقتباس

حسنا يبدو أنني سأتوقف عند الحلقة الثالثة للأسف.

لماذا طالما نحن نستفيد ؟

 

 

+

الكود الذي كتبته أنا كان أقل أسطرا ..فهل كان فيه من خطأ

أنا جربته وكانت النتيجة صحيحة

هكذا

import javax.swing.JApplet;
public class Applet extends JApplet implements Runnable{   
    @Override
    public void run() {
         System.out.println("OK !");
    }
    @Override
    public void start(){
          run();
    }   
}

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#10
اقتباس

ولكن شيئا واحدا لم أفهمه وهو أننا نعرف أن interface لا يمكن إنشاء كائن منها فكيف صحت هذه العبارة new runnable

 

 

ال interface هو مجرد طريقة لاجبار المطور على اعادة كتابة الدوال Override

 

مثله مثل pure virtual functions فى ++C

 

يمكنك انشاء كائن منه بشرط ان تقوم باعادة كتابة الدوال 

 

انظر المثال التالى

 

TestInterface.java

 

package pkginterface;

/**
 *
 * @author Mohamed
 */
public interface TestInterface {
    public void print();
}

 

Main.java

package pkginterface;

/**
 *
 * @author 11
 */
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        TestInterface intf = new TestInterface() {
            @Override
            public void print() {
                System.out.println("Overridden");
            }
        };
        
        printName(intf);
    }
    
    public static void printName(TestInterface inf)
    {
        inf.print();
    }

 

هنا أجبرنا المطور على استخدام كائن من النوع TestInterface او ينشئ فئة تدعم هذه الواجهة

 

والا لن يستطيع استخدام الدالة printName

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 12 يونيو 2013 في 15:59

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#11
اقتباس

يمكنك انشاء كائن منه بشرط ان تقوم باعادة كتابة الدوال

شكرا لك أخي ...هذا فصل المسألة ووضحها

 

قد كنت من قبل تلقيت دروسا عن الأخ عيد عبد الله وقد كان يؤكد على مسألة أن الأنترفاس لا ينشأ منه كائن بالعبارة new ولعلي لم أفهم قصده حتى وضحته أنت (+1)

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#12
اقتباس

 

قد كنت من قبل تلقيت دروسا عن الأخ عيد عبد الله وقد كان يؤكد على مسألة أن الأنترفاس لا ينشأ منه كائن بالعبارة new ولعلي لم أفهم قصده حتى وضحته أنت (+1)

 

لعلها مرت عليه سهوا :)

 

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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