الرحيم الرحمن الله بسم
1 جافا دوسية
العزة أ. إعداد: خالد عليالجامعية األهلية فلسطين كلية
: الكتروني [email protected]بريد
% الجافا؟: أوًال هي ما
تستخدم برمجة لغة عن عبارة هي تعتمد OOP(Object Oriented Programming) مفاهيمالجافا و ( خواص عن عبارة هو و األوبجكت على المفاهيم سلوك( statesهذه لو (behavior)و عمل أننامثال نريد
. سلوكه و الضوء خواص من نحتاج ماذا لمعرفة نحتاج لضوء اوبجكت-<–الضوء اللون< صفة
>- يضيء-< سلوك الضوءال في تنضم كلها و اإلنتربتر و كومبايلر الجافا على Java Virtual Machineتستخدم تنزيله يجب و
. التشغيل أنظمة كل على الجافا تعمل ولذلك الجافا بلغة المكتوبة البرامج لتشغيل التشغيل نظام
:% : ثانيا الجافا برمجة في أساسية قواعد
من : أساسي بشكل الجافا برنامج يتكونMethods عند تنفذ الجافا بلغة مكتوبة العمليات من مجموعة عن عبارة هي في استدعائهاو يقابلها و
ال Functions ال Cلغة أيضا هناك يحتوي Classو و الجافا بلغة المكتوب البرنامج عن عبارة هو والبرنامج . مكونات على
مثال:
class HelloJava{public static void main)String[] args({
System.out.println)" جافا في بكم ;)"مرحبا}
}
الميثود على يحتوي رئيسي كالس هناك دائما لكن و الواحد البرنامج كالسفي من أكتر كتابة نستطيعو )Main Method(الرئيسي الرئيسي الكالس إال الرئيسي الميثود الكالسعلى من أي يحتوي ال و
القائد يسمى حيث آخر اسم الرئيسي مثل انطالقاألنه )Driver Method(للميثود البرنامج ينفذ منهلغة .Cفي
حرفمن مالحظة : أول يكون أن ألن اسميجب كبير بحرف أيضا يبدأ منه قسم كل و T كبيرا الكالس. : االسم مثل متالصق األول : HelloJavaيكون :Helloالقسم الثاني القسم ال Java و أسماء بينما تبدأ
الميثود مثال كبيرة بأحرف تبدأ الباقية أقسامها تقون لكن و كبيرة بأحرف األول getMaxالميثود القسمget الثاني القسم لكن و بحرفصغير .Maxيبدأ اإلسم لفهم ذلك و كبير بحرف يبدأ
System.out.println)( : حيث الناتج لطباعة :إذايستخدم استخدمنا println. سطر : ينزل ثم يطبع
print. سطر : ينزل أن بدون يطبع
الجافا - في تلقائيا% المعرفة المتغيرات : ) Built in Types ( أنواع
: البرمجة لغات كبقية الجافا في للمتغيرات معرفة أنواع عدة هناك
: كالتالي المتغير تعريف يكون
المتغير نوع المتغير اسممثال char x
: جافا في المعرفة المتغيرات أنواع
Integers ( الحقيقية : ( األعداد
كتابته كيفيةالبرمجة عند
الحجم( بيت(
األرقام مدىقيمة أقل قيمة أكبر
Byte = 8 bits.تعريف مالحظة: كتابة longعند ) lيجب أل( :حرف , مثال الرقم بعد
long x = 1234321l ;
Float ( العشرية : ( األرقام
الكتابة كيفيةالتعريف عند
( بيت ( الحجم المدى
float 32 بعد 6-7 أرقامالفاصلة
double 64 بعد 15 رقمالفاصلة
كتابة مالحظة : يجب فلوت تعريف :fعند , مثال الرقم بعد
float x = 1.23f;مثل : خاصة قيم العشرية لألرقام كذلك هناك
PositiveInfinite : + ∞NegativeInfinite: ─ ∞Nan )not a number(: 1/0) معرف .)غير
Boolean ( خطأ او صح قيمتين له جبري :( تعبير
boolean Size : 1bit Values : true , false.
مثال:boolean x = true;
Characters:
حجمه رمز او واحد حرف عن عبارة او 2هي الحرف بوضع تعريفه دائما يكون و بايتبين المعرفة ' 'الرمز األرقام مجموعة هي و كود باألسكي له المقابل الرقم بكتابة أو
. الرموز و لألحرفchar Size: 16bit
تستخدم : مالحظة ألنها الجافا في نريدها لغة بأي الكتابة الترميزو Ascii code نستطيع .Unicode الموحد
مثال:char x = 'A'; char x = 65;char x='س';char x='#';
الحرف 65 .Aيقابله كود األسكي فيالرمز أيضا أو 'n'\هناك سطر انزل يعني هذا األسكي enterو في يقابله و
رقم 13كودOperators ( المعامالت ) :
+ , - , * , / , ++ , --قيمة ++ مالحظة : للمتغير تزيد 1يعني
قيمة-- المتغير قيمة من 1تنقصمثال:
int x =4; x++;x=5النتيجة:
Relations ( عالقات ) : السؤال : == عند تستخدم و تساويالسؤال : =! عند أيضا تستخدم و تساوي ًالتساوي : =< أو من أكبر>=: تساوي أو من أقلأكبر :<أصغر : <
Boolean Operators:السؤال عند تستخدم و&& : and|| : or
^^ : xor! : not
Bitwise Operators:
المنطقية العمليات في تستخدم و&: and| : or^ : xor~ : not
More Complicated :
اليمين : << الى إزاحةاليسار : << الى إزاحةالقسمة : % باقي
مثال:int x;x = 4%3;
x= 1الخروج :
Automatic Conversion ( التلقائي : ( التحويل
واحد نوع الى المختلفة العمليات نتائج في المتغيرات انواع شتى نحويل الجافا تستطيع. األحقية حسب خاصة قوانين حسب
مثال:
1.7 + 99 = 100.7double + int = double int double بالعملية قام ثمdouble النتيجة
بالترتيب العملية في المتغيرات انواع وجود عند األولويات تكون حيثالتالي:
العملية -1 في كان الى doubleإذا األخرى المتغيرات تكون doubleتحول النتيجة ونوع .doubleمن
العملية -2 في كان الى floatإذا األخرى المتغيرات من floatتحول تكون النتيجة و .floatنوع
العملية -3 في كان الى longإذا األخرى المتغيرات نوع longتحول من تكون النتيجة وlong.
الى -4 المتغيرات كل تحول السابقة االنواع من أي العملية في تكن لم و intإذانوع من تكون .intالنتيجة
Casting:. بالعملية القيام بعد نختارها نحن قيمة ارجاع عملية هي
على :castingمثالint x = 2345;short y = (short)x;
int لكن 4حجمه و ل بايت 2حجمه shortبايت يأخذ من y 2لذلك بايتيأخذ xيمين اشارة هناك كانت اذا و بالذاكرة الممثلة القيمة من
اإلشارة لذلك باإلضافة
X
اإلشارة Y
Strings ( المتسلسالت ) :
األحرف من مجموعة عن عبارة )هي أحرف( + يكون رموز و واحدة كقطعة تستخدمكالتالي " " : بين الرموز مجموعة بوضع تعريفها
String s = "Java 2";أوString s;s = "جافا";
ال حرف يكون حيث النوع هذا في كبير األول الحرف يكون أن مراعاة .Sيجب كبير
نوع مالحظة: من للمتغيرات جمل أو أحرف اضافة عملية استخدام .String يمكن
مثال:
String s = "Java ";int x=2;s+= "2"; أو s = s+"2"; أو s+= '2'; أو s+=x;
"s="java 2الخروج:
يستخدم برنامج كتابة :Stringمثالpublic class Triangle{
public static void main)String[] args({String s= "*";for )int i=0;i<=6;i++({
System.out.println)s(;s+="*";
}}
}
Note: s+ = "*" تعادل s = s + "*";: البرنامج خروج
****************************
ب الخاصة الميثود : String بعض
int length)( : ٍال طول :Stringيرجع مثال
String s = "Core Java 2";int l = s.length)(;
l=11الخروج :
char charAt)int i( :الموقع في حرف ال iيرجع :Stringمن مثال String s = "Core Java 2";char c = s.charAt)3(;
.'c='eالخروج المتسلسلة في الصفر من األحرف عد نبدأ ألننا
1098765432102avaJeroC
حرف 11الطول
: لكلمة قلب يعمل برنامج مثالpublic class Revers{
public static void main)String[] args({String s = "Java";int length = s.length)(;for )int i=length;i>=0;i--(
System.out.print)s.charAt)i((;}
}avajالخروج :
Flow Control:التكرار:
عملية لتكرار التكرار تستخدم البرامج لغات جميع وتكاد الجافا في األحيان من كثيرتكرار لعمل أوامر األخرى البرمجة لغات في كما الجافا في و مرة من أكثر واحدة
: األوامر هذه و للعمليات
1- for) التكرار في السؤال في مساعدة متغيرات ; السؤال ; تعريفعملية )تنفيذتكرارها المراد العملية
2- while)السؤال(تكرارها المراد العملية
3- do{تكرارها المراد العمليات
}while)السؤال(;
( خطأ: او صح اما يكون حيث للتكرار حد لعمل نكتبه يبقى( true or falseالسؤال حيث: مثال خطأ نتيجته السؤال يصبح حتى ساريا العملية تكرار
int x=0;for)int i = 0 ;i<9;i++(
x++;
هل: من iالسؤال تصبح 9أصغر حتى التكرار يكمل نعم الجواب كان تساوي iاذا أو أكبراألمر 9 في األخير الجزء قيمة for [i++]و لزيادة ليتوقف iينفذ خطأ السؤال يصبح حتى
العملية ينفذ هنا التكرار و قيمتها x++ 9التكرار تصبح حيث .9مرات
مثال:while)x!=0(i+=5;
عندما هنا السؤال تساوي xو i+=5نفذ 0ال
: واحد تكرار في واحدة عملية من أكثر تنفيذ كيفيةب التكرار بحصر ذلك داخل )block( {}نستطيع التي العمليات كل التكرار ينفذ حيث
. التكرار نفس في البلوك
مثال:int i=10,x=0;whil)i!=0({
x++;i--;
}
البلوك ) داخل التان العمليتين ينفذ التكرار ( --iو ++xحيث تصبح whileفي iحتى. T صفرا تساوي
التكرارين بين : do while و while الفرقالتكرار ينفذ حيث بسيط يسأل do whileالفرق أن قبل األقل على واحدة مرة العمليات
السؤال.مثال:
int x=0,i=1;do{
x+=5;}while(i==0);
العملية ينفذ .x+=5حيث السؤال قبل األقل على مرة
الشرط:: الشرط لعمل أمرين وهناك ما عملية لتنفيذ شرط استخدام الجافا في نستطيع
1-if(الشرط)العملية
خاطئ أو صحيح اما يكون و التكرار عمليات في مثل شرط أي وضع نستطيع (وBoolean(.
مثال:if ( i==5)
x++;ب حصرها نستطيع . {}كما عملية من أكثر لتنفيذ
ب اتباعها .elseنستطيع اخرى عملية ينفذ الشرط في األولى العملية ينفذ لم اذا حيث
مثال:if)i==5(
x++;else
x+=2;ينفذ لم حصر x+=2سينفذ ++xاذا كذلك نستطيع .{}ب elseو
ب اتباعها .)else if)booleanأو الثاني الشرط يجرب األول الشرط ينفذ لم ان حيث
مثال:if)i>=4(
x++;else if)i>6(
x*=6;
المفتاح أمر هو الثاني المفتاح ) switch ( األمر هذا استخدام نستطيع حيثكالتالي:
int x;switch)x({
case 1:العملية
break;case 2:
العمليةbreak;..default:
السابقة الخيارات تحقق عدم عند عملية تنفيذbreak;}
مكان وضع نستطيع النوعين xحيث سويتش األمر المثال char أو intفي في مثال فقطوضعنا حيث نوع xالسابق قيمة intمن كانت اذا كالتالي األمر يعمل ينفذ 1تساوي xو
تحت التي .case 1العملية هكذا وقيمة تكن لم في xاذا الموجودة العملية ينفذ للمفتاح الموضوعة القيم في موجودة
default. الخيار وضع عدم .defaultيمكن
كل ال breakباألمر caseينتهي داخل التي العمليات كافة ينهي .caseحيثاألمر مالحظة: استخدام . breakيمكن التكرار عملية إلنهاء ذالك و التكرار في
X
Case 1
Case 3
Case 2
default
مثال:while)x!=0({
x++;if)x>0(
break;}
شرط تنفذ اذا التكرار عملية من يخرج المثال هذا .ifفي
Arrays ( المصفوفات ) : : كالتالي بالذاكرة تمثل حيث مصفوفة تعريف الجافا في نستطيع
الخانات في الموجودة للقيم مختلفة عمليات لعمل تستخدم و الخانات أرقام
. متسلسلة عناوين لها الذاكرة في محجوزة أجزاء
حجم بمقدار جزء كل حجم يكون و الذاكرة في متسلسلة عناوين المصفوفات تحجز. المصفوفة به عرفت الذي النوع
مثال:int[] a = new int[10];int[] a = {1,3,5,2};
من جديدة مصفوفة بنينا بأن المصفوفة عرفنا األولى بطريقتين المصفوفة عرفنا هناحجم 10تحجز intنوع لها خانة كل و الذاكرة في متسلسلة لكن )int )4byteخانات و
, بأن المصفوفة فعرفنا الثانية في اما صفر هي و االفتراضية القيمة على تحتوي الخاناتنوع من حجمها يكون و الموضوعة القيم بعدد خانات النظام يحجز حيث لها قيم وضعنا
int. التسلسل حسب الموضوعة القيم من قيمة على تحتوي خانة كل وبناء newاألمر مالحظة : على مكان objectيعمل الذاكرة في يحجز حيث
. جديد ألوبجكت
: منها القيم اخذ و المصفوفة استخدام كيفيةعمل او خانة أي في جديدة قيمة تخزين أو خانة أي في المخزنة القيمة معرفة نستطيع
العنوان ) طريق عن الخانة هذه على .indexعمليات الخانة( رقم هو ومثال:
int[] a = {1,3,5,6,2};int x=a[0];a[1]+=4;
الخانة قيمة خزنا المثال هذا المتغير 0في قيمة xفي أصبحت . 1تساوي xحيثللخانة أضفنا .7تساوي a[1]فأصبحت 4القيمة 1و
6543210
الميثود باستخدام المصفوفة طول معرفة :int lengthنستطيع كالتالي int x;int[] e={2,5,3,7,1,9};x=a.length;
قيمة األخيرة xحيث العملية بعد .6تساوي للمصفوفة المحجوزة الخانات عدد هو و
: المصفوفة في موجود رقم أصغر يوجد برنامج مثالClass Minimum{
public static void main)String[] args({int[] a={3,8,4,9,1};int min = a[0];for)int i=0;i<a.length;i++({
if)a[i]<min(min=a[i];
}System.out.println)"the min number in the Array = "+min(;
}}
.min = 1الخروج:
ال : Method إستخدام جافا برمجة في
كل استدعاء يتم و واحد برنامج في الرئيسي الميثود غير ميثود من أكثر كتابة نستطيع. الرئيسي الميثود من الحاجة عند ميثود
: المصفوفة في موجودة قيمة أعلى حساب مثالclass Maximum{
public static int getMax(int[] a){ قيمة اعلى لحساب ميثودint max = a[0];for)int i=0;i<a.length;i++({
if)a[i]>min(max=a[i];
}System.out.println)"the min number in the Array = "+min(;
}
public static void main(String[] args){ الرئيسي الميثود هناint[] b={2,5,4,9,1,33};int max=getMax(b); الميثود نادينا هناSystem.out.println)"the max number in the Array = "+max(;
}}
public static int getMax)int[] a(
في مالحظة: الرئيسي الميثود يكون أن يمكن حيث الجافا في الميثود ترتيب اليهماآلخر.
نوع من األوبجكت خارج هي التي الميثود تكون ان المثال staticيجب في كما لنناديهاالسابق.
2D Arrays ( اإلتجاهين ذات : ( المصفوفاتتمثيل بنفس الذاكرة في تمثل و الجافا في اتجاهين ذات مصفوفة تعريف نستطيع
. الواحد اإلتجاه ذات المصفوفة: اإلتجاهين ذات المصفوفة تعريف مثال
int[][] a = new int[2][4];قيم لها أوبوضع
int[][] a = {{1,2,4,7},{-1,5,8,9}};. المراد العامود رقم و الصف رقم نضع المصفوفة في خانة لقيمة للوصول
مثال:int[][] a= {{1,2,4,7},{-1,5,8,9}};int x = a[0][3];
قيمة أصبحت .7تساوي xهنا
7421
9851-
Comments and Documentation ( التعليقات و : ( المالحظاتلكي المالحظات أو التعليقات هذه تكتب حيث الجافا في التعليقات من نوعين هناك
فهم المستخدم يستطيع لكي أو ميثود من كتبناه ما فهم اآلخرون المبرمجون يستطيع: هما النوعان هذان و البرنامج عمل في أبدا تؤثر وال البرنامج
Comments :اإلشارة بعد تكتب بين //و تحصر .....*/أو المبرمج التعليق/*...... ليستطيع تكتب و
. فهمه و كتبناه الذي البرنامج قراءةDocumentation:
بين تكتب ........**/و يعمل المساعدة/*....... ماذا يفهم المستخدم لجعل منها والفائدةالبرنامج.
التي القيمةو الميثود يرجعها
نوع من intهنا
او المتغير نوعobject إلرساله
هنا و الميثود الىمصفوفة نوع من
( حقيقية ( intأعدادهذا يسمى و
:الجزئ ( المعامل(
parameter.
و مالحظة: انترنت صفحة منها عمل و التعليقات قراءة تستطيع جافا في أدوات هناك .javadocتسمى
مثال:/**class to print star @auther : Ali azzeh @company : al quds university @version 1.0 */class star{
public static void main)String[] args({System.out.print)"*"(; //print star
}}
مراعاة يجب بالجافا البرمجة قوانين في حيث ألهميتها التعليقات كتابة يجب الجافا فياستخدام عدم و للبرنامج التنظيم و من side effectالترتيب أكثر كتابة عدم يعني و
. واحد سطر في عملية
مثال:i=23+22;b=13%67; side effect
لذلك البرنامج تنفيذ عند حصوله عند بالضبط الخطأ موقع معرفة ذلك من الحكمة و. وحدها سطر في عملية كل وضع يجب
. البرنامج فهم لتسهيل الكالس أو األوامر أو الميثود حصر في الترتيب مراعاة يجب كما
مثال:class star{| public static void main)String[] args(| {| | System.out.print)"*"(;| }}
ال: مالحظة ال Documentationتكتب و الميثود قبل ال fieldدائما .Constructorو
:% بتقنية ثالثا البرمجة : OOP كيفية
ال: .objectالفكرة المعلومات من مجموعة هو
Fields:
األوبجكت صفات من هي و البرنامج لعمل نحتاجها التي المعلومات عن عبارة هي ورقمه و اسمه مثل الطالب عن معلومات نحتاج للطالب أوبجكت بناء أردنا أننا لو مثال
. عالمته و الجامعي
مثال:class Student{
/**String نوع من هو و الطالب /*اسمpublic String name; /**double نوع من هو و الجامعي /*الرقمpublic double id; /**int نوع من هي و /*العالمةpublic int mark;
}
Constructor:يعمل حيث استخدامه علينا يجب أوبجكت بناء نحتاج عندما األوبجكت باني عن عبارة هو
. منه بني الذي األوبجكت صفات له جديد أوبجكت لناال اسم . Constructorيكون فيه المعمول الكالس نفساسم
مثال:class Student{
/**String نوع من هو و الطالب /*اسمpublic String name; /**double نوع من هو و الجامعي /*الرقمpublic double id; /*int نوع من هي و /*العالمةpublic int mark;/**Constructor of Student Object*/public Student(){}
}
class StudentTest{public static void main)String[] args({
Student ali = new Student)(;ali.name ="ali";ali.id = 20011164;ali.mark = 80;System.out.print)ali.name+ali.id+"["+ali.mark+"]"(;
}
}ال يكون أن من Constructorيمكن أكثر هناك يكون أن كذالك ويمكن باراميتر مع
Constructor الحالة هذه تسمى و الباراميتر بعدد األختالف يكون و واحد ألوبجكتOverloading.
ال )Constructorيسمى اإلفتراضي الباني باراميتر له ليس (Default Constructorالذيلل قيم اعطاء دون لألوبجكت بناء يعمل .Fieldsحيث مكتوب دائما يكون و
مثال:class Student{
/**String نوع من هو و الطالب /*اسمpublic String name; /**double نوع من هو و الجامعي /*الرقمpublic double id; /*int نوع من هي و /*العالمةpublic int mark;/**Default Constructor of Student Object*/public Student(){}/**Constructor of Student Object with parameter */public Student(String aName,double aId,int aMark){
name = aName;id = aId;mark = aMark;
}}class StudentTest{
public static void main)String[] args({Student ali = new Student)"ali",20011164,80(;System.out.print)ali.name+ali.id+"["+ali.mark+"]"(;
}}
الميثود و المعلومات على يحتوي الذي هو حيث األوبجكت على دائما التركيز الجافا في. المعلومات هذه نتائج لتعطينا المطلوبة
األوبجكت داخل التي الميثود لتنفيذ أوامر عن عبارة هو الجافا في الرئيسي الميثودتستخدم ال و لغة مفاهيمفقط في مثل الجافا في .cالفنكشن
Public / Private:
Public:كلمة وضع في publicعند استخدامهم نستطيع األوبجكت باني أو الفيلد أو الميثود قبل
ال كتابة يجب الحالة هذه في و آخر كالس يجعل documentationأي ذلك و األشياء لهذه
التعليق يصبح بذلك و مفهومها يغير أن لها تحديث أي ممكن ألن صعبا امرا تحديثها امر. بالضبط األشياء هذه تعمل ماذا المستخدم يعرف فال خاطئ عنها كتب الذي
Private: )...., , ( فيلد ميثود السابقة األشياء كانت الكالس privateاذا من اال استخدامها نستطيع ال
لذالك و سهل تحديثها أمر يكون بذلك و التعليق لكتابة نحتاج ال و فيه عرفت التيمعرفة فيلد األوبجكت في دائما معرفة privateنستخدم ميثود .publicو
Accessor and Mutator:هما : و ميثودين معرف فيلد لكل هناك دائما األوبجكت في
Accessor:بكلمة اسمه دائما يبدأ و الفيلد هذا داخل المخزنة للقيمة للوصول يستخدم ويرجع getو
. باراميتر بدون هو و الفيلد قيمةMutator:
بكلمة اسمه دائما يبدأ و معين فيلد قيمة لتغيير يستخدم ال setو لكن و باراميتر ولهقيمة . يرجع
مثال:
class Student{private String name; private double id; private int mark;/**Default Constructor of Student Object*/public Student)({}/**Constructor of Student Object with parameter */public Student(String aName,double aId,int aMark){
name = aName;id = aId;mark = aMark;
}/**accessor to name*/public String getName(){
return name;}/**mutator to name*/public void setName(String aName){
name = aName;}
/**accessor to Id*/public double getId)({
return id}/**mutator to Id*/public void setId)double aId({
id = aId;}
/**accessor to Mark*/public int getMark)({
return mark;}/**mutator to Mark */public void setMark)int aMark({
mark = aMark;}
}
class StudentTest{public static void main)String[] args({
Student ali = new Student)(;ali.setName)"ali"(;ali.setId)20011164(;ali.setMark)80(;System.out.print)ali.getName)(+ali.getId)(+ali.getMark)((;
}}
.ali 20011164 80الخروج : كلمة مالحظة: وضع .voidعند قيمة يرجع ال أنه يعني هذا الميثود قبل
toString Method:نوع من يرجعها التي القيمة و األوبجكت عن معلومات لنا يرجع ميثود عن عبارة هو
String.عنوان لنا يرجع مناداته عند لكن و افتراضيا الميثود هذا موجود يكون األوبجكت بناء عند
. كتابته إلعادة عادة نحتاج لذلك و الذاكرة في
class Student{private String name; private double id; private int mark;/**Default Constructor of Student Object*/public Student)({
}/**Constructor of Student Object with parameter */public Student(String aName,double aId,int aMark){
name = aName;id = aId;mark = aMark;
}/**accessor*/public String getName)({
return name;}/**mutator*/public void setName)String aName({
name = aName;}
/**accessor*/public double getId)({
return id}/**mutator*/public void setId)double aId({
id = aId;}
/**accessor*/public int getMark)({
return mark;}/**mutator*/public void setMark)int aMark({
mark = aMark;}
/**toString Method*/public String toString(){
return "Name"+name+","+"ID:"+id+","+"MARK:"+mark;}
}class StudentTest{
public static void main)String[] args({Student ali = new Student)"ali",20011164,80(;System.out.print)ali.toString)((;
}}
Name: ali , ID: 20011164 , MARK: 80الخروج: بدل الطباعة أمر في كتبنا الميثود aliفقط ali.toStringاذا يستخدم األوبجكت اسم أي
toString T . تلقائيامثال:
System.out.print)ali(;نفسها :هي
System.out.print)ali.toString)((;Name: ali , ID: 20011164 , MARK: 80الخروج: نوع مالحظة: من الفيلد كان من staticاذا المعرفة األوبجكت لكل ثابتة قيمته فتكون
. الحاجة عند قيمته تغيير يمكن لكن الكالسو نفسمثال:
class Student{private String name; private double id; private int mark;private static int nextId=5;...
}class StudentTest{
public static void main)String[] args({Student ali = new Student)"ali",20011164,80(;Student hamzeh = new Student)"hamzeh",20111159,80(;System.out.print)ali.getNextId)(+" , "hamzeh.getNextId)((;
}}
.5 , 5الخروج: Constant ( الثابت ) :
يستخدم انما و البرنامج في قيمته تغيير يمكن ال القيمة ثابت فيلد تعريف نستطيعالمعرفة الكلمة باستخدام ذلك و .finalكثابت
مثال:class StudentTest{
public static final String a="NAME : ";public static void main)String[] args({
Student ali = new Student)"ali",20011164,80(;Student hamzeh = new Student)"hamzeh",20111159,80(;System.out.print)a+ali.getName)((;
}}
.NAME : aliالخروج:
: الذاكرة في األوبجكت تمثيلاألوبجكت لرسم مثال الذاكرة في لألوبجكت تمثيلي رسم رسم المثال aliيمكن في
السابق:
الإلسم Stringال مالحظة : من سهم رسمنا لذلك أوبجكت عن عبارة هواألوبجكت .Stringالى
Input and Output:مجرى تسمى اإلخراج و اإلدخال أدوات الجافا استقبال (Stream)في يتم حيث
: كالتالي مجرى طريق عن المدخلة المعلومات
: المفاتيح لوحة من القرائة
نحتاج المفاتيح لوحة )3للقرائةمن و( Stream 3أنابيب األعلى في التي الصورة في كماهم:
System in: . مرة كل في واحد بايت قرائة على يعمل و األول األنبوب هو و
Input Strem Reader:كل تحويل على يعمل .2و رمز أو حرف الى بايت
Buffered Reader:( سلسلة منها لعمل مؤقتة ذاكرة في الرموز أو الحروف هذه تجميع على يعمل و
String.)
مثال:
Student
String name
double id=20011164
int mark=80
Student ali
String
"ali"
Buffered Reader Input Stream
Reader System in inpu
t
BufferedReader in = new BufferedReader)new InputStreamReader)System.in((;
القارئ الكالس inهنا نوع من الكالس BufferedReaderهو له BufferedReaderوالكالس InputStremReader( parametrالمعامل) المعامل InputStreamReaderو له
System.in. المفاتيح لوحة من بايت للقرائة كالس هو واألحرفمن من سلسلة أو حرف لقرائة مجرى تمثل المثال في كما بعضها مع هي و
. المفاتيح لوحة
.in مالحظة : تغييره يمكن اسم مجرد هوTry And Catch:
الكلمتين بين الكتابة و القرائة أوامر تحصر الجافا في الكتابة و القرائة عمليات tryعندفي catchو تسبب الذي الخطأ فأمسك تنجح لم اذا و الكتابة أو القراءة جرب تعني و
تسمى , األخطاء و العملية في النجاح مثل :"Exception"عدم عديدة أنواع هناك وIOException مثال أو الخروج و الدخول اجهزة في خطأ تعني و
NumberFormatException من التحويل أخطاء هي ) Stringو رقم (.,…..int,longالىمثال:
try{ BufferedReader in = new BufferedReader)new InputStreamReader)System.in((; String s = in.readLine)(; // المفاتيح لوحة من سطر يقرأ }catch(Exception e){
في ...... خطأ هناك كان إذا يفعل أن نريد ماذا.......العملية
}e. البرنامج يمسك أن يجب األخطاء من نوع أي نحدد لم أي عام خطأ هي e. تغييره يمكن اسم هو
: هكذا الشاشة على الخطأ طباعة نستطيعtry{ BufferedReader in = new BufferedReader)new InputStreamReader)System.in((; String s = in.readLine)(; }catch)Exception e({
System.out.print(e); بالضبط الخطأ لنا //يطبع }
القارئ , : 1 مالحظة السابق المثال في مثال الكالس في واحدة مرة القارئ تعريف inيتم. الكالس في واحدة مرة تعريفه يتم
بعمليات catchو Tryاستخدام : 2 مالحظة T إنماو اإلخراجو اإلدخالليسمحصورا. خطأ تحدث أن يمكن عملية أي لحصر يستخدم
: القراءة ملف من
نصي ملف من الجافا في القرائة الكالس (text file)نستطيع طريق عنFileReader: كالتالي القارئ تعريف يكون حيث
BufferedReader r = new BufferedReader(new FileReader("c:\myFile.txt"));الذي FileReaderللكالس( parameterالمعامل ) المسار عن تعبر و سلسلة عن عبارة هو
: مثال الملف فيه موجود"c:\myDocument\doc\ملفي.txt"
: ملف في األسطر يعد برنامج مثالclass CountFileLine{
public static void main)String[] args({ try{ BufferedReader r = new BufferedReader)new FileReader)"c:\myFile.txt"((;
String s; int count=0; //int نوع من هو و األسطر متغيرلحساب while))s = r.readLine)((!=null( // الملف نهاية حتى سطر سطر يقرأ count++; r.close)(; // الملف إلغالق
System.out.print)"The Number Of line in this file is : "+count(; }catch)Exception ee({
System.out.print)"error when reading file : \n"+ee(; }
}}
تعني nullمالحظة: و الجافا في معرفة كلمة شيء هي .ًال
: ملف في منها الكتابة و للكتابة تستخدم التي الكالس من األنواع من العديد هناككذلك PrintWriterالكالس يستخدم هو و كذلك الملف على بالتعديل يسمح هو ونوع FileWriterالكالس من هو اآلخر المعامل و وضعنا Booleanكمعامل اذا حيثكانت trueالقيمة اذا اما المطلوب الملف على اضافة و falseيعمل باإلضافة يقوم فال
. غيره يكتب و السابق الملف في ما يمسح انما
المفاتيح لوحة من يقرأ برنامج :10مثال ملف في يخزنها و أرقام
public class PrintWriterTest { public static void print)int[] a({ try{ PrintWriter out=new PrintWriter(new FileWriter("c:\ out.txt",false)); for )int i=0;i<a.length;i++( out.println(a[i]); out.close(); }catch)IOException e({System.out.println)e(;} }
public static void main)String[] args({ int[] a=new int[10]; String l; BufferedReader b=new BufferedReader)new InputStreamReader)System.in((; System.out.println)"ENTER TEN NUMBER: "(; try{ for )int i=0;i<a.length;i++({ l=b.readLine)(; a[i]=Integer.parseInt(l); حقيقي عدد الى سلسلة //يحول
} }catch)Exception d({System.out.println)d(;} print)a(; }}int Integer.parseInt)String s( :
ال تحويل على يكون String sيعمل اال و رقم عن عبارة السلسلة كانت اذا رقم الى:Exceptionهناك مثال خطأ أي
String s = "abc";String d="123";int l = Integer.parseInt)s(; //error NumberFormatExceptionint a = Integer.parseInt)d(; // true and a = 123
: مثل اخرى قيم الى السلسلة من لتحويل ميثود هناك يوجد كماfloat Float.parseFloat)String s( عشري رقم الى //يحولlong Long.parseLong)String s( لونج نوع من رقم الى //يحول
Inheritance ( التوارث ) :
الطالبطالب من نوعين هناك مثال آخر كالس من فرعي اوبجكت او كالس عمل هو ومثال الماجستير طالب و طالب هم النهاية في اإلثنان و بكالوريوس طالب و ماجستير
أوبجكت عمل نستطيع لذلك المواصفات بعض بإضافة البكالوريوس طالب يختلفعنالكالس يسمى الباكالوريوسحيث أوبجكتطالب من الماجسنير لطالب فرعي
الكالساألصليب sub classالفرعيب .super classو
Bacalorious Student
Name
Id
Avrage
Master Student
BaAvrage
Mark
SuperClass SubClass
معدل و عالمة و جامعي رقم و اسم لهم الطالب كل الصورة هذه فيلهم ضعنا و لذالك اضافي معدل لهم الماجستير لطالب لكن و تراكمي
. الطالب هو و الرئيسي األوبجكت من فرعي اوبجكت
كلمة :extendsتستخدم كالتالي كالسفرعي لعملclass MasterStudent extends Student{
}
مثال:
( الرئيسي (:super classالكالسclass Student{
private String name; private double id; private int mark;/**Default Constructor of Student Object*/public Student)({}/**Constructor of Student Object with parameter */public Student(String aName,double aId,int aMark){
name = aName;id = aId;mark = aMark;
}/**accessor to name*/public String getName(){
return name;}/**mutator to name*/public void setName(String aName){
name = aName;}
/**accessor to Id*/public double getId)({
return id}/**mutator to Id*/public void setId)double aId({
id = aId;}
الكالس اسمالرئيسي
/**accessor to Mark*/public int getMark)({
return mark;}/**mutator to Mark */public void setMark)int aMark({
mark = aMark;}
}
( الفرعي (:sub classالكالس
class MasterStudent extends Student{double BaAvrage;
public MasterStudent)({}public MasterStudent)String aName,double aId,int aMark,double aBaAvr({
super)aName,aId,aMark(; الرئيسي الكالس في الباني نستخدم هناالمعامالت نفس له //الذي
BaAvrage = aBAvr;}
public void setBaAvrage)double average({BaAvrage = average;
}public double getBaAvrage)({
return BaAvrage;}public String toString)({ return "Master Student :\n"+super.toString+"BaAvrage= : "+getBaAvrage;}
}
class StudentTest{public static void main)String[] args({
Student ali = new Student)"ali",20011164,80(;MasterStudent amjad = new MasterStudent)"amjad",9711123,84,78(;System.out.print)ali.toString)(+"\n"+amjad.toString)((;
}}
this and super:الدالة superالدالة أما الرئيسي الكالس على هي thisتدل التي الكالس على فتدل
. فيه موجودةالدالة مثال استخدام نستطيع بطريقتين :superو
1( الباني- يسمح( constructorفي تكتب استخدامهاحيث و فقط األول السطر فيكالتالي:
super)المعامالت(المعامالت نفس له الذي الباني يستخدم و الرئيسي الكالس في الباني الى يذهب حيث
. السابق المثال في كماالكالس- 2 في الرئيسي الكالس من الميثود استخدام نستطيع حيث الميثود في
: كالتالي الدالة هذه باستخدام الفرعيsuper. الميثود اسم
الميثود في السابق المثال في الكالس toStringكما .MasterStudentفيالدالة استخدام نستطيع الدالة thisو لكن الطريقة بنفس داخل thisكذلك تستخدم
حيث :إذاالكالسفقط كالتالي الباني في وضعناهاthis)المعامالت(;
. نفسه الكالس في المعامالت نفس له الذي الباني الى يذهبالذي األوبجكت على تدل و الكونستراكتور في كتابتها نستطيع :أرسلكما مثال
public Student)String name({this.name = name;
}كالتالي : ميثود المين في اوبجكت بنينا اننا لو حيث
Student ali = new Student)"ali"(;الفيلد thisتدل على الباني و aliلألوبجكت nameفي الفيلد بين التفريق يستطيع بذلك و
الباراميتر.
: الجافا مميزات بعضOverriding( الهيمنة ):
الفرعي الكالس في المعامالت نفس له و الميثود نفس كتابة الجافا في نستطيع. الرئيسي الكالس في الموجود
Polymorphism( التعددية ):
عمل نستطيع السابق المثال في مثال لألوبجكت مرجعية عمل الجافا في نستطيعالفرعي الكالس نوع من بأوبجكت الرئيسي الكالس نوع من أوبجكت بين مساواة
كالتالي:
MasterStudent y = new MasterStudent)(;Student x = y;
لألوبجكت الفرعي الكالس داخل الموجودة الميثود استخدام نستطيع ال من xهنا ألنه. الرئيسي الكالس نوع
. الطالب من مصفوفة بعمل الخاصية هذه من نستفيدمثال:
Student[] std = new Student[2];std[0] = new Student)(;std[1] = new MasterStudent)(;
Dynamic Binding( ( الديناميكي : الربطحيث الخاصية هذه الجافا يكون إذايستخدم السابق المثال في مثل مساواة عملنا
. للمتغير ليس و لألوبجكت الميثود استخدام في المرجعية: كالتالي طباعة أمر وضعنا لو السابق المثال في حيث
System.out.print)x(;الميثود للمتغير yلألوبجكت toStringيستخدم ليس .xو
Constant Class( الثابت :( الكالسله عمل نستطيع ال يعني الكالس لهذا كالسفرعي عمل نستطيع ال أننا يعني هذا و
overriding. كلمة قبله نكتب ثابت الكالس لجعل .finalو
مثال:final class Student{…}
الكالس مثل كالسفرعي عمل نستطيع ال الكالس MasterStudentحيث Studentمنثابت . ألنه
Hirachies ( الهرم ) : . أوبجكت للكالس فرعية كالسات عن عبارة هي الكالسات كل الجافا في
Abstract Classes ( المجردة :( الكالساتنعرفكالس نستطيع abstractعندما وال كأوبجكت استخدامه نستطيع ال أننا يعني هذا
يداخله التي الميثود برنامج إالاستخدام عمل نريد لو مثال الفرعية الكالسات خالل منالطالب الستئجار و األساتذة المستخدمين من نوعين هناك و الجامعة مكتبة من الكتب
اوبجكت نعمل و abstract لذلك األساتذة من لكل فرعية اوبجكت و عامة للمستخدمينالطالب.
مثال:abstract class User{
private String name;private String bookName;private Date borrowDate;public User)String name({
this.name = name;
Object
Student
PacStudent MasterStudent
}public String getName)({
return name;}public void borrowBook)String bName({
bookName = bName;borrowDate = new Date)(;
}public void returnBook)({
bookName = null;}public String getBook)({
return bookName;}public Date getBorrowDate)({
return borrowDate;}public abstract boolean isLate)(; كتابته يجب انه يعني هذا و ابستراكت الميثود هذا كتبالفرعية الكالسات //في
}: الفرعي الكالس بكتابة نبدأ
class Student extends User{private int Id;public Student)String aName,int Id({
super)aName(;this.Id = Id;
}public boolean isLate)({
if )new Date)(.compareTo)borrowBook(>1( return true;
return false;}public String getName)({
return super.getName)(;}public int getId)({
return Id;}
}class Professor extends User{
public Professor)String name({super)name(;
}public boolean isLate)({
if )new Date)(.compareTo)borrowBook(>1(return true;
return false;}public String getName)({
return "Dr."+super.getName)(;}
}class LibraryTest{
public static void main)String[] args({User[] users = new User[3];users[0] = new Student)"ali",20011164(;users[0].borrowBook)"Java 2 V2"(;users[1] = new Professor)"وائل"(;users[1].borrowBook)"JSP and Servlet"(;users[2] = new Student)" 9912312",سميح (;for)int i = 0;i<users.length;i++({
System.out.print)"\n "+users[i].getName)((;If ) !)users[i].getBorrowBook)(.equals)null((({ System.out.print)"\n"+users[i].getBorrowBook)(+"has borrowd If)users[i].isLate)((
System.out.print)"\n Hi Is Late!!!"(;}
}}
}: السابق المثال في البرنامج في واضحة الغير األمور بعض
Date: الجهاز ساعة و تاريخ يقرأ كالس عن عبارة هومثال:
Date a = new Date)(; الجهاز ساعة و تاريخ يقرأ النوع هذا من جديد اوبجكت بناء //عندcompareTo :
نوع من قيمة يرجع و النوع نفس من اوبجكتين بين مقارنة يعمل ميثود عن عبارة intهويرجعها التي القيمة تكون و اآلخر عن األوبجكت صغر او كبر عن تعبر كان 0حيث اذا
. متساويين األوبجكتينمثال:
int i = ali.compareTo)mhamad(;
equals:نوع من قيمة يرجع و النوع نفس من اوبجكتين بين مقارنة يعمل ميثود عن عبارة هو
boolean يرجع متساويين كانا اذا يرجع trueحيث اال .falseومثال:
boolean b = ali.equals)mhamad(;
: المفيدة األوامر بعضSystem.exit(1): البرنامج من خروج يعمل
ال أوامر : String من
String toLowerCase() : احرفصغيرة الى الكلمة احرف تحويل على يعملمثال:
String s = "GhOsT";String h = s.toLowerCase)(;
"h = "ghostالخروج : String toUpperCase() : كبيرة أحرف الى األحرف تحويل على يعمل
int compareToIgnoreCase(String s) : ( أو كبير الحرف نوع عن النظر بغض أخرى الكلمة مع الكلمة يقارنيرجع( متساويتين 0صغير الكلمتين كانتا اذا
مثال:String s = "GHOST";String h = "ghost"Int l = s. compareToIgnoreCase)h(;
l = 0الخروج : String substring(int beginIndex,int endIbdex):
قيم بتحديد نقو و السلسلة من جزئ أخذ على و beginIndexيعمل الكلمة قطع بداية تحدد endIbdexموقع و. الكلمة من القطع نهاية
مثال:String s = "muhamad";String sub = s. substring)2,6(;
"sub = "hamadالخروج :
األوبجكت المراد األول
له المقارنة
نفس من المعاملاألول األوبجكت نوع
به المقارنة لعمل
Top Related