Professional Documents
Culture Documents
;))System.out.println)"x+y="+)x+y
}
}
}
المثال السابق سوف يقوم بطباعة:
=x+y 20
طبعاً المثال السابق ليحتاج الى شرح وذالك لسهولته
:امثله
:المثال الول
class mohammed{
int x;
int y;
String h;
public mohammed()
{
System.out.println("class
name:mohammed");
}
void mo(int i)
{
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("s="+h);
System.out.println("i="+i);
}
public static void main(String[] args) { Output
mohammed m=new mohammed();
m.x=20; class name:mohammed
m.y=30; x=20
m.h="mohammed dawod"; y=30
m.mo(10); s=mohammed dawod
} i=10
}
المثال الثاني :تابع المثله
class mohammed{
public mohammed()
{
System.out.println("class
name:mohammed");
}
void mo(int i,int m)
{
System.out.println("i+m="+(i+m));
}}
class dawod{
public dawod(){
System.out.println("class name:dawod");
}
public void sum(int i,int j){
System.out.println("i+j="+(i+j));
}
public static void main(String[] args) {
mohammed m=new mohammed();
m.mo(10,20);
dawod d=new dawod(); Output
d.sum(50,100);
class name:mohammed
} i+m=30
} class name:dawod
i+j=150
:تابع المثله
المثال الثالث
class dawod{
الى هنا ننتهي من امثلة الموضوع السابق وننتقل الى موضوع جديد
Inheritance
التوريث موضوع من اهم المواضيع الموجودة في الـ . OOP
{class run
)public static void main(String[] args
{
;)(A aa=new A
;)(B bb=new B
;bb.x=10
;bb.y=20
;)(bb.num
}}
كما نلحظ من المثال السابق فان الكلس Bورث من الكلسِ Aكل خصائصه اي ان كل المتغيرات والدوال التي بداخل الكلس الب امتلكها •
البن والدليل على ذالك اننا اعطينا المتغيرات قيم باستخدام الوبجكت الخاص بالكلس بي وهذا يعني بان المتغيرات هي بداخل الكلس بي كذالك قمنا
باستدعاء داله .....الخ سوف اقوم بشرع عمل البرنامج خطوه خطوه في الصفحة التاليه:
عند تنفيذ البرنامج(عمل كومبيلر للبرنامج)سوف يتم تنفيذ البرنامج كما يلي:
سوف يتم تنفيذ الداله الرئيسيه اولً التي تحتوي ( staticتنفيذ الـ bodyتبع
{class A
;int x,y الداله على سطر سطر على التوالي) كما يلي
)(public void num
{
;))System.out.println("x+y="+(x+y
}
{} class B extends A انشاء objectممثل للكلس A
} قمنا هنا باعطاء قيم للمتغيرين xو yالتي توجد داخل الكلس . B
انشاء objectممثل للكلس B
{class run هنا قد يقول بعضكم كيف نقوم باعطاء قيم لهذة المتغيرات داخل الكلس Bاذا
)public static void main(String[] args ل غير مكتوبه فيه؟ في هذة الحاله انت لم تفهم التوريث كما يجب لذالك
كانت اص ً
{ سوف اقوم بالتوضيح اكثر في هذا المثال.
;)(A aa=new A
;)(B bb=new B اخي لقد قمنا با عطاء جميع محتويات الكلس Aالى الكلس Bعن طريق
;bb.x=10 الوراثه
;bb.y=20
;)(bb.num
}}
تخيل بان محتوى الكلس Bاصبح كما يلي:
class } B
int; x,y
()public void num
}
تنفيذ محتوى الداله )(num System.out.println("x+y=";(+x+y
{
المثال الول
class mohammed{
int x=10;
int y=20;
void show()
{
System.out.println("x="+x+"\n"+"y="+y);
}
}
class{ overload
{)void sum)int x
;)System.out.println)"x:"+x
}
)void sum)char x
{
;)System.out.println)"x:"+x
}
)void sum)int i,double x
{
;)System.out.println)"i:"+i+"&"+"x:"+x طبع
} حي نوع
مننوع
قيمهمن
بارسالقيمه
قمنابارسال
هناقمنا
هنا
را
{ )public static void main)String ][args كاركتر
انتجر
;)(overload oo=new overload طبع هنا قمنا بارسال قيمة انتجر وقيمة دبل
حي
;)oo.sum)10 را
;)oo.sum)''m طبع
;)oo.sum)10,10.5 حي
را
}}
x:10
x:m
i:10&x:10.5
ثانياً:Overriding .
-هي عبارة عن دالتين او اكثر تحمل نفس السم ونفس البارمتريات (المتغيرات)
-عملية تخطي دالة لدالة اخرى.
ان لم تفهمو معنى الـ Overridingمن خلل التعريف سوف تفهمونها من خلل الشرح التالي:
مثال نظري:
افرض مثلً ان لديك كلسين الكلس الول اسمه Aوالكلس الثاني اسمه Bفاذا كان في الكلس الول داله اسمها )sum)int x,int yوالكلس
الثاني الذي اسمه Bفيه داله بنفس السم وتحمل نفس المتغيرات اي . )sum)int x,int yوكان الكلس Bيرث من الكلس Aاي ان
الكلس Bحتوي على محتويات الكلس Aاي . class B extends Aهذا كان هيكل البرنامج .
نعرف من السابق بان الكلس Bيحتوي على دالتين بنفس السم الداله الولى التي ورثها من الكلس Aوالداله الثانيه هي التي تمت كتابتها فيه اي
الصليه تبعه.
فماذا يحدث اذا تم استدعا وارسال قيم الى الداله )sum)int x,int yالتي توجد داخل الكلس Bفكيف سوق يقوم البرنامج بتنفيذ الداله اذا كان اصلً
يوجد في الكلس دالتين بنفس السم ونفس عدد البارميتر (المتغيرات) هنا سوف يتم تخطي للداله التي ورثها الكلس Bمن الكلس Aويتم
تنفيذ الداله المكتوبه في الكلس , Bهذة العمليه تسمى بالـ . overriding
بعد عملية الـ overridingجرب احذف الداله التي توجد في الكلس Bونفذ البرنامج مالذي سوف تلحظه؟ راح اقول الك شو الي راح يحصل الي
راح يحصل هو ان التنفيذ سوف يحصل للداله التي تمت وراثتها من الكلس Aوهذة العمليه لتسمى overridingوانما عمليه عاديه .الن
انا متاكد بانك فهمت ايش اقصد بـالـ . overriding
الن سوف اقوم باعطاكم مثال عملي لكي تقومو بتطبيقه وفهم عملية الـ overridingاكثر:
class{ A
{)void sum)int x,int y
;))System.out.println)"in class A :x+y="+)x+y : المخرجات للبرنامج سوف تكون
}
} in class B :x+y=30
class Bextends{ A
{)void sum)int x,int y
;))System.out.println)"in class B :x+y="+)x+y
}
{ )public static void main)String ][args
;)(B oo=new B
;)oo.sum)10,20
}
}
:قم بالتجربه التاليه
ونفذ البرنامج مالذي سوف تلحظه منB احذف الداله التي توجد داخل الكلس
)overriding مخرجات(طبع ًا العمليه هذة ليست
: السؤال هوoverriding الن سوف اعطيكم سؤال لكي تحلونه سؤال عن الـ
Write java program that use overriding method in two classes one of them is A and the other is B
inhrites A ? )use two methods(
ــ الفصل الثاني ــ
Design interface
))GUI
title bar
menu bar
menu
menuItem
button
TextField
Label
في هذا الفصل سوف نقوم بتصميم بعض الواجهات في الجافا
ل لو اردنا buttonفسوف نقوم بكتابة السطر التالي: طبعاً كل ماسوف نحتاجه موجود داخل swingو awtفمث ً
;Imoprt javax.swing.JButton
ولو اردنا labelاو textfiledاز .... menubarالخ ما علينا ال ان نقوم بنفس الخطوة.
قد يقول البعض منكم لو اردنا ان نقوم بتصميم واجهه تحتوي على كثير من العناصر هل من المعقول ان اقوم بكتابة السطر السابق لكل
كائن اريدة هذة لتعتبر برمجه محترفين انما برمجه مبتدئن ،انا اقول الك ل طبعًا لن تقوم بكتابة السطر السابق اكثر من مرة ما
عليك ال ان تكتب التالي:
;*Import javax.swing.
سوف نقوم باعطاء مثال بسيط جدًا وهو نافذة تحتوي على Buttonو labelو textfiledسوف نقوم بتصميم الشكل التالي:
الخطوة الولى تحديد مالذي سوف نحتاجه لتصميم الشكل هذا:
نحتاج الى:
•Jpanal
•JLabel
•JTextFiled
•JButton
:الخطوة الثانيه كتابة البرنامج
import ;*. javax.swing
class mohammedextends{ JPanel
;JLabel j1,j2
;JTextField t1,t2
;JButton b1
public{)( mohammed
setLayout)nul;)l
;)j1=new JLabel)""Name
;)j1.setBounds)10,20,40,25
;)add)j1
t1=new;)( JTextField
;)t1.setBounds)60,20,200,25
;)add)t1
;)j2=new JLabel)""ID
;)j2.setBounds)20,50,40,25
;)add)j2
t2=new;)( JTextField
;)t2.setBounds)60,50,25,25
;)add)t2
;)b1=new JButton)""ok
;)b1.setBounds)110,100,80,30
;)add)b1
}
public static void) main)String][ avgs
{
mohammed m=new;)( mohammed
;)JFrame f=new JFrame)""fffffff
;)f.setVisible)true
;)f.setSize)300,250
;)f.setContentPane)m
;)f.setDefaultCloseOperation)f.EXIT_ON_CLOSE
}
} الن سوف اقوم بشرح الكود السابق على خطوة خطوة
import ;*. javax.swing المكتبه التي توجد بداخلها كلً من
class mohammedextends{ JPanel
;JLabel j1,j2
JPanel وراثه الكلس للـ
;JTextField t1,t2
الذي سوف يتم وضع جميع
;JButton b1
العناصر فيه
public mohammed)(} دالة البناء
)0,0(
setLayout)null(; ايقاف الترتيب التلقائي للعناصر
j1=new JLabel)"Name"(;
j1.setBounds)10,20,40,25(; name وكتابه فيهlabel خلق )10,20(
add)j1(;
t1=new JTextField)(; panel وموقعه على الـlabelتحديد حجم الـ ID
t1.setBounds)60,20,200,25(;
add)t1(;
j2=new JLabel)"ID"(; ok
panel الذي انشئناة الى الـlabelيقوم باضافة الـ
j2.setBounds)20,50,40,25(;
add)j2(;
t2=new JTextField)(;
t2.setBounds)60,50,25,25(;
add)t2(; Name 25
b1=new JButton)"ok"(; 40
b1.setBounds)110,100,80,30(;
add)b1(;
{
j1.setBounds)10,20,40,25(;
لحد الن من الكود السابق حصلنا على الشكل التالي:
الن سوف اقوم بتكلمة شرح باقي الكود:
هنا لم يتبقاء لنا ال الداله الرئيسيه التاليه: name
ID
انشاء اوبجكت ممثل للكلس mohammedالكلس الذي قمنا بانشاء
جميع العناصر فيه
ok
}
}
قد يتسائل البعض منكم لماذا القائمه copy toالتي توجد داخل editمن نوع jmenuبينما القوائم التي
توجد داخل fileمن نوع JMenuItem
الجابه على تسائلكم هو انه اي قائمة تحتوي على قوائم فرعيه تعتبر JMenuوليست JMenuItem
;*.import javax.swing
class TestMenuextends{ JPanel
:ثانياً نقوم بكتابة البرنامج
;JMenuBar mbr
;JMenu file,edit,Copy
;JMenuItem New,Open,Exit,c,d,e
{)(public TestMenu
;)setLayout)null
;)(mbr=new JMenuBar
;)"file=new JMenu)"file
;)"edit=new JMenu)"Edit
;)"Copy=new JMenu)"Copy TO
;)"New=new JMenuItem)"new
;)"Open=new JMenuItem)"Open
;)"Exit=new JMenuItem)"Exit
;)"/:c=new JMenuItem)"C
;)"/:d=new JMenuItem)"D
;)"/:e=new JMenuItem)"E
;)file.add)New
;)file.add)Open
;)file.add)Exit
;)Copy.add)c
;)Copy.add)d
;)Copy.add)e
;)edit.add)Copy
;)mbr.add)file
;)mbr.add)edit
;)add)mbr
;)mbr.setBounds)0,0,200,30
}
)][public static void main)String args
{
;)"JFrame fr=new JFrame)"mohammed
;)(TestMenu td=new TestMenu
;)fr.setContentPane)td
;)fr.setVisible)true طبعاً البرنامج سهل الى ابعد الحدود ولذالك لن يحتاج الى شرح
;)fr.setSize)200,200
;)fr.setDefaultCloseOperation)3
}
}
الن ندخل على التبويب:
ونريد تصميم فريم يحتوي على تبويبان كل تبويب يحتوي على اي شي كما في الشكل التالي:
ملحظه هامه:كل تبويب يحتاج الى Panelخاص به ،سوف تفهم هذة الملحظه اكثر من خلل الشرح
القادم
اولً نقوم بتحديد الحتياجات التي سوف نحتاجها لبنا التصميم السابق:
نحتاج الى:
JTabbedPane
2JPanel
2JLabel
:ثانياً نقوم بكتابة البرنامج
import java.awt.;Container
;*.import javax.swing
class Tabextends{ JFrame
;JLabel Lname,Lme
;JPanel jp1,jp2
;JTabbedPane tab
{)(Tab
;)"super)"Tap
;)(Container co=getContentPane
;)"Lname=new JLabel)"mohammed
;)"Lme=new JLabel)"yemen
;)(jp1=new JPanel
;)(jp2=new JPanel
;)(tab=new JTabbedPane
;)jp1.add)Lname
;)jp2.add)Lme
;)tab.add)"Tab1",jp1
;)tab.add)"Tab2",jp2
;)co.add)tab
;)setSize)300,150
;)setVisible)true
}
{ )public static void main)String ][args
;)(Tab t=new Tab
;)t.setDefaultCloseOperation)JFrame.EXIT_ON_CLOSE
}
}
:شرح الكود السابق خطوة خطوة
;*.import javax.swing
class Tabextends{ JFrame
;JLabel Lname,Lme
;JPanel jp1,jp2 )تعريف المكونات(الحتياجات السابق ذكرها
;JTabbedPane tab
{)(Tab
;)"super)"Tap
;)(Container co=getContentPane اعتبرها مثل الحاويه تقوم باحظار جميع المكونات التي سوف
JFrame نكونها الى داخل الـ
;)"Lname=new JLabel)"mohammed
;)"Lme=new JLabel)"yemen
;)(jp1=new JPanel
;)(jp2=new JPanel
;)(tab=new JTabbedPane
;)jp1.add)Lname
;)jp2.add)Lme
;)tab.add)"Tab1",jp1
;)tab.add)"Tab2",jp2
;)co.add)tab
;)setSize)300,150
;)setVisible)true
}
}( public static void main)String ][args
;()Tab t=new Tab
); t.setDefaultCloseOperation)JFrame.EXIT_ON_CLOSE
}
}
لم اقم بشرح بعض النقاط لني قمت شرحها من قبل ومش من المعقول ان اشرحها في كل
كود
هنا ننتهي من الـ )Design interface )GUIارجو بانكم فهمتوها طبعاً لم اقم بتطرق الى جميع عناصر ال GUIمثل الـ
JCheckBoxو ... JComboBoxالخ وذالك لتشابه كتابتها مع البرامج التي قمت بكتابتها لكم واعتقد بانكم قادرون بعد هذا
الشرح على تصميم اي واجهه تريدونها ...في نهاية هذا الفصل ارجو لكم البداع في هذا الموضوع.
نهاية الجزء الول من كتاب الـOOP
في الجزء الثاني من كتاب الـOOPسوف اقوم بشرح:
• EVENT HANDLING
• STREEM
• اتصال جافا بقواعد البيانات