SlideShare a Scribd company logo
1 of 94
1
‫اإلستثنا‬‫ء‬‫هو‬‫حدوث‬‫أمر‬‫غير‬‫عادي‬‫وغير‬‫مألوف‬.
‫ولذلك‬،‫فإن‬‫معالجة‬‫اإلستثناءات‬Exception
Handling‫هي‬‫التقاط‬‫أو‬‫اكتشاف‬‫وتدوين‬‫والتعامل‬
‫مع‬‫حدوث‬‫حاالت‬‫خاطئة‬‫وقد‬‫تستغل‬‫هذه‬‫األخطا‬‫ء‬
‫لتبيان‬‫أمو‬‫ر‬‫أخرى‬.
‫هذه‬‫األخطاء‬‫تحصل‬‫في‬‫سياق‬‫البرنامج‬‫نتيجة‬‫ألمر‬
‫مؤقت‬‫عند‬‫تنفيذ‬‫البرنامج‬‫مثل‬‫نقصان‬‫الذاكرة‬‫ال‬‫الزمة‬
‫لتنفيذ‬‫البرنامج‬،‫خطأ‬‫في‬‫اسم‬‫ال‬‫م‬‫لف‬‫أو‬‫في‬‫تكو‬‫ين‬
‫ال‬‫م‬‫لف‬،‫خطأ‬‫في‬‫رقم‬‫معين‬‫يؤدي‬‫الى‬‫القسمة‬‫عل‬‫ى‬
‫ص‬‫فر‬...‫الخ‬
...‫تابع‬
‫إذا‬‫لم‬‫يتم‬‫التعامل‬‫مع‬‫هذه‬‫األخطاء‬‫بالطريقة‬‫ال‬‫م‬‫ناس‬‫بة‬
‫فإن‬‫تأثيرها‬‫يكون‬‫مشابها‬‫لألخطاء‬(bugs)‫ولكن‬‫إذا‬
‫تم‬‫التعامل‬‫معها‬‫بالطريقة‬‫ال‬‫م‬‫نا‬‫س‬‫بة‬‫فإنه‬‫يمكن‬‫ال‬‫سيطرة‬
‫عليها‬.
‫معالجة‬‫اإلستثناءات‬‫تعد‬‫أداة‬‫لت‬‫ح‬‫سين‬‫إدارة‬‫األخطا‬‫ء‬‫عن‬
‫ط‬‫ريق‬‫إيجاد‬‫من‬‫ح‬‫ى‬‫أفضل‬‫في‬‫مهاجمة‬‫الشكلة‬.
‫وتعر‬ ‫واالستثناءات‬ ‫األخطاء‬ ‫بين‬ ‫تفرق‬ ‫جافا‬ ‫لغة‬‫لغة‬ ‫ف‬
‫تدف‬ ‫يقطع‬ ‫عادي‬ ‫غير‬ ‫حدث‬ ‫انه‬ ‫على‬ ‫االستثناء‬ ‫جافا‬‫ق‬
‫البرنامج‬.
‫هناك‬‫االستثناءات‬ ‫من‬ ‫أنواع‬ ‫ثالثة‬‫األخطاء‬ ‫فيها‬ ‫بما‬:
‫العادية‬ ‫االستثناءات‬Normal Exceptions
‫التنفيذية‬ ‫االستثناءات‬Runtime Exceptions
‫األخطاء‬Errors
...‫تابع‬
Throwable
Exception Error
IOExceptionRuntimeException
‫هذه‬‫االستثناءات‬‫تحصل‬‫في‬‫جزء‬‫محدد‬‫من‬‫البرنامج‬‫أي‬‫ان‬
‫الجزء‬‫الذي‬‫تحصل‬‫فيه‬‫معروف‬‫ويمكن‬‫اكتشافه‬‫بسهوله‬‫م‬‫ثل‬
File not found‫يحصل‬‫هذا‬‫االستثناء‬‫عند‬‫محاولة‬‫الوصو‬‫ل‬
‫الى‬‫ملف‬‫معين‬‫ولكن‬‫الملف‬‫غير‬‫موجود‬.
‫ويمكن‬ ‫مكانها‬ ‫تحديد‬ ً‫ا‬‫جد‬ ‫صعب‬ ‫االستثناءات‬ ‫من‬ ‫النوع‬ ‫هذا‬‫أن‬
‫األمثلة‬ ‫ومن‬ ‫حدوثه‬ ‫شائع‬ ‫وهو‬ ‫البرنامج‬ ‫من‬ ‫جزي‬ ‫أي‬ ‫يحتوي‬
‫صفر‬ ‫على‬ ‫القسمة‬ ‫عليه‬ ‫المشهورة‬division by zero‫أي‬
‫صفر‬ ‫على‬ ‫القسمة‬ ‫عند‬.
‫يعتبر‬‫االشد‬‫خطورة‬‫حيث‬‫يصعب‬‫التنبؤ‬‫به‬‫او‬‫التعامل‬‫م‬‫عه‬‫لذلك‬
‫يعتبر‬‫خارج‬‫نطاق‬‫اليد‬‫والتحكم‬‫به‬‫والسيطرة‬‫عليه‬‫ومن‬‫ا‬‫ألمثلة‬
‫على‬‫هذه‬‫األخطاء‬‫عطب‬‫المترجم‬.
‫ل‬ ‫الالزمة‬ ‫المعلومات‬ ‫وتمرير‬ ‫االستثناء‬ ‫قذف‬ ‫من‬ ‫يلزم‬ ‫بما‬ ‫الجملة‬ ‫هذه‬ ‫تقوم‬‫تبيان‬
‫محجوزة‬ ‫كلمة‬ ‫وهي‬ ،‫الخطأ‬.
‫كلمة‬ ‫ان‬throws‫تست‬ ‫و‬ ‫المنهج‬ ‫تعريف‬ ‫عند‬ ‫أي‬ ‫المنهج‬ ‫مستوى‬ ‫على‬ ‫تعمل‬‫خدم‬
‫أكثر‬ ‫أو‬ ‫استثناء‬ ‫لرمي‬.
public void thisIsTrouble () throws anException{
// method body }
public void thisIsMultipleExceptionMethod throws
anException,anotherException {
// method body}
‫جملة‬ ‫تستخدم‬throw‫خارج‬ ‫الى‬ ‫وجد‬ ‫ان‬ ‫االستثناء‬ ‫لقذف‬
‫المنهج‬.
public class Ex {
static float assMark(float ass1, float ass2) throws
Exception
{
if ((ass1 > 100)|| (ass2 > 100))
{
throw new Exception (“Error value !");
}
return (ass1 * 5)/100 + (ass2 * 5)/100;
}
public static void main(String[] args) throws Exception {
Ex O1 = new Ex();
float x=50;
float y=80;
float z = O1.assMark(x,y);
System.out.println(z);
}}
‫كتلة‬try‫بكلمة‬ ‫تبدأ‬try‫الكتلة‬ ‫وجسم‬ ‫الكتلة‬ ‫اقواس‬ ‫وتتبعها‬
‫األقواس‬ ‫هذه‬ ‫بين‬ ‫يكون‬.
‫مثال‬:
try
{
‫المنهج‬ ‫استدعاء‬ ‫جمل‬
}
‫كتل‬ ‫من‬ ‫كتلة‬ ‫كل‬try‫كت‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫كتلة‬ ‫لها‬ ً‫ا‬‫مصاحب‬ ‫يكون‬‫ل‬
catch‫وكتلة‬ ‫االستثناء‬ ‫قذف‬ ‫عند‬ ‫معالجتها‬ ‫ويتم‬catch‫تتعامل‬
‫النوع‬ ‫من‬ ‫واحد‬ ‫استثناء‬ ‫مع‬Exception.
‫مثال‬2
public class Ex {
public int fac(int x, int y)
{
int z =x / y;
return x;
}
public static void main(String[] args)
{
try{
Ex Obj1 = new Ex();
System.out.println(Obj1.fac(5,0));
}
catch(Exception e)
{
System.out.println("Error : "+e);
}
}}
‫ال‬ ‫بغض‬ ‫البرنامج‬ ‫من‬ ‫جزء‬ ‫تنفيذ‬ ‫في‬ ‫الجملة‬ ‫هذه‬ ‫تستخدم‬‫عن‬ ‫نظر‬
‫معالجة‬ ‫جميع‬ ‫نهاية‬ ‫في‬ ‫موجودة‬ ‫وتكون‬ ‫االستثناءات‬ ‫قذف‬
‫غي‬ ‫في‬ ‫موجودة‬ ‫وغير‬ ‫جافا‬ ‫لغة‬ ‫في‬ ‫موجودة‬ ‫وهي‬ ‫االستثناءات‬‫رها‬
‫اللغات‬ ‫من‬.
‫المثال‬ ‫في‬2‫معالجة‬ ‫جمل‬ ‫نهاية‬ ‫في‬ ‫التالي‬ ‫المقطع‬ ‫أضف‬
‫االستثناءات‬
finally
{
System.out.println("END ");
}
THE OUTPUT
18
‫من‬‫الخصائص‬‫الفريدة‬‫بلغة‬‫جافا‬‫توفيرها‬‫ومساندتها‬‫لمف‬‫هوم‬
‫القنوات‬‫حيث‬‫تمكنك‬‫القنوات‬‫من‬‫القيام‬‫بالكثير‬‫من‬‫األع‬‫مال‬‫في‬
‫الوقت‬،‫نفسه‬‫فهي‬‫األداة‬‫التي‬‫تمكن‬‫الحواسيب‬‫من‬‫القيام‬‫بعدة‬
‫أعمال‬‫في‬‫الوقت‬‫نفسه‬.
‫في‬‫مفهوم‬‫نظام‬‫التشغيل‬‫يدعى‬‫هذا‬‫األمر‬‫المهام‬‫المتعددة‬
Multitasking‫وفي‬‫لغة‬‫جافا‬‫يدعى‬‫القنوات‬‫المتعددة‬
Multithreading.
‫األهمية‬‫التي‬‫تمثلها‬‫القناة‬‫تكمن‬‫باستخدام‬‫القنوات‬‫المتعددة‬
Multithreads‫في‬‫برنامج‬‫واحد‬‫حيث‬‫تنفذ‬‫القنوات‬‫بالوقت‬‫ن‬‫فسه‬
‫وتقوم‬‫بمهمات‬‫مختلفة‬.
‫اكثر‬‫الحاالت‬‫التي‬‫تحتاج‬‫اليها‬‫الستخدام‬‫القنوات‬‫عندما‬‫يحتاج‬‫التطبيق‬
‫الى‬‫انجاز‬‫شيئين‬‫في‬‫الوقت‬‫ذاته‬.
‫مثل‬‫ارسال‬‫مهمات‬‫للطباعة‬‫مع‬‫االستمرار‬‫بالكتابة‬‫او‬‫القيام‬‫بمهم‬‫ات‬
‫أخرى‬.
‫القدرة‬‫على‬‫الحصول‬‫على‬‫قنوات‬‫متعددة‬‫تنفذ‬‫في‬‫اللغة‬‫يدعى‬
Concurrency
‫األولى‬ ‫الطريقة‬:
‫تحويل‬‫صنف‬Class‫موجودة‬‫الى‬‫قناة‬‫وذلك‬‫يتم‬‫بتعديل‬
‫الصنف‬‫بحيث‬‫تستخدم‬‫واجهة‬‫التطبيق‬runnable‫والتي‬
‫تعرف‬‫المنهج‬run()‫الذي‬‫تحتاجه‬‫جميع‬‫القنوات‬‫حيث‬‫انه‬
‫يتكون‬‫من‬‫جمل‬‫يتم‬‫تنفيذها‬‫باستخدام‬‫القناة‬.
...‫تابع‬
‫الثانية‬ ‫الطريقة‬:
‫كتابة‬‫صنف‬‫مشتق‬‫من‬‫الصنف‬Thread‫المعرف‬‫في‬‫جافا‬
‫كصنف‬‫خاص‬.
‫الصنف‬Thread‫يستخدم‬‫واجهة‬‫التطبيق‬runnable‫والتي‬
‫تحتوي‬‫على‬‫المنهج‬run‫ويجب‬‫الهيمنة‬‫عليه‬‫في‬‫األصناف‬‫من‬
‫أجل‬‫انشاء‬‫نوع‬‫القناة‬‫التي‬‫تريد‬.
‫أوال‬:‫قناة‬ ‫إلى‬ ‫صنف‬ ‫تحويل‬
CONVERTING A CLASS TO A THREAD
‫الخطوات‬:
.1‫التطبيق‬ ‫واجهة‬ ‫يطبق‬ ‫انه‬ ‫تحديد‬ ‫مع‬ ‫الصنف‬ ‫تعريف‬runnable.
public class Myapplet extends Applet implements
Runnable
.2‫المنهج‬ ‫تطبيق‬run()‫الواجهة‬ ‫في‬ ‫الموجود‬runnable
public void run() {........}
•‫المنهج‬ ‫تستدعى‬ ‫جافا‬ ‫لغة‬ ‫فان‬ ‫الجديدة‬ ‫القناة‬ ‫بدء‬ ‫عند‬run()
‫الت‬ ‫العمليات‬ ‫جميع‬ ‫على‬ ‫ليحتوي‬ ‫علية‬ ‫الهيمنة‬ ‫تمت‬ ‫والذي‬‫تقوم‬ ‫ي‬
‫القناة‬ ‫بها‬.
...‫تابع‬
.3‫نوع‬ ‫من‬ ‫كائن‬ ‫تعريف‬Thread‫بيانات‬ ‫كوحدة‬(‫حقل‬)
Thread thread;
.4‫نوع‬ ‫من‬ ‫الكائن‬ ‫وبدء‬ ‫خلق‬Thread
public void start()
{
thread = new Thread(this);
thread.start();
}
‫الجملة‬ ‫تعتبر‬thread = new Thread(this);‫البناء‬ ‫جملة‬ ‫هي‬
constructor‫المؤشر‬ ‫وهو‬ ً‫ا‬‫واحد‬ ً‫ال‬‫معام‬ ‫تأخذ‬ ‫والتي‬this
...‫تابع‬
.5‫ايقاف‬‫القناة‬Stopping The Thread:‫عندما‬‫ينتهي‬
‫عمل‬‫المنهج‬run()‫ينتهي‬‫عمل‬‫القناة‬.
public void stop()
{
theard.stop();
}
...‫تابع‬
import java.awt.*;
import java.applet.*
public class ThreadApplet extends Applet implements
Runnable{
Thread thread;
int count; String displayStr;
Font font;
public void start() {
font = new Font("TimesRoman", Font.PLAIN, 72);
setFont(font);
count = 0; displayStr = " ";
thread = new Thread(this);
thread.start();}
public void stop()
{
thread.stop();}
...‫تابع‬
public void run()
{ while (count < 1000)
{ ++count;
displayStr = String.valueOf(count):
repaint();
try
{
thread.sleep(100); }
catch(InterruptedException e) { }}
public void paint(Graphics g)
{
g.drawString(displayStr, 50, 130);
}}
‫من‬ ‫صنف‬ ‫اشتقاق‬THREAD
.1‫من‬ ‫جديد‬ ‫صنف‬ ‫اشتقاق‬Thread
public class MyThread extends Thread
.2‫تعين‬ ‫خاصتك‬ ‫الصنف‬ ‫في‬(‫تخلق‬)‫صنف‬ ‫من‬ ‫قناة‬ ‫كائن‬‫قناتك‬.
MyThread (ThreadApplet2 applet)
{
this.applet = applet;
}
...‫تابع‬
public class MyThread extends Thread
{ ThreadApplet2 applet;
int count;
MyThread (ThreadApplet2 applet)
{
this.applet = applet;
}
public void run()
{
count = 0;
while (count < 1000)
{++count;
applet.displayStr = String.valueOf(count);
applet.repaint();
try{ sleep(100); }
catch(InterruptedException e) { }}}}
‫المصدر‬ ‫استخدام‬ ‫بطلب‬ ‫أكثر‬ ‫أو‬ ‫قناتين‬ ‫قيام‬ ‫بها‬ ‫يقصد‬‫في‬ ‫نفسه‬
‫الكتابة‬ ‫أو‬ ‫القراءة‬ ‫أكثر‬ ‫أو‬ ‫قناتين‬ ‫محاولة‬ ‫أو‬ ‫ذاته‬ ‫الوقت‬‫ال‬‫ى‬‫نفس‬
‫والمخرجات‬ ‫المدخالت‬ ‫من‬ ‫السطر‬.
‫ا‬ ‫وتستعمل‬ ‫حدوثها‬ ‫ومنع‬ ‫الحالة‬ ‫هذه‬ ‫بمراقبة‬ ‫جافا‬ ‫لغة‬ ‫تقوم‬‫لكلمة‬
‫الخاصة‬synchronized‫المنهج‬ ‫تعريف‬ ‫عند‬.
...‫تابع‬
‫عند‬‫االعالن‬‫عن‬‫منهج‬‫انه‬‫متزامن‬synchronized‫في‬‫جملة‬
‫التعريف‬‫تقوم‬‫جافا‬‫بخلق‬‫كائن‬‫مراقب‬‫للصنف‬class
monitor object‫وهو‬‫مفتاح‬‫الدخول‬‫للصنف‬‫فلن‬‫تستط‬‫يع‬
‫أي‬‫من‬‫القنوات‬‫األخرى‬‫الدخول‬‫الى‬‫المنهج‬‫المتزامن‬‫أو‬‫المقطع‬
‫البرمجي‬‫المتزامن‬.
‫كل‬‫كائن‬‫له‬‫مناهج‬‫متزامنة‬‫يعطى‬‫مراقب‬monitor
‫المنهج‬‫المتزامن‬‫هو‬‫المنهج‬‫الذي‬‫يمكن‬‫إدخاله‬‫إلى‬‫حالة‬‫التنف‬‫يذ‬
‫إذا‬‫كانت‬‫القناة‬‫التي‬‫يستدعي‬‫منها‬‫المنهج‬‫لها‬‫القدرة‬‫على‬
‫الحصول‬‫على‬‫مراقب‬‫للكائن‬‫وإال‬‫فان‬‫القناة‬‫التي‬‫يستدع‬‫ى‬‫منها‬
‫منهج‬‫متزامن‬‫سوف‬‫توقف‬‫حتى‬‫يتم‬‫التخلي‬‫عن‬‫المراقب‬‫م‬‫ن‬‫قناة‬
‫أخرى‬.
‫المراقب‬‫يمكن‬‫الحصول‬‫عليه‬‫فقط‬‫من‬‫قبل‬‫قناة‬‫واحدة‬‫في‬‫ا‬‫لوقت‬
‫ذاته‬.
‫مثال‬
...‫تابع‬
‫يكون‬ ‫القناتين‬ ‫لهاتين‬ ‫المخرجات‬:
 A : starts
 B : starts
 A : 1
 B : 1
 A : 2
 B : 2
 A : Done
 B : Done
‫المنهج‬yield()‫المع‬ ‫الى‬ ‫انتظار‬ ‫حالة‬ ‫في‬ ‫التي‬ ‫القناة‬ ‫ادخال‬ ‫الى‬ ‫يؤدي‬‫الج‬.
‫هي‬‫عملية‬‫ترتيب‬‫القنوات‬‫التي‬‫تود‬‫الدخول‬‫الى‬‫ال‬‫معالج‬
‫في‬‫طابور‬‫الذي‬‫يبين‬‫حالتها‬‫استعداد‬‫لدخول‬‫المعا‬‫لج‬‫ام‬‫ال‬
‫وفي‬‫أكثر‬‫األحيان‬‫يستخدم‬‫مبدأ‬‫القادم‬ً‫ال‬‫أو‬‫يدخل‬ً‫ال‬‫أو‬.
‫يخصص‬‫لكل‬‫قناة‬‫في‬‫لغة‬‫جافا‬‫أولوية‬‫تؤثر‬‫على‬‫كيفي‬‫ة‬‫قيام‬
‫مجدول‬‫القنوات‬‫في‬‫جافا‬‫بتحديد‬‫متى‬‫يتم‬‫تنفيذ‬‫هذه‬‫الق‬‫ناة‬.
‫عندما‬‫تكون‬‫القنوات‬‫لها‬‫نفس‬‫األولوية‬‫في‬‫التنفيذ‬‫فإن‬‫ها‬‫تشترك‬‫في‬
‫استخدام‬‫المعالج‬‫على‬‫أساس‬‫من‬‫يدخل‬ً‫ال‬‫أو‬‫يخدم‬ً‫ال‬‫أو‬.
‫عند‬‫ظهور‬‫قناة‬‫لها‬‫أولوية‬‫أعلى‬‫من‬‫القنوات‬‫األخرى‬‫فإنها‬
‫ستحصل‬‫على‬‫المعالج‬‫حتى‬‫لو‬‫احتاج‬‫األمر‬‫إلى‬‫مقاطعة‬‫الق‬‫ناة‬
‫التي‬‫تنفذ‬ً‫ا‬‫حالي‬.
‫واح‬ ‫برنامج‬ ‫مصادر‬ ‫على‬ ‫قناة‬ ‫من‬ ‫أكثر‬ ‫تتنافس‬ ‫عندما‬ ‫استخدامها‬ ‫يتم‬‫د‬.
‫المنتج‬ ‫المهمة‬Producer‫تسمى‬ ‫أخرى‬ ‫مهمة‬ ‫تستخدمها‬ ‫معلومات‬ ‫تنتج‬
Consumer
‫ب‬ ‫فقدان‬ ‫إلى‬ ‫يؤدي‬ ‫قد‬ ‫مما‬ ‫مترادف‬ ‫بشكل‬ ‫المهمتان‬ ‫تعمل‬ ‫أن‬ ‫الممكن‬ ‫من‬‫عض‬
‫متوافقة‬ ‫غير‬ ‫السرعات‬ ‫كانت‬ ‫حال‬ ‫في‬ ‫المعلومات‬.
‫العمليات‬ ‫تزامن‬ ‫على‬ ‫مثال‬.
‫حالة‬Newborn
‫ق‬ ‫تحديد‬ ‫وتم‬ ‫للقناة‬ ‫ذاكرة‬ ‫حجز‬ ‫تم‬ ‫قد‬ ‫يكون‬ ‫الحالة‬ ‫هذه‬ ‫في‬‫يم‬
‫ب‬ ‫تجدول‬ ‫لم‬ ‫القناة‬ ‫ولكن‬ ‫بها‬ ‫الخاصة‬ ‫للبيانات‬ ‫ابتدائية‬‫عد‬.
‫للتنفيذ‬ ‫جاهزة‬Runnable
‫تنتظ‬ ‫ولكنها‬ ‫للتنفيذ‬ ‫مستعدة‬ ‫القناة‬ ‫أن‬ ‫الحالة‬ ‫هذه‬ ‫تعني‬‫توفر‬ ‫حتى‬ ‫ر‬
‫المعالج‬.
‫التنفيذ‬ ‫قيد‬Running
‫التنفيذ‬ ‫قيد‬ ‫القناة‬ ‫أن‬ ‫الحالة‬ ‫هذه‬ ‫تعني‬‫وانها‬‫وتس‬ ‫تتحكم‬‫على‬ ‫يطر‬
‫ت‬ ‫أن‬ ‫أو‬ ‫أعلى‬ ‫أولوية‬ ‫ذات‬ ‫قناة‬ ‫من‬ ‫مقاطعتها‬ ‫يتم‬ ‫حتى‬ ‫المعالج‬‫تخلى‬
‫بنفسها‬ ‫المعالج‬ ‫عن‬.
...‫تابع‬
‫موقفة‬Blocked
‫تعني‬‫هذه‬‫الحالة‬‫أن‬‫القناة‬‫قادرة‬‫على‬‫التنفيذ‬‫لكن‬‫هناك‬‫أمر‬‫ما‬
‫يمنعها‬‫من‬‫مواصلة‬‫التنفيذ‬‫وفي‬‫هذه‬‫الحالة‬‫لن‬‫يمنحها‬‫المج‬‫دول‬
‫الدخول‬‫الى‬‫المعالج‬‫لحين‬‫التغلب‬‫على‬‫سبب‬‫التوقيف‬.
‫قناة‬‫ميتة‬Dead
‫عند‬‫انتهاء‬‫قناة‬‫من‬‫التنفيذ‬‫بسبب‬‫تنفيذها‬‫لجميع‬‫جمل‬‫ها‬‫أو‬‫بسبب‬
‫ايقافها‬‫من‬‫قبل‬‫قناة‬‫أخرى‬‫فهي‬‫قناة‬‫ميتة‬‫أو‬‫مقتولة‬Killed
42
‫التعامل‬‫مع‬‫المدخالت‬‫والمخرجات‬‫في‬‫لغة‬‫جافا‬‫تتم‬‫من‬‫خالل‬
‫األصناف‬‫التي‬‫توفرها‬‫حيث‬‫ال‬‫تتضمن‬‫لغة‬‫جافا‬‫كلمات‬‫خ‬‫اصة‬
‫للتعامل‬‫مع‬‫المدخالت‬‫والمخرجات‬Input/Output.
‫الحزمة‬java.io‫تعتني‬‫بعمليات‬‫االدخال‬‫واإلخراج‬‫وهذه‬
‫الحزمة‬‫غنية‬‫باألصناف‬‫والمناهج‬‫التي‬‫تساعد‬‫المبرمج‬‫عل‬‫ى‬
‫التحكم‬‫في‬‫برنامجه‬‫بأقصى‬‫درجات‬‫التحكم‬.
‫تستخدم‬‫لغة‬‫الجافا‬‫مفهوم‬‫الدفق‬‫في‬‫اجراء‬‫عمليات‬‫االدخال‬
‫واإلخراج‬.
‫الدفق‬Stream:‫هو‬‫تصور‬‫منطقي‬‫تمثل‬‫الية‬‫االتصال‬‫بين‬
‫مصدر‬‫البيانات‬‫أو‬‫مستقبل‬‫البيانات‬‫وبرنامج‬‫جافا‬.
...‫تابع‬
‫دفق‬‫االدخال‬Input Stream:‫الية‬‫االتصال‬‫بين‬‫مصدر‬
‫البيانات‬‫وبرنامج‬‫الجافا‬‫ويستخدم‬‫إلدخال‬‫البيانات‬‫الى‬‫ا‬‫لبرنامج‬.
‫دفق‬‫االخراج‬Output Stream:‫الية‬‫االتصال‬‫بين‬
‫برنامج‬‫جافا‬‫ومستقبل‬‫البيانات‬‫يستعمل‬‫إلخراج‬‫البيا‬‫نات‬‫من‬
‫البرنامج‬.
...‫تابع‬
‫الدفوق‬ ‫من‬ ‫نوعين‬ ‫جافا‬ ‫لغة‬ ‫توفر‬:‫ث‬ ‫ودفوق‬ ‫رمزية‬ ‫دفوق‬‫نائية‬.
‫الرمزي‬ ‫الدفق‬Character Stream:‫عن‬ ‫عبارة‬
‫االخر‬ ‫او‬ ‫االدخال‬ ‫دفق‬ ‫عبر‬ ‫تتدفق‬ ‫التي‬ ‫الرموز‬ ‫سلسلة‬‫اج‬.
‫حزمة‬ ‫تتضمن‬java.io‫الرمزية‬ ‫االدخال‬ ‫دفق‬ ‫أصناف‬
(Readers)‫التالية‬ ‫األساسية‬:
Reader
BufferedReader
FileReader
StringReader
...‫تابع‬
‫الرمزي‬ ‫االخراج‬ ‫دفق‬ ‫أصناف‬Writer‫حزمة‬ ‫في‬
java.io‫فهي‬:
Writer
PrintWriter
BufferedWriter
FileWriter
...‫تابع‬
‫الدفق‬‫الثنائي‬Byte Stream:‫عبارة‬‫عن‬‫سلسلة‬
‫البايتات‬‫التي‬‫تتدفق‬‫عبر‬‫دفق‬‫االدخال‬‫او‬‫االخراج‬.
‫تتضمن‬‫حزمة‬java.io‫أصناف‬‫دفق‬‫االدخال‬Input
Stream‫األساسية‬‫التالية‬:
InputStream
BufferedInputStream
DataInputStream
FileInputStream
StringBufferInputStream
...‫تابع‬
‫أصناف‬‫دفق‬‫اإلخراج‬Output Stream‫في‬‫حزمة‬
java.io‫فهي‬:
OutputStream
PrintStream
BufferedOutputStream
DataOutputStream
FileOutputStream
‫مفهوم‬ ‫هو‬ ‫ما‬Consol I/O‫؟‬
‫تعبير‬ ‫هو‬‫يشير‬‫تجر‬ ‫التي‬ ‫العمليات‬ ‫مجموعة‬ ‫إلى‬‫خالل‬ ‫ي‬
‫والشاشة‬ ‫المفاتيح‬ ‫لوحة‬.
‫عمل‬ ‫تحكم‬ ‫التي‬ ‫والمناهج‬ ‫األصناف‬ ‫من‬ ‫مجموعة‬ ‫هناك‬
‫والشاشة‬ ‫المفاتيح‬ ‫لوحة‬ ‫من‬ ‫كل‬.
‫يعتبر‬‫الصنف‬‫األساسي‬‫من‬‫األصناف‬‫التي‬‫تعت‬‫ني‬
‫بعمليات‬‫االدخال‬‫كافة‬‫وهو‬ً‫ا‬‫صنف‬ً‫ا‬‫تجريدي‬‫أي‬‫ال‬‫يمكن‬
‫انشاء‬‫مثيل‬‫له‬.
‫يعمل‬‫هذا‬‫الصنف‬‫على‬‫تنفيذ‬‫أكثر‬‫المناهج‬‫اهمية‬‫مث‬‫ل‬
reset(), skip(), mark(), close()
‫لتوسيع‬‫هذا‬‫الصنف‬‫بشكل‬‫مسبق‬‫فانه‬‫من‬‫الواجب‬‫تنفيذ‬
‫المنهج‬read().
‫الشكل‬‫التالي‬‫يبين‬‫االصناف‬‫التي‬‫يحتويها‬.
‫األولى‬ ‫المجموعة‬
‫الثانية‬ ‫المجموعة‬
‫المنهج‬read()
‫يعتبر‬‫المنهج‬‫األهم‬‫من‬‫بين‬‫مناهج‬‫الصنف‬‫ويعمل‬‫على‬‫قر‬‫اءة‬
‫البيانات‬‫الثنائية‬‫من‬‫دفق‬‫االدخال‬.
‫يعيد‬‫الصنف‬InputStream‫تحميل‬‫هذا‬‫المنهج‬‫بثالثة‬
‫أشكال‬:
abstract int read()
‫يعمل‬‫على‬‫قراءة‬‫بايت‬‫من‬‫البيانات‬‫ليعيد‬‫القيمة‬‫المقرو‬‫ءة‬‫على‬
‫شكل‬‫عدد‬‫صحيح‬.
int read(byte b[] )
‫يمكن‬‫المبرمج‬‫من‬‫قراءة‬‫بايت‬‫أو‬‫مجموعة‬‫بايتات‬‫في‬‫الوقت‬
‫نفسه‬‫لتخزينها‬‫في‬‫مصفوفة‬‫البايتات‬
...‫تابع‬
int read (byte b[], int off, int len)
‫ثال‬ ‫يمتلك‬ ‫انه‬ ‫في‬ ‫االختالف‬ ‫لكن‬ ‫السابق‬ ‫عمل‬ ‫يشبه‬‫ثة‬
‫معامالت‬:
byte b[]:‫البايتات‬ ‫مصفوفة‬ ‫يمثل‬.
int off:‫ن‬ ‫وذلك‬ ‫قراءته‬ ‫ستبأ‬ ‫الذي‬ ‫البايت‬ ‫موقع‬ ‫يحدد‬‫سبة‬
‫البايتات‬ ‫مصفوفة‬ ‫في‬ ‫األول‬ ‫البايت‬ ‫موقع‬ ‫الى‬.
int len:‫قراءتها‬ ‫المراد‬ ‫الذي‬ ‫البايتات‬ ‫عدد‬ ‫يحدد‬.
...‫تابع‬
‫المنهج‬skip
long skip(long n)
‫االدخال‬ ‫دفق‬ ‫من‬ ‫بايتات‬ ‫مجموعة‬ ‫او‬ ‫بايت‬ ‫ادخال‬ ‫لتخطي‬ ‫يستخدم‬.
‫نوع‬ ‫من‬ ‫العددي‬ ‫المعامل‬long‫الت‬ ‫البايتات‬ ‫عدد‬ ‫تعيين‬ ‫خالله‬ ‫من‬ ‫يتم‬‫ي‬
‫تخطيها‬ ‫سيتم‬.
‫المنهج‬available
int available()
‫س‬ ‫والتي‬ ‫االدخال‬ ‫دفق‬ ‫من‬ ‫المدخلة‬ ‫البايتات‬ ‫عدد‬ ‫تحديد‬ ‫في‬ ‫يستخدم‬‫تدخل‬
‫كتل‬ ‫في‬ ‫تجميع‬ ‫بدون‬.
‫في‬ ‫تجميعها‬ ‫دون‬ ‫بإدخالها‬ ‫سمح‬ ‫التي‬ ‫البايتات‬ ‫عدد‬ ‫المنهج‬ ‫هذا‬ ‫يعيد‬‫كتل‬.
...‫تابع‬
‫المنهج‬mark
synchronized void mark(int readlimit)
‫االدخال‬ ‫دفق‬ ‫في‬ ‫ما‬ ‫موقع‬ ‫على‬ ‫للتأشير‬ ‫يستخدم‬.
‫ت‬ ‫سوف‬ ‫التي‬ ‫البايتات‬ ‫عدد‬ ‫لتحديد‬ ‫وذلك‬ ً‫ا‬‫واحد‬ ً‫ال‬‫معام‬ ‫ياخد‬‫أن‬ ‫قبل‬ ‫قرأ‬
‫قيمة‬ ‫يعيد‬ ‫وال‬ ‫المحدد‬ ‫للموقع‬ ‫الوصول‬ ‫يتم‬.
‫المنهج‬reset
synchronized void reset()
‫علي‬ ‫التأشير‬ ‫تم‬ ‫قد‬ ‫الذي‬ ‫الموقع‬ ‫الى‬ ‫العودة‬ ‫من‬ ‫المبرمج‬ ‫يمكن‬‫ه‬
‫باستخدام‬mark
...‫تابع‬
‫المنهج‬close
void close()
‫العناصر‬ ‫جميع‬ ‫وتحرير‬ ‫االدخال‬ ‫دفق‬ ‫الغالق‬ ‫يستخدم‬
‫االدخال‬ ‫دفق‬ ‫في‬ ‫المشاركة‬ ‫العناصر‬.
‫ال‬ ‫هذا‬ ‫لذا‬ ً‫ا‬‫تلقائي‬ ‫االدخال‬ ‫دفق‬ ‫اغالق‬ ‫على‬ ‫تعمل‬ ‫جافا‬‫ال‬ ‫منهج‬
ً‫ا‬‫ضروري‬ ً‫ا‬‫أمر‬ ‫يعد‬.
‫لإلدخال‬ ‫قياسية‬ ‫كائنات‬ ‫جافا‬ ‫لغة‬ ‫توفر‬/‫الصنف‬ ‫الى‬ ‫إضافة‬ ‫االخراج‬
‫األساسي‬InputStream.
‫الكائنات‬ ‫هذه‬ ‫يبين‬ ‫التالي‬ ‫الجدول‬:
‫مثال‬
import java.io.*;
public class InputsSample {
public static void main(String[] args) throws Exception
{
StringBuffer s = new StringBuffer();
char c;
try {
Reader in = new InputStreamReader(System.in);
while ((c = (char) in.read()) != 'n') {
s.append(c);
}
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
System.out.println(s);
}
}
‫التالية‬ ‫الفرعية‬ ‫االصناف‬ ‫يمتلك‬:
BufferedInputStream
‫مثال‬
import java.io.*;
public class MethalBuffReader {
public static void main(String args[]) {
BufferedReader dtIn = new BufferedReader(new
InputStreamReader(System.in));
char buf[] = new char[20];
try {
dtIn.read(buf, 0, 20);
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
String s = new String(buf);
System.out.println(s);
}
}
‫مثال‬
import java.io.*;
public class MethalBuffReader {
public static void main(String args[]) throws IOException {
char c;
FileInputStream inFile = new FileInputStream(“test.java");
LineNumberInputStream inLines = new
LineNumberInputStream(inFile);
DataInputStream inStream = new DataInputStream(inLines);
String inputLine;
while ((inputLine = inStream.readLine()) != null) {
System.out.println(inLines.getLineNumber() + ". " +
inputLine);
}
c = (char) System.in.read();
}
}
‫يعد‬‫اال‬ ‫دفق‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ ‫األصناف‬ ‫لجميع‬ ‫األساس‬ ‫الصنف‬ ‫هذا‬‫خراج‬.
‫األصناف‬ ‫هذه‬ ‫هيكلية‬ ‫يبين‬ ‫الشكل‬:
‫الصنف‬ ‫مناهج‬OUTPUTSTREAM
‫المنهج‬write
abstract void write(int b)
‫االخراج‬ ‫دفق‬ ‫الى‬ ‫البيانات‬ ‫من‬ ‫واحد‬ ‫بايت‬ ‫كتابة‬ ‫على‬ ‫المنهج‬ ‫هذا‬ ‫يعمل‬.
‫للمستدعي‬ ‫قيمة‬ ‫يعيد‬ ‫وال‬ ‫صحيح‬ ‫عددي‬ ‫نوع‬ ‫من‬ ‫معامال‬ ‫ياخد‬.
void write(byte b[] )
‫اال‬ ‫دفق‬ ‫الى‬ ‫بكتابتها‬ ‫يقوم‬ ‫البايتات‬ ‫من‬ ‫مصفوفة‬ ‫يمثل‬ ً‫ال‬‫معام‬ ‫يمتلك‬‫يعيد‬ ‫وال‬ ‫خراج‬
‫للمستدعي‬ ‫قيمة‬.
void write(byte b[], int off, int len)
‫يمتلك‬ ،‫سبقه‬ ‫ما‬ ‫نفس‬ ‫يعمل‬3‫الت‬ ‫البايتات‬ ‫عدد‬ ‫تحديد‬ ‫من‬ ‫المبرمج‬ ‫ليمكن‬ ‫معامالت‬‫ي‬
‫االخراج‬ ‫دفق‬ ‫الى‬ ‫تكتب‬ ‫سوف‬.
...‫تابع‬
‫المنهج‬flush
void flush()
‫لتمكين‬ ‫يستخدم‬Buffer‫الى‬ ‫الكتابة‬ ‫من‬ ‫البيانات‬ ‫دارئ‬
‫المنهج‬ ‫هذا‬ ‫بواسطة‬ ،‫اجباري‬ ‫فوري‬ ‫بشكل‬ ‫االخراج‬ ‫دفق‬‫يتم‬
‫أخرى‬ ‫بيانات‬ ‫بأي‬ ‫لتحميله‬ ً‫ا‬‫تمهيد‬ ‫الدارئ‬ ‫تنظيف‬.
‫المنهج‬close
Void close()
‫المشاركة‬ ‫جميع‬ ‫وتحرير‬ ‫االخراج‬ ‫دفق‬ ‫الغالق‬ ‫يستخدم‬‫في‬
‫االخراج‬ ‫دفق‬.ً‫ا‬‫ضروري‬ ‫يعد‬ ‫ال‬ ‫المنهج‬ ‫وهذا‬
‫الصنف‬ ‫الستخدام‬ ‫الحاجة‬ ‫عند‬File‫ويتم‬ ‫الصنف‬ ‫هذا‬ ‫من‬ ‫كائن‬ ‫انشاء‬ ‫يتم‬
‫التالية‬ ‫الطرق‬ ‫بأحدى‬ ‫ذلك‬:
 public File(String pathname)
‫الملف‬ ‫الى‬ ‫الممر‬ ‫يمثل‬ ً‫ا‬‫واحد‬ ً‫ال‬‫معام‬ ‫ويمتلك‬ ‫مثيل‬ ‫ملف‬ ‫انشاء‬.
 public File(String pathname, String
filename)
‫الى‬ ‫الممر‬ ‫األول‬ ‫المعامل‬ ‫يمثل‬ ‫معاملين‬ ‫ويمتلك‬ ‫مثيل‬ ‫ملف‬ ‫انشاء‬
‫الملف‬ ‫اسم‬ ‫والثاني‬ ‫الملف‬.
 public File(File Directory, String
filename)
‫باختالف‬ ‫سبقه‬ ‫لما‬ ‫ومشابه‬ ‫معاملين‬ ‫ويمتلك‬ ‫مثيل‬ ‫ملف‬ ‫انشاء‬‫ان‬
‫اخر‬ ‫لملف‬ ‫كائن‬ ‫عن‬ ‫عبارة‬ ‫األول‬ ‫المعامل‬
‫الصنف‬ ‫مناهج‬FILE
‫المنهج‬getName()
‫سلس‬ ‫شكل‬ ‫على‬ ‫االسم‬ ‫هذا‬ ‫ليعيد‬ ‫الملف‬ ‫اسم‬ ‫على‬ ‫التعرف‬ ‫على‬ ‫يعمل‬‫لة‬
‫رمزية‬.
‫المنهج‬getPath()
‫هذ‬ ‫ليعيد‬ ‫للملف‬ ‫للوصول‬ ‫يؤدي‬ ‫الذي‬ ‫الممر‬ ‫على‬ ‫التعرف‬ ‫على‬ ‫يعمل‬‫الممر‬ ‫ا‬
‫رمزية‬ ‫سلسلة‬ ‫شكل‬ ‫على‬.
‫المنهج‬getAbsolutePath()
‫ل‬ ‫تؤدي‬ ‫التي‬ ‫األدلة‬ ‫جميع‬ ‫أي‬ ‫بالكامل‬ ‫الممر‬ ‫على‬ ‫التعرف‬ ‫على‬ ‫يعمل‬‫لوصول‬
‫رمزية‬ ‫سلسلة‬ ‫شكل‬ ‫على‬ ‫الممر‬ ‫هذا‬ ‫ليعيد‬ ‫للملف‬.
...‫تابع‬
‫المنهج‬exists()
‫وج‬ ‫عن‬ ‫تعبر‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫وجود‬ ‫عن‬ ‫البحث‬ ‫على‬ ‫يعمل‬‫ود‬
‫عدمه‬ ‫أو‬ ‫الملف‬.
‫المنهج‬canRead()
‫اال‬ ‫هذه‬ ‫عن‬ ‫تعبر‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫من‬ ‫القراءة‬ ‫امكانية‬ ‫يدرس‬‫مكانية‬
‫عدمها‬ ‫أو‬.
‫المنهج‬canWrite()
‫ا‬ ‫هذه‬ ‫عن‬ ‫تعبر‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫من‬ ‫الكتابة‬ ‫امكانية‬ ‫يدرس‬‫المكانية‬
‫عدمها‬ ‫أو‬.
...‫تابع‬
‫المنهج‬isFile()
‫منط‬ ‫قيمة‬ ‫ليعيد‬ ‫الصحيح‬ ‫بشكله‬ ‫الملف‬ ‫وجود‬ ‫عن‬ ‫البحث‬ ‫على‬ ‫يعمل‬‫تعبر‬ ‫قية‬
‫عدمه‬ ‫أو‬ ‫الملف‬ ‫وجود‬ ‫عن‬.
‫المنهج‬isDirectory()
‫تعبر‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫دليل‬ ‫وجود‬ ‫عن‬ ‫البحث‬ ‫على‬ ‫يعمل‬‫وجود‬ ‫عن‬
‫عدمه‬ ‫أو‬ ‫الدليل‬.
‫المنهج‬lastModified()
‫ليعي‬ ‫الملف‬ ‫على‬ ‫تعديل‬ ‫عملية‬ ‫فيه‬ ‫تمت‬ ‫تاريخ‬ ‫آخر‬ ‫على‬ ‫يتعرف‬‫هذا‬ ‫د‬
‫التاريخ‬.
...‫تابع‬
‫المنهج‬length()
‫المل‬ ‫طول‬ ‫تمثل‬ ‫التي‬ ‫البايتات‬ ‫عدد‬ ‫ليعيد‬ ‫الملف‬ ‫طول‬ ‫على‬ ‫يتعرف‬‫ف‬.
‫المنهج‬mkdir()
‫عم‬ ‫أن‬ ‫تعيد‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫دليل‬ ‫انشاء‬ ‫المنهج‬ ‫هذا‬ ‫بواسطة‬ ‫يتم‬‫االنشاء‬ ‫لية‬
‫تتم‬ ‫لم‬ ‫أو‬ ‫تمت‬.
‫المنهج‬mkdirs()
‫األدلة‬ ‫من‬ ‫مجموعة‬ ‫انشاء‬ ‫المنهج‬ ‫هذا‬ ‫بواسطة‬ ‫يتم‬(‫ال‬ ‫تشكل‬ ‫متداخلة‬ ‫أدلة‬‫ممر‬
‫للملف‬)‫تتم‬ ‫لم‬ ‫أو‬ ‫تمت‬ ‫االنشاء‬ ‫عملية‬ ‫أن‬ ‫تعيد‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬.
...‫تابع‬
‫المنهج‬renameTo()
‫قي‬ ‫ليعيد‬ ‫مغاير‬ ‫اسم‬ ‫الى‬ ‫الملف‬ ‫اسم‬ ‫تغيير‬ ‫المنهج‬ ‫هذا‬ ‫بواسطة‬ ‫يتم‬‫منطقية‬ ‫مة‬
‫تتم‬ ‫لم‬ ‫او‬ ‫تمت‬ ‫التغيير‬ ‫عملية‬ ‫أن‬ ‫عن‬ ‫تعبر‬.
‫المنهج‬delete()
‫عم‬ ‫أن‬ ‫تعبر‬ ‫منطقية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫حذف‬ ‫المنهج‬ ‫هذا‬ ‫بواسطة‬ ‫يتم‬‫لية‬
‫تتم‬ ‫لم‬ ‫او‬ ‫تمت‬ ‫الحذف‬.
‫مثال‬
import java.io.*;
public class printFile {
public static void main (String[] args){
try {
File file = new File ("Main.java");
FileInputStream infile = new
FileInputStream(file);
DataInputStream instream = new
DataInputStream(infile);
String line = "";
while ((line = instream.readLine())!= null)
System.out.println(line);
instream.close();
infile.close();
} catch (Exception e){ }
}
}
‫على‬‫الرغم‬‫من‬‫أن‬‫األصناف‬FileInputStream
‫و‬FileOutputStream‫تعمل‬‫بواسطة‬‫مناهجها‬
‫المختلفة‬‫على‬‫التعامل‬‫مع‬‫الملفات‬‫للقراءة‬‫أو‬‫الكت‬‫ابة‬.
‫الصنف‬RandomAccessFile‫يعتبر‬ً‫ا‬‫مهم‬‫الداء‬
‫عمليات‬‫القراءة‬‫والكتابة‬‫كونه‬‫يوفر‬‫مجموعة‬‫من‬‫الم‬‫زايا‬
‫والخيارات‬‫الخاصة‬‫التي‬‫تبسط‬‫وتسهل‬‫عمليات‬‫ال‬‫قراءة‬
‫والكتابة‬.
‫هذا‬‫الصنف‬‫قادر‬‫على‬‫الوصول‬‫الى‬‫بيانات‬‫الملف‬
‫بصورة‬‫مباشرة‬.
...‫تابع‬
‫الصنف‬ ‫باستعمال‬ ‫البدء‬ ‫عند‬RandomAccessFile‫واجب‬ ‫فمن‬
‫هل‬ ،‫الملف‬ ‫على‬ ‫تجري‬ ‫سوف‬ ‫التي‬ ‫العمليات‬ ‫نوع‬ ‫تحديد‬ ‫المبرمج‬‫هي‬
‫وكتابة‬ ‫قراءة‬ ‫أم‬ ‫فقط‬ ‫قراءة‬ ‫عمليات‬.
‫الصنف‬ ‫يمتلك‬RandomAccessFile‫الصيغ‬ ‫يأخذان‬ ‫بناءين‬
‫التالية‬:
public RandomAccessFile(String filename,
String mode)
‫العمليات‬ ‫نوع‬ ‫يحدد‬ ‫والثاني‬ ‫الملف‬ ‫اسم‬ ‫يحدد‬ ‫األول‬ ‫المعامل‬r,rw
public RandomAccessFile(File filename, String
mode)
‫العمليات‬ ‫نوع‬ ‫يحدد‬ ‫والثاني‬ ‫ملف‬ ‫من‬ ‫الكائن‬ ‫يحدد‬ ‫األول‬ ‫المعامل‬r,rw.
...‫تابع‬
‫الصنف‬RandomAccessFile‫مناهج‬ ‫جميع‬ ‫تنفيذ‬ ‫على‬ ‫قادر‬
‫األصناف‬FileInputStream‫و‬FileOutputStream
‫منهاجين‬ ‫الى‬ ‫باالضافة‬seek()‫و‬getFilePointer().
‫المنهج‬getFilePointer()
public long getFilePointer()
‫ال‬ ‫تمثل‬ ‫عددية‬ ‫قيمة‬ ‫ليعيد‬ ‫الملف‬ ‫في‬ ‫المؤشر‬ ‫موقع‬ ‫اليجاد‬ ‫يستخدم‬‫موقع‬.
‫المنهج‬seek()
public void seek(long filePostion)
‫الكت‬ ‫او‬ ‫للقراءة‬ ً‫ا‬‫تمهيد‬ ‫الملف‬ ‫في‬ ‫المؤشر‬ ‫موقع‬ ‫لتعيين‬ ‫يستخدم‬‫يعيد‬ ‫وال‬ ‫ابة‬
‫نوع‬ ‫من‬ ‫عددي‬ ‫معامل‬ ‫ياخذ‬ ‫بينما‬ ‫قيمة‬ ‫أي‬long‫الملف‬ ‫مؤشر‬ ‫موقع‬ ‫يمثل‬.
‫مثال‬
import java.io.*;
public class RanInform {
public static void main(String args[]) throws
IOException {
char c,k;
RandomAccessFile file = new
RandomAccessFile("RandomFileTest.txt","rw");
file.writeBoolean(true);
file.writeInt(123456);
file.writeChar('j');
file.writeDouble(1234.56);
file.seek(1);
System.out.println(file.readInt());
System.out.println(file.readChar());
System.out.println(file.readDouble());
file.seek(0);
System.out.println(file.readBoolean());
file.close();
k = (char)System.in.read();
}}
‫التاسعة‬ ‫الوحدة‬
‫جافا‬ ‫بلغة‬ ‫الرسم‬ ‫أساسيات‬
Basics of Graphics in Java
‫سوينج‬ ‫تقنية‬ ‫الى‬ ‫مدخل‬SWING
 ‫بالبيئة‬ ‫تعنى‬ ‫أصناف‬ ‫مكتبة‬ ‫على‬ ‫احتوى‬ ‫جافا‬ ‫لغة‬ ‫من‬ ‫األول‬ ‫االصدار‬
‫التجريدية‬ ‫جافا‬ ‫ادوات‬ ‫طاقم‬ ‫صن‬ ‫شركة‬ ‫اسمتها‬ ‫ما‬ ‫وهي‬ ‫الرسومية‬
Abstract Window Toolkit (AWT).
 ‫سنة‬ ‫في‬1996‫شركة‬ ‫انتجت‬ Netscape ‫جافا‬ ‫للغة‬ ‫رسومية‬ ‫عناصر‬
‫واسمتها‬IFC ‫للمصطلح‬ ً‫ا‬‫اختصار‬ Internet Foundation
Class ‫عن‬ ً‫ا‬‫كلي‬ ً‫ا‬‫اختالف‬ ‫المكتبة‬ ‫هذه‬ ‫وتختلف‬AWT.
 ‫شركة‬ ‫مع‬ ‫صن‬ ‫شركة‬ ‫عملت‬Netscape ‫المنتج‬ ‫هذا‬ ‫تطوير‬ ‫على‬
‫وسموه‬Swing.
 AWT ‫من‬ ‫أسرع‬ Swing ‫لكن‬ ،‫التنفيذ‬ ‫في‬ Swing ‫من‬ ‫العديد‬ ‫هناك‬
‫لها‬ ‫الحسنات‬:
...‫تابع‬
 Swing ‫وبتنوع‬ ‫الرسومية‬ ‫البرمجة‬ ‫عناصر‬ ‫من‬ ‫كبير‬ ‫عدد‬ ‫على‬ ‫تحتوي‬
‫تحتاجه‬ ‫ما‬ ‫لكل‬ ‫كبير‬.
 ‫اعتماد‬Swing ً‫ا‬‫جد‬ ‫قليل‬ ‫العمل‬ ‫منصة‬ ‫على‬.
 ‫استعمال‬Swing ‫يعطي‬ ‫مما‬ ‫نفسه‬ ‫وبالشكل‬ ‫المنصات‬ ‫جميع‬ ‫على‬
‫وتوافقية‬ ‫تكاملية‬ ‫المستخدم‬.
‫جافا‬ ‫لغة‬ ‫إطارات‬FRAMES
 ‫اطار‬ ‫انشاء‬Frame
 ‫اخرى‬ ‫نافذة‬ ‫اية‬ ‫على‬ ‫تحتوي‬ ‫وال‬ ‫المقدمة‬ ‫في‬ ‫تكون‬ ‫التي‬ ‫النافذة‬ ‫هو‬ ‫االطار‬.
 ‫مكتبة‬ ‫في‬AWT ‫يدعى‬ ‫صنف‬ ‫هناك‬ Frame ‫في‬ ‫بينما‬ Swing ‫هناك‬
‫يدعي‬ ‫صنف‬Jframe ‫من‬ ‫ممتد‬ ‫وهو‬ ‫االطار‬ ‫لرسم‬ ‫المستخدم‬ ‫وهو‬
‫الصنف‬Frame.
 ،‫األزرار‬ ،‫األيقونات‬ ،‫العمود‬ ‫عنوان‬ ‫مثل‬ ‫االطار‬ ‫في‬ ‫الرئيسية‬ ‫األجزاء‬
‫من‬ ‫وليس‬ ‫التشغيل‬ ‫نظام‬ ‫قبل‬ ‫من‬ ‫ترسم‬ ‫وغيرها‬Swing.
 ‫ألصناف‬ ‫التوارثية‬ ‫الشجرة‬ ‫يوضح‬ ‫التالي‬ ‫الشكل‬Swing
...‫تابع‬
‫مثال‬
import javax.swing.*;
class FirstFrame extends JFrame
{public FirstFrame(){
setTitle("‫المفتوحة‬ ‫القدس‬ ‫;)"جامعة‬
setSize(800, 600); } }
public class FirstTest{
public static void main(String[] args){
JFrame frame = new FirstFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_C
LOSE);
frame.show(); } }
‫مثال‬2
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class CenteredFrame extends JFrame
{ public CenteredFrame()
{ setTitle (" ‫االطار‬2 ");
addWindowListener(new WindowAdapter()
{ public void
windowClosing(WindowEvent e)
{ System.exit(0);
}} );
...‫تابع‬
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int screenHeight = d.height;
int screenWidth = d.width;
setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 4);
Image img = tk.getImage("icon.gif");
setIconImage(img);}}
public class CenteredTest
{ public static void main(String[] args)
{ JFrame frame = new CenteredFrame();
frame.show();
}
}
‫العرض‬ ‫واجهة‬ ‫داخل‬ ‫ورمزية‬ ‫نصية‬ ‫معلومات‬ ‫عرض‬
 ‫في‬ ‫طبقات‬ ‫اربع‬ ‫هناك‬JFrame ‫الطبقات‬ ‫هذه‬ ‫يوضح‬ ‫التالي‬ ‫والشكل‬:
‫مثال‬3
import javax.swing.*;
import java.awt.*;
public class AlqudsHello
{ public static void main(String[] args)
{ AlqudsHelloFrame frame = new AlqudsHelloFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();}}
/**A frame that contains a message panel*/
class AlqudsHelloFrame extends JFrame
{public AlqudsHelloFrame()
{setTitle ("‫المفتوحة‬ ‫القدس‬ ‫;)"جامعة‬
setSize(WIDTH, HEIGHT);
// add panel to frame
AlqudsHelloPanel panel = new AlqudsHelloPanel();
Container contentPane = getContentPane();
contentPane.add(panel);}
public static final int WIDTH = 300;
public static final int HEIGHT = 200; }
...‫تابع‬
/**A panel that displays a message. */
class AlqudsHelloPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("Alquds Open University",
MESSAGE_X,
MESSAGE_Y);
}
public static final int MESSAGE_X = 75;
public static final int MESSAGE_Y = 100;
}
‫األبعاد‬ ‫ثنائية‬ ‫األشكال‬
 ‫األبعاد‬ ‫ثنائية‬ ‫باألشكال‬ ‫الرسم‬ ‫يوضح‬ ‫التالي‬ ‫المثال‬:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class DrawTest
{ public static void main(String[] args)
{DrawFrame frame = new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();}}
/** A frame that contains a panel with drawings*/
class DrawFrame extends JFrame
{public DrawFrame()
{setTitle("Al-Quds Open Univ.: 2-D Graphics Example");
setSize(WIDTH, HEIGHT);
// add panel to frame
DrawPanel panel = new DrawPanel();
Container contentPane = getContentPane();
contentPane.add(panel);}
public static final int WIDTH = 400;
public static final int HEIGHT = 400; }
...‫تابع‬
/** A panel that displays rectangles and ellipses. */
class DrawPanel extends JPanel
{ public void paintComponent(Graphics g)
{ super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
// draw a rectangle
double leftX = 100;
double topY = 100;
double width = 200;
double height = 150;
Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
g2.draw(rect);
// draw the enclosed ellipse
Ellipse2D ellipse = new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.draw(ellipse);
// draw a diagonal line
g2.draw(new Line2D.Double(leftX, topY, leftX + width, topY + height));
// draw a circle with the same center
double centerX = rect.getCenterX();
double centerY = rect.getCenterY();
double radius = 150;
Ellipse2D circle = new Ellipse2D.Double();
circle.setFrameFromCenter(centerX, centerY,
...‫تابع‬
 ‫األمثلة‬ ‫جميع‬ ‫طبق‬ ،‫جافا‬ ‫لغة‬ ‫باستخدام‬ ‫الرسم‬ ‫حول‬ ‫المزيد‬ ‫لمعرفة‬
‫التاسعة‬ ‫الوحدة‬ ‫في‬ ‫والتدريبات‬.

More Related Content

Similar to شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي

Similar to شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي (20)

البرمجة
البرمجةالبرمجة
البرمجة
 
بناء نظام التحكم
بناء نظام التحكمبناء نظام التحكم
بناء نظام التحكم
 
Loops
LoopsLoops
Loops
 
Perl tutorial
Perl tutorial Perl tutorial
Perl tutorial
 
Loops
LoopsLoops
Loops
 
الخوارزميات و المخططات الإنسيابية
الخوارزميات و المخططات الإنسيابيةالخوارزميات و المخططات الإنسيابية
الخوارزميات و المخططات الإنسيابية
 
7 functions
7 functions7 functions
7 functions
 
مقدمة البرمجة
مقدمة البرمجةمقدمة البرمجة
مقدمة البرمجة
 
7 multi threading
7 multi threading7 multi threading
7 multi threading
 
نظام التشغيل
نظام التشغيلنظام التشغيل
نظام التشغيل
 
C++
C++C++
C++
 
C++
C++C++
C++
 
عرض العمليات الحسابية والمنطقية
عرض العمليات الحسابية والمنطقيةعرض العمليات الحسابية والمنطقية
عرض العمليات الحسابية والمنطقية
 
Java 8 lambda expression
Java 8 lambda expressionJava 8 lambda expression
Java 8 lambda expression
 
Programming languages concepts
Programming languages conceptsProgramming languages concepts
Programming languages concepts
 
لغة البرمجة سكالا
لغة البرمجة سكالالغة البرمجة سكالا
لغة البرمجة سكالا
 
c++ for loops
c++ for loopsc++ for loops
c++ for loops
 
Part software -
Part   software - Part   software -
Part software -
 
Loop.Hamid K
Loop.Hamid KLoop.Hamid K
Loop.Hamid K
 
باللغة العربية jQuery دورة
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورة
 

More from جامعة القدس المفتوحة

كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةكتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة السادسة
ملخص تحليل الانظمة وتصميمها - الوحدة السادسةملخص تحليل الانظمة وتصميمها - الوحدة السادسة
ملخص تحليل الانظمة وتصميمها - الوحدة السادسةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسة
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسةملخص تحليل الانظمة وتصميمها - الوحدة الخامسة
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثة
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثةملخص تحليل الانظمة وتصميمها - الوحدة الثالثة
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنة
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنةملخص تحليل الانظمة وتصميمها - الوحدة الثامنة
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة السابعة
ملخص تحليل الانظمة وتصميمها - الوحدة السابعةملخص تحليل الانظمة وتصميمها - الوحدة السابعة
ملخص تحليل الانظمة وتصميمها - الوحدة السابعةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعة
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعةملخص تحليل الانظمة وتصميمها - الوحدة الرابعة
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعة
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعةملخص تحليل الانظمة وتصميمها - الوحدة التاسعة
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعةجامعة القدس المفتوحة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثانية
ملخص تحليل الانظمة وتصميمها - الوحدة الثانيةملخص تحليل الانظمة وتصميمها - الوحدة الثانية
ملخص تحليل الانظمة وتصميمها - الوحدة الثانيةجامعة القدس المفتوحة
 
ملخص تقنية تصميم صفحات الويب - الوحدة السادسة
ملخص تقنية تصميم صفحات الويب - الوحدة السادسةملخص تقنية تصميم صفحات الويب - الوحدة السادسة
ملخص تقنية تصميم صفحات الويب - الوحدة السادسةجامعة القدس المفتوحة
 
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسةملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسةجامعة القدس المفتوحة
 
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266جامعة القدس المفتوحة
 
مناهج البحث العلمي - اللقاء الافتراضي الثاني
مناهج البحث العلمي - اللقاء الافتراضي الثانيمناهج البحث العلمي - اللقاء الافتراضي الثاني
مناهج البحث العلمي - اللقاء الافتراضي الثانيجامعة القدس المفتوحة
 
مناهج البحث العلمي - اللقاء الافتراضي الاول
مناهج البحث العلمي - اللقاء الافتراضي الاولمناهج البحث العلمي - اللقاء الافتراضي الاول
مناهج البحث العلمي - اللقاء الافتراضي الاولجامعة القدس المفتوحة
 

More from جامعة القدس المفتوحة (20)

كتاب ميكروبيديا Micropedia
كتاب ميكروبيديا Micropediaكتاب ميكروبيديا Micropedia
كتاب ميكروبيديا Micropedia
 
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجةكتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
كتاب: Simply AVR مقدمة مبسطة عن النظم المدمجة
 
ملخص تحليل الانظمة وتصميمها - النصفي
ملخص تحليل الانظمة وتصميمها - النصفيملخص تحليل الانظمة وتصميمها - النصفي
ملخص تحليل الانظمة وتصميمها - النصفي
 
ملخص تحليل الانظمة وتصميمها - الوحدة السادسة
ملخص تحليل الانظمة وتصميمها - الوحدة السادسةملخص تحليل الانظمة وتصميمها - الوحدة السادسة
ملخص تحليل الانظمة وتصميمها - الوحدة السادسة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسة
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسةملخص تحليل الانظمة وتصميمها - الوحدة الخامسة
ملخص تحليل الانظمة وتصميمها - الوحدة الخامسة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثة
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثةملخص تحليل الانظمة وتصميمها - الوحدة الثالثة
ملخص تحليل الانظمة وتصميمها - الوحدة الثالثة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنة
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنةملخص تحليل الانظمة وتصميمها - الوحدة الثامنة
ملخص تحليل الانظمة وتصميمها - الوحدة الثامنة
 
ملخص تحليل الانظمة وتصميمها - الوحدة السابعة
ملخص تحليل الانظمة وتصميمها - الوحدة السابعةملخص تحليل الانظمة وتصميمها - الوحدة السابعة
ملخص تحليل الانظمة وتصميمها - الوحدة السابعة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعة
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعةملخص تحليل الانظمة وتصميمها - الوحدة الرابعة
ملخص تحليل الانظمة وتصميمها - الوحدة الرابعة
 
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعة
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعةملخص تحليل الانظمة وتصميمها - الوحدة التاسعة
ملخص تحليل الانظمة وتصميمها - الوحدة التاسعة
 
ملخص تحليل الانظمة وتصميمها - الوحدة الثانية
ملخص تحليل الانظمة وتصميمها - الوحدة الثانيةملخص تحليل الانظمة وتصميمها - الوحدة الثانية
ملخص تحليل الانظمة وتصميمها - الوحدة الثانية
 
ملخص تقنية تصميم صفحات الويب - الوحدة السادسة
ملخص تقنية تصميم صفحات الويب - الوحدة السادسةملخص تقنية تصميم صفحات الويب - الوحدة السادسة
ملخص تقنية تصميم صفحات الويب - الوحدة السادسة
 
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسةملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
ملخص تقنية تصميم صفحات الويب - الوحدة الخامسة
 
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
اسئلة نهائية لمقرر تقنية تصميم صفحات الويب - 1266
 
مناهج البحث العلمي - اللقاء الافتراضي الثاني
مناهج البحث العلمي - اللقاء الافتراضي الثانيمناهج البحث العلمي - اللقاء الافتراضي الثاني
مناهج البحث العلمي - اللقاء الافتراضي الثاني
 
مناهج البحث العلمي - شرح الوحدات 1-5
مناهج البحث العلمي - شرح الوحدات 1-5مناهج البحث العلمي - شرح الوحدات 1-5
مناهج البحث العلمي - شرح الوحدات 1-5
 
ملخص مناهج البحث العلمي كامل
ملخص مناهج البحث العلمي كاململخص مناهج البحث العلمي كامل
ملخص مناهج البحث العلمي كامل
 
ملخص مناهج البحث العلمي
ملخص مناهج البحث العلميملخص مناهج البحث العلمي
ملخص مناهج البحث العلمي
 
مناهج البحث العلمي - اللقاء الافتراضي الاول
مناهج البحث العلمي - اللقاء الافتراضي الاولمناهج البحث العلمي - اللقاء الافتراضي الاول
مناهج البحث العلمي - اللقاء الافتراضي الاول
 
ملخص تعايش مع التكنولوجيا
ملخص تعايش مع التكنولوجياملخص تعايش مع التكنولوجيا
ملخص تعايش مع التكنولوجيا
 

شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي