/Java Programming: Let's Master 1

Java Programming: Let's Master 1

 ماهو الكمبيوتر؟؟
هو جهاز إلكتروني قادر علي تخزين ومعالجة البيانات ويضم جزء الـ hardware والـ software.
وبيقدم لنا تعريف بسيط للهاردوير علي أنها المكونات اللي ممكن رؤيتها بالعين في الجهاز وتعريف للسوفتوير على أنه المكونات والأوامر اللي مش بنقدر نشوفها بعيننا ولكنها بتتحكم في الهاردوير وتخليه يعمل وظيفة محددة.
أما البرمجة عموما فما هي إلا أننا بنكتب أوامر لجهاز الكمبيوتر وهو بينفذها.
بيقول كمان ممكن تتعلم البرمجة من غير ماتعرف أي حاجة عن الهاردوير ولكن علشان تفهم بالظبط الأوامر بتتنفذ إزاي والجهاز بيستقبلها إزاي وبيحللها إزاي أحسنلك إنك تعرف الهاردوير بتاع الجهاز.

1- Central Processing Unit (CPU) وحدة المعالجة الأساسية:

ودي بتعتبر زي المخ للجهاز. بتاخد الأوامر من الmemory وتنفذها وبتتكون من جزئين:
أ– Control Unit وحدة التحكم : ودي بتتحكم في باقي مكونات الجهاز
ب– Arithmetic & Logic Unit وحدة المنطق والعمليات الحسابية: وزي مااسمها بيقول مسئولة عن معالجة العمليات الحسابية المختلفة سواء جمع أو طرح او ضرب أو قسمة بالإضافة الي العمليات المنطقية زي المقارنات.


2- The Memory الذاكرة:

الجهاز بيتعامل مع أي بيانات وهي في هيئة ZEROs & ONEs يعني وحايد وأصفار وده ما يعرف بالنظام الثنائي،

 وهيتشرح قدام شوية في الشبتر. الداتا عندنا أنواع فيه الأرقام والحروف وكلهم في النهاية بيتخزنوا كـ وحايد وأصفار. مهمة الميموري بقي إنها بتخزن الداتا والأوامر وتديها للـ CPU علشان تنفذها وبيقول ان الميموري بيبقي فيها مجموعة من الـ Bytes مقسمة كل بايت عبارة عن 8 bit . وبيقول إن المبرمج مش مطلوب منه إنه يعرف نظام التخزين والتحليل للداتا في الميموري لأنه بيحصل اوتوماتك.


3- Storing Devices أجهزة التخزين:

من أكبر عيوب الميموري إنها متطايرة يعني بمجرد مابقفل الجهاز الداتا اللي فيها بتتحذف اوتوماتك. فكان الحل انه البرامج تتخزن علي أجهزة تخزين ولما نحتاج نشغلها نوديها في الميموري وده لأن الميموري أسرع بكتير من أجهزة التخزين اللي زي:
أ- Disk drives (hard disks and floppy disks) زي الهارد والفلوبي
ب- CD drives (CD-R, CD-RW, and DVD) زي السيدي العادي او الرايتر او الديفدي
ت- Tape drives زي الشرايط المستخدمة في عمل ال backup او النسخة الإحتياطية للجهاز
ث- USB flash drives زي الفلاش ميموري او mp3 او mp4 .


4- Input & Output Devices أجهزة الإدخال والإخراج:

وهي طرق التواصل بين المستخدم والجهاز من اشهراجهزة الإدخال طبعا الـ keyboard & mouse ومن اشهر اجهزة الإخراج monitors & printers.


5- Communication Devices أجهزة الإتصالات:

بيتم استخدمها لعمل اتصال بين المستخدم والأنواع المختلفة من الشبكات من انواعها modem , DSL , cable modem & network interface card .

 PROGRAMS
برامج الكمبيوتر والتي تسمي بالسوفتوير هي أوامر موجهة للجهاز. والبرامج دي هي اللي بتتحكم في الجهاز من غيرها هيبقي الكمبيوتر مجرد آلة فاضية وده لن الجهاز مش بيفهم لغة الإنسان فكان لازم من وجود لغة خاصة بيه هو يقدر يفهمها ويتعامل بيها واسمها لغة الآلة أو Machine Language وفي اللغة دي كل الأوامر في النهاية بتبقي علي هيئة واحايد واصفار وطلعا نظرا لأنها صعبة جدا جدا سواء في الكتابة او تصليح الاخطاء فتم عمل لغة يعني اسهل شوية وكانت الـ Assembly Language او لغة التجميع وكان فيها حاجة اسمها Assembler وده وظيفته انه يحول الكود من اسمبلي إلي لغة الالة

ولكن من اكبر عيوب لغة التجميع انها تعتمد علي الهاردوير بتاع الجهاز
يعني لو غيرنا الجهاز برنامج الأسمبلي مش هيشتغل نظرا لاختلاف الهاردوير من جهاز لجهاز.
طبعا كل المحاولات دي تعتبر لغات برمجة ولكن low-level لأن المبرمج برده بيتعامل مع اكواد لغة صعبة جدا بعد كده ظهرت لغات high-level ودي كان الهدف منها التغلب علي مشكلة اعتماد البرامج علي الهاردوير وصعوبة الكود.
من أهم مميزات لغات الـ high-level انها تعتبر قريبة من اللغة الإنجليزية العادية.

من أشهر لغات ال high-level :

  • · COBOL (COmmon Business Oriented Language).
  • FORTRAN (FORmula TRANslation)
  •  BASIC (Beginner All-purpose Symbolic Instructional Code)
  •  Pascal (named for Blaise Pascal)
  •  Ada (named for Ada Lovelace)
  •  C (whose developer designed B first)
  •  Visual Basic (Basic-like visual language developed by Microsoft)
  •  Delphi (Pascal-like visual language developed by Borland)
  •  C++ (an object-oriented language, based on C)
  •  C# (a Java-like language developed by Microsoft)
  •  Java

وكل لغة من دول تم عملها لخدمة قطاع معين من التطبيقات.
البرنامج اللي بنكتبه اسمه Source Program وبما إن الجهاز مش بيفهم الكود العادي فكان لازم من وجود برنامج اخر وهو الـ Compiler وده اللي بيحول كود الجافا لكود لغة الآلة وعن طريق بعض الخطوات بيتم عمل ملف تنفيذي وده اللي بيشتغل وبيكون امتداده .exe

بالنسبة للجافا تم عملها بغرض انها تكون مرنة وممكن تشغيل البرنامج علي اي جهاز. فبيتم عمل البرنامج ووضعه علي اي جهاز مع وجود الcompiler المناسب وفي وجود الـVirtual Machine (JVM)وهي البيئة اللي من خلالها اقدر اشغل اي برنامج جافا علي اي جهاز.

وهعمل سكيب لجزء Operating System لأنها ميهمناش قوي وكمان جزء نظم الأرقام.


JAVA , The World Wide Web And Beyond

لغة الجافا تم تطويرها من قبل مجموعة من المطورين علي رأسهم James Gosling بداخل شركة SUN وكانت مصممة في الأساس لعمل embedded consumer electronic appliances ولكن تم تعديل تصميمها لكي تناسب تطبيقات الويب.
واشتهرت الجافا جدا بعد كده لأن أكبر ميزة فيها هي عدم اعتماديتها علي الجهاز بما معناه اني ممكن اكتب البرنامج علي مثلا ويندوز واشغله علي جهاز تاني خالص ممكن يكون لينكس او يونكس او سولاريز او اي نوع اخر.
من مميزات الجافا برده انها تناسب جميع الأغراض ودلوقتي الجافا مش بس لتطبيقات الويب ولكن ايضا لعمل برامج تطبيقية عادية Standalone Applications سواء علي نفس الجهاز او حتي في شبكة وطبعا بتستخدم برده في عمل تطبيقات الأجهزة المحمولة. وده شكل تطبيق من تطبيقات المحمول:

THE JAVA LANGUAGE SPECIFICATION, API, JDK, and IDE
Language Specifications: ودي هي المواصفات بتاعة اللغة يعني نظامها ايه الـ Syntax أو قواعد كتباتها ايه بالظبط.
Application Program Interface (API): بيبقي فيه بعض البرامج الجاهزة واللي بيحتاجها معظم المبرمجين وكل يوم بيتعمل api لحاجات جديدة .
SDK: تم عمل تلات فروع من انواع التطبيقات اللي الجافا بتشتغل عليهم وهي:
Java 2 Standard Edition (J2SE): ودي بتستخدم في عمل البرامج العادية او الـ Desktop Applications .
Java 2 Enterprise Edition (J2EE): ودي بتستخدم في عمل بتطبيقات الويب
Java 2 Micro Edition (J2ME): ودي بتستخدم في عمل برامج للأجهزة المحمولة.
بالنسبة لل j2se شركة sun عملت Java Development Toolkit وبيسمي JDK وحاليا احدث نسخة منه هي JDK 6.0 وهو في الكتاب شغال علي خمسة الفروق مش جامدة قوي .
Integrated Development Environment (IDE) : دي عبارة عن مجموعة من البرامج بتسهل عملية التكويد

في الجافا وبتسهل عملية التحكم في البرامج وتشغيلها وتصميمها ايضا من اشهرهم:

• JBuilder by Borland (http://www.borland.com)
• NetBeans Open Source by Sun (http://www.netbeans.org/)
• Eclipse Open Source by IBM (http://www.eclipse.org/)
A SIMPLE JAVA PROGRAM
كفاية بقي كلام ومقدمات هنبدأ في اول برنامج جافا وهو برنامج بسيط بيطبع جملة Welcome To Java!

كود:

// This is a comment
public class Welcome { // class name
public static void main(String[] args) { // main method
System.out.println(“Welcome To Java!”); // printing command
} // end of main method
} // end of class
 

ده كده الكود عايزين نفهم يعني ايه:-
في البداية اي برنامج جافا لالالالالالازم يكون فيه علي الأقل class واحد فقط والكلاس ده بحط فيه الاوامر بتاعتي كلها وبعرف فيه متغيراتي واي حاجة تانية بحتاجها. وطبعا بختار للكلاس اسم ومن ضمن قواعد الجافا ان اسم الكلاس لازم يبتدي بحرف كابتل uppercase letter وفي برنامجنا اسم الكلاس كان Welcome.
علشان اقدر اشغل اي برنامج جافا لازم تكون موجودة فيه main method ودي لما البرنامج بيتنفذ اوتوماتك بيتم تنفيذ الأوامر اللي فيها.
وبعد كده عندنا جملة طباعة واحدة فقط واللي هي System.out.println ودي بتطبع الجملة اللي فيها علي الـ Console اللي هو شاشة الcommand prompt .
اكيد بتسأل يعني ايه main method ويعني ايه جملة الطباعة دي ؟
دول يبقوا قواعد اللغة وعلشان تقدر تشغل البرنامج صح لازم يتبع القواعد دي ويطبقها صح ولو فيه اي غلطة البرنامج مش هيتنفذ وهيطلع error وفيه كمان مواضيع لسه هتوضح الكلام ده قدام شوية.

CREATING, COMPILING, AND EXECUTING A JAVA PROGRAM

طيب احنا دلوقتي عملنا البرنامج وعايزين نشغله بقي بس قبل مانشغله لازم نعمله compile الاول وبعدين ممكن نشغله مع العلم انه لو فيه اي غلط في الكود الcompiler هيطلع error ومش هتقدر تشغل البرنامج لازم تراجع الكود وبعدين تبقي تعمله compile تاني ولازم تتأكد ان برنامجك سليم من ناحية القواعد.
طيب هكتب البرنامج فين؟
في اي text editor زي ال notepad وممكن تستخدم اي برنامج من اللي سبق ذكرهم زي jbuilder او netbeans .
ملحوظة: من الأفضل ليك كمبتدئ انك تبتدي من كتابة البرامج علي النوت باد وبعدين لما توصل لمستوي كويس تقدر تستخدم اي IDE .
ماشي
دلوقتي كتبنا البرنامج نعمله SaveAs ولازم يتسيف بامتداد.java ويكون اسم الملف مطابق تماما لإسم الكلاس يعني البرنامج اللي عملناه لما نيجي نسيفه هنسيفه بإسم Welcome.java
طيب عملناه علشان اشغله
عندنا أمرين مهمين جدا جدا جدا
الأول javac : وده بيعمل compile للبرنامج وبيتكتب علي المحث في ال command prompt زي كده:
Javac Welcome.java

خطوات التشغيل:
علشان تقدر تشغل الأمر ده صح وميطلعش اي ايررور الأول هننزل نسخة ال JDK علي الجهاز من موقع SUN وممكن ننزل احدث نسخة من هنا http://rapidshare.com/files/19832245…ows-i586-p.exe
ودي صفحة التحميل من موقع sun وفيها كل نسخ الجافا ولينكاته سريعة جدا
http://java.sun.com/javase/downloads/index.jsp
ونعملها install علي جهازنا. وبعد كده بعرف حاجة اسمها class path ودي باجيبها عن طريق:
بعمل كليك يمين علي my computer وبعدين properties وبعدين advanced ومنها هلاقي تحت environment variables وبعرف متغير جديد وبحط فيه مسار نسخة الـJDK لحد فولدر الـbin


 

و ماتعرفش علي الأمر يبقي نعدل في ال path ونكتبه صح ولو انت متأكد انه صح ممكن نعمل ريستارت للجهاز ونجرب تاني.
دلوقتي الـ command prompt عندي واقف علي مسار وهو مثلا C:\java علشان المحث يقدر يشوف البرنامج ويقراه يبقي احط الملف اللي كتبت فيه الكود في الفولدر اللي المحث واقف عليه او اغير انا المسار بتاع المحث من امر cd.. زي كده:

طيب خلاص اكتب بقي الأمر بتاعي:
Javac Welcome.java
المفروض لو كله تمام مايطلعش اي حاجة يقف علي السطر اللي بعده لكن لو فيه اي ايررور في الكود هيطلعه ويقولك في انهي سطر كمان:

ده مثال علي كلامي في البرنامج لما معملتش double quote وعملت single quote طلعلي ايررور وقالي في السطر الكام كمان ولما صلحته وعملت compile تاني مطلعش اي حاجة يعني كده فعلا اتعمل compile صح بدون اخطاء لو روحت علي الفولدر اللي فيه البرنامج بتاعنا هتلاقي ملف تاني طلع بنفس اسمه ولكن بإمتداد .class وده هو ال bytecode بتاع برنامجنا لو فتحته هتلاقي فيه كلام مش مفهوم بس ده كود الجهاز فاهمه.
نيجي لأمر التشغيل وهو أمر java وبيتكتب بالنظام ده
Java Welcome

هيطلعلنا الناتج كده:

وبكده نكون كتبنا وشغلنا أول برنامج جافا لينا ونكمل بكرة بإذن الله تعالي

 

ANATOMY OF A JAVA PROGRAM

طيب دلوقتي احنا عملنا برنامج ونفذناه عايزين نعرف بقي ازاي نفهم البرنامج ونعرف برده احنا محتاجين ايه علشان نعرف نكتب كود جافا صح .
أي برنامج جافا بيتكون من معظم وليس كل الحاجات دي:

1- Comments : يعني تعليق وبحطه لما اكون عاوز اكتب اي تعليق علي الكود او حاجة تفكرني بوظيفة الأوامر مثلا او اي جملة واللي بكتبه في التعليق ده الـ compiler بيتجاهله تماما ومش بيتنفذ ولا بيظهر في الـ run . عندي طريقتين بعمل بيهم comment:
a- لو عاوز اكتب تعليق من سطر واحد فقط بكتبه بعد // مثلا:

كود:

// this is a comment.

b- لو عاوز اكتب تعليق من اكتر من سطر بستخدم /* وبعدين اكتب اللي انا عاوزه وانهيه برده بـ */ مثلا:

كود:

/*this
Is
A
Comment.*/

2- Reserved Words:
فيه شوية كلمات ماعرفش استخدمهم في تسمية المتغيرات او الكلاس او الميثود لأن ليهم معني معين عند الـ compiler ومقدرش استخدمهم في الكود. زي :

كود:

public, static, int, float, double, class, void, etc…

3-Modifiers:
 الجافا بتستخدم كلمات محفوظة عن طريقها بقدر اتحكم في صفات الداتا اللي جوه الكود من حيث انهي كلاس يقدر يشوفها ومين يقدر يشوفها ويعدلها وهكذا. املة علي الـ modifiers :

كود:

public, private, protected.

يعني مثلا الـ public معناها ان الداتا دي عامة اي كلاس يقدر يشوفها ويعدل فيها والـ private معناها ان الداتا دي مفيش اي كلاس تاني يقدر ولا يشوفها ولا يعدلها.

4- Statements :
ودي بتبقي اي جملة بتعمل اي امر في الكود زي مثلا System.out.println(“welcome”); وعندنا قاعدة جديدة في الجافا ان اي جملة بتنفذ امر لالالالالالالالازم تنتهي بـ (;)

5- Blocks :
 ودول اقواس المجموعة اللي في الكود ({) واي قوس بيتفتح لاز يتقفل بعد مااخلص الكود اللي فيه والكلاس عندنا بيبقي فيه اقواس بيتلم كل الكود اللي فيه بينهم وبرده اي ميثود نفس النظام وممكن تكون الأقواس متداخلة (nested) بمعني ان ممكن يكون فيه قوس جوه قوس زي كده:

6- Classes:
اي برنامج جافا لازم يكون فيه علي الأقل كلاس واحد والكلاس عامل زي الإناء بيبقي فيه كل الكود بتاعي بس معناه اكبر من كده وهيتشرح معناه قدام شوية.

7- Methods :
في برنامجنا اللي كتبناه لما قولنا System.out.println الجملة دي عبارة عن ايه؟ عندنا System.out ده عبارة عن object اما println دي عبارة عن ميثود موجودة في الobject ده والميثود ببساطة بيبقي فيها جمل من الكود وبتتنفذ بمجرد مابنادي الميثود دي وطبعا الكلام ده هيتوضح بالتفصيل قدام شوية.

8- Main Method :
ودي الميثود الاساسية في البرنامج بتاعنا ولازم تكون موجودة لأن ال JVM اوتوماتك بتنفذ اللي فيها .

كود:

 
public static void main(String[] args) {
// statements.
}

DISPLAYING TEXT IN A MESSAGE DIALOGUE BOX
جميل قوي لحد كده احنا دلوقتي عملنا برنامج بيطبع جملة علي الconsole طيب انا عاوز اعمل نفس البرنامج بس الجملة مش هتنطبع علي الconsole ولكن هطبعها في رسالة تطلع للمستخدم علي الشاشة.

كود:

 
1 /** This application program displays Welcome to Java!
2  *  in a message dialog box.
3  */
4 import javax.swing.JOptionPane;
5
6 public class WelcomeInMessageDialogBox {
7   public static void main(String[] args) {
8     // Display Welcome to Java! in a message dialog box
9     JOptionPane.showMessageDialog(null, “Welcome to Java!”,
10       “Display Message”, JOptionPane.INFORMATION_MESSAGE);
11   }
12 }

 

ممممم طيب عايزين نفهم الكود ده ؟؟؟
الأول كده احنا استخدمنا كلاس جاهز اسمه JOptionPane وفي الجافا الكلاسات الجاهزة بتتجمع في حزمة او package والكلاس ده موجود في الحزمة اللي اسمها javax.swing وعلشان الـ compiler يقدر يحدد مكانه استخدمت امر import وبالمناسبة لما جينا في اول برنامج نستخدم System.out.println معملناش اي استدعاء لأي كلاس تاني وده لأن الكلاس اللي احنا عاوزينه موجود في حزمة java.lang ودي حزمة بتكون موجودة اوتوماتك في اي برنامج جافا ومش محتاجة استدعاء.
ممكن برده اشيل جملة الإستدعاء في الاول بس كل ماهاجي استخدم الكلاس ده هستدعيه زي كده مثلا في السطر التاسع:

كود:

JOptionPane.showMessageDialog(null, “Welcome to Java!”,

لو مكتبتش جملة الإستدعاء في الاول كل مرة هاستخدمه فيها اخليه كده:

كود:

javax.swing.JOptionPane.showMessageDialog(null, “Welcome to Java!”,

وبعدين استخدمنا الميثود showMessageDialog واللي موجودة في كلاس JOptionPane وباستدعيها عن طريق اني بكتب اسم الكلاس وبعديه (.) وبعدين اسم الميثود والarguments اللي بتاخدها والMethods هتتشرح قدام شوية بالتفصيل

 

الميثود دي بقي بتاخد ايه ؟؟؟ اول حاجة عملنا null ودي بتخلي الرسالة تظهر في منتصف الشاشة وبعد كده عملنا الجملة اللي هتنطبع وممكن نحط مكانها مثلا متغير (x) او اي حاجة عايزين نطبعها وبعدين عملنا العنوان اللي هيتكتب في الmessage box وفي النهاية عملت الجملة دي JOptionPane.INFORMATION_MESSAGE علشان تطلع شكل الأيكونة اللي عليها علامة (i)

طيب اكيد دلوقتي حد هيفكر طيب الحاجات دي انا اللي بحددها ولا ايه بالظبط؟
هقولك شرح الmethods بالتفصيل هييجي قدام شوية وهنعرف كل حاجة عنها بالتفصيل ان شاء الله.

وبكده نكون خلصنا شابتر واحد من الكتاب هسيب باقي الأسبوع للناس تطبق البرامج ولو فيه اي استسفسار انا تحت امركم.