CS602 & GS311 برمجة جافا Java Programming I (LAB) عملي اعداد حليمة محمد عطية.أ 2017 خريف 3 محاضرة FB : Ms H Programmer www.msjavaprogrammer.strikingly.com
المصفوفات في لغة الجافا Array in Java Language • المصفوفة هي نوع من انواع البيانات تتكون من مجموعة من العناصر من نفس النوع ،او عناصر تنتمي لفئة محددة .و تتميز المصفوفات بانها مرتبة اما في هيئة صفوف من البيانات او اعمدة (ذات بعد واحد) ،او في هيئة صفوف و اعمدة (ذات بعدين أو اكثر). • الستخدام المصفوفات في لغة الجافا ،البد من اتباع الخطوات التالية:
declare the array variable
.1 :
type
array-name[ ]; create the array :
.2
Array-name = new type [array-size] ; : type Array-name[ ] = new type [array-size] ;
2 1
.3
:مالحظات
constant array :
array initialization
Array-name[array-size] = {array-element } ; , .
new :
type Array-name[ ] [ ]= new type [array-row number] [array-column number] ;
: مالحظات : type[ ] Type[ ] array-name1, array-name2, …,array-namen; Same as: Type array-name1[ ],array-name2[ ],….,array-namen[ ]; :
length
.
Array-name.length
* تتميز لغة الجافا عن غيرها من اللغات في قدرتها على إدارة الذاكرة memory- managedبحيث أن المبرمج ال يهتم بإلغاء التخصيص لكومة من البيانات في الذاكرة .لغة جافا قادرة على ذلك تلقائيا ً و كذلك بيئة التطوير Androidالتي هي بدورها بيئة برمجة .memory-managedو قد اعتمدت كل من Microsoftو Appleهذا النموذج في .mobile development platforms
التصانيف و الكائنات Classes & Objects • •
•
•
مفهوم برمجة الكائنات Object-Oriented Programming Concept العالم من حولنا في حقيقة االمر يتكون من مجموعة من الكائنات .objects كل كائن له خصائص attributesيتميز بها ،و سلوك behaviorيسلكه. فمثالً االنسان هو ذلك الكائن البشري الذي يتميز بصفات (الوصف) :له عينان ،يدان ،..،و له سلوك يسلكه مثل :العقل ،االكل ،الشرب ،المشي.... بناءاً على هذا المفهوم ،جاءت فكرة البرمجة الموجهة نحو الكائنات أو البرمجة الشيئية ،حيث تعتبر لغة Javaمن اللغات الكائنية و فيها يتكون البر نامج من مجموعة من objectsالتي تتفاعل مع بعضها البعض .هذه الكائنات تم تكوينها وفقا ً لمعايير و نماذج محددة و معرفة مسبقا ً في البرنامج تسمى ( classesالتصانيف او الفصائل أو الفئات). اذن ،لكي نكون كائن ،البد أوالً و قبل كل شي ان نكون تصنيف ،classو من هذا التصنيف classنكون أي عدد من الكائنات حسب حاجة البرنامج.
....doors
windows ( class : . )material ( .. width length .
blocks
:
: .)
مزايا البرمجة باستخدام OOP .1 .2 .3 .4 .5
امكانية صنع أي قالب classوفقا ً للمعايير و المقاييس المحددة حسب الحاجة. امكانية استخدام هذه ال classesو االستفادة منها في تكوين أي عدد من الكائنات دون الحاجة الى معرفة التفاصيل عن هذه ال.classes امكانية استخدام أي تصنيف classموجود مسبقا ً و امكانية اضافة بيانات اخرى إليه دون الحاجة الى معرفة تفاصيل هذه ال class (الوراثة .)inheritance امكانية تعدد االشكال ( ،)polymorphismبمعنى انه يمكن ان نجعل البرنامج المكتوب بصفة عامة generalيخضع لتنفيذ مهمة خاصة .specific امكانية حماية البيانات و تغليفها داخل كبسولة encapsulationحيث ُتغلف البيانات داخل classو ال يمكن الوصول اليها بدون تخويل .authorization
التصانيف classes • • • • • • • •
يمكن تعريف ال classعلى انها: وصف لعدد من الكائنات المتشابهة. مجموعة من البيانات ) data (attributesو الدوال methods ) (behaviorالتي تشترك في صفة معينة. أي classفي لغة Javaتتكون من جزئين: الخصائص attributes و هي البيانات :الثوابت و المتغيرات التي تخص الكائن .objectو ُتسمى بمتغيرات االعضاء member variablesأو instance .variables السلوك behavior و هي الوظيفة او المهمة )(function or methodالتي يقوم بها الكائن .objectو ُتسمى بالدوال االعضاء .member methods
class definition تعريف التصنيف : )optional
(
Access modifier class { Fields Constructors Methods }
class-name
Fields variable .1 :
class
access modifier type
variable-name ;
Constant .2 : final
class type )
constant-name = value; (
final constructor : final
type )
constant-name ; (
Class variable .1 ) : static
( static
type
class
variable-name ;
class .
class
: final
final static static
constant
type constant-name ;
constructor .a class object
constructor :
)
( )
public class-name ( type variable ) { , Constructor body }
(
اهمية دالة البناء • •
• •
تهيئة الكائن object initialization حيث تقوم دالة البناء بإعطاء قيم ابتدائية للكائن اثناء تكوينه، و في هذه الحالة يتم تمرير هذه القيم كمعطيات مع جملة تكوين الكائن مع مراعاة الترتيب. تخاطب الكائنات inter-object communication و ُتعد هذه العملية من أهم مبادئ برمجة OOPحيث تقوم دوال البناء بدور هام في هذه العملية ،و تتم هذه العلملية باستخدام تقنية .callbackو غالبا ً ما ُتستخدم في الواجهات الرسومية .GUI
مالحظات • يمكن ان تحتوي ال classالواحدة على أكثر من دالة بناء constructorبشرط ان يكون هناك اختالف بينها في عدد البارامترات أو نوعها. • يمكن االستغناء عن كتابة معدل وصول publicمع دالة البناء.
methods .a .)action ( : )
(
access modifier {
)
return-type method-name ( type variable ) , method body
(
مالحظات .1يمكن ان ال ُترجع الدالة أي قيمة ،و عندها يكون نوع القيمة التي ترجعها الدالة return typeهي الكلمة المحجوزة .void .2يمكن ان تحتوي ال classالواحدة على أكثر من دالة بنفس االسم بشرط ان تختلف إما في نوع القيمة التي ُترجعها الدالة او في عدد البارمترات او نوعها ،و ُتسمى هذه العملية ب.overloading .3يمكن ان يكون للدالة اكثر من معدل وصول access .modifier

method calling : type variable-name; ) ( )variable-name = ( Object-name.method-name( argument ) ; ,
class : )
(
static {
class method ) class static

(
)
(
return-type
method-name ( type variable ) , method body }
مالحظات • تستخدم دالة من نوع staticمتغيرات من نوع staticفقط. • يمكن استدعاء الدالة ال staticبدون اقترانها باسم الكائن لوجودها في موقع ذاكرة ال classحيث يتم استدعائها عن طريق اسم ال classالموجودة فيها. • تحتوي Javaعلى مجموعة من ال classesالتي تتضمن دوال يمكن استدعائها باسم ال classالموجودة فيها مثل class Mathالتي تتضمن مجموعة كبيرة من الدوال الرياضية مثل دالة الجذر التربيعي )(.sqrt
Objects الكائنات data :
class .class .
class
Class-name object-name =new class-name( argument );
. argument
.1 .2
. class : Class-name object-name1, object-name2,‌‌,object-namen ; :
object-name1 =new class-name(argument ); ,
.3
تفسير جملة تكوين الكائن يستخدم الكلمةcompiler تعني جملة تكوين الكائن السابق ان المترجم : ليقوم بالتاليnew المحجوزة create object تكوين كائن باالسم المعطى memory location حجز موقع في الذاكرة لهذا الكائن استدعاء دالة البناء اذا كانت موجودة في البرنامج و تمرير البيانات اليها و فإنه يقوم بفرض دالة بناء افتراضية و، و إال،تخزينها في موقع ذاكرة الكائن .null يرجع القيمة The statement in the program uses the variable reference to send messages to an object. These messages are called to the methods that enable the program to interact with an object. The message includes the arguments that are method requires for performing its task.
• • • • •
المؤثر this • يُستخدم المؤثر thisفيما يلي: • حل مشكلة االسماء المتشابهة ،حيث يقترن المؤثر thisمع اسم المتغيرة العضو .member variable • استدعاء دالة بناء ،حيث يمكن لدالة بناء ان تستدعي دالة بناء اخرى بشرط ان تكون اول جملة في دالة البناء االخرى جملة االستدعاء .و يمكن ان تحتوي جملة االستدعاء على معامالت argumentsكما في الشكل التالي: ; )معامالت (• this
معدالت الوصول Access Modifiers • •
• • • • • • •
الجزء االول Part One معدالت الوصول هي كلمات محجوزة ُتستخدم في تحديد الوصول الى classو دوالها و متغيراتها ،و اهمها: Static modifier يُستخدم مع المتغيرات و الدوال ،و عندها ُتصبح المتغيرات من نوع static variableو الدوال من نوع static methodsحيث ُتخزن في موقع ذاكرة ال ،classو أي كائن من هذه ال classيشير إليه. مالحظات: الدوال من نوع staticال تتعامل إال مع متغيرات من نوع .static ُتسمى المتغيرات من نوع staticب ،class variablesو الدوال من نوع staticب.class methods يمكن استخدام متغيرة من نوع staticاو دالة من staticبدون اقترانها باسم الكائن و ذلك عن طريق كتابة اسم ال classعوضا ً عن أسم الكائن. يجب إعطاء قيمة ابتدائية لمتغير .static
معدالت الوصول Access Modifiers • final modifier • يُستخدم مع ،classesو methodsو variablesبحيث ان:
– final classتعني أنه ال يمكن ان ُننشئ منها classفرعية. – final methodتعني أنه ال يمكن أن ُنجري أي تعديل عليها (دوال غير مهيمنة .)non overriding method – final variableتعني أنه ال يمكن أن تتغير قيمتها إال عن طريق دالة البناء.
• مالحظات: • إذا تم االعالن عن classعلى انها ،finalفإن جميع الدوال بداخلها هي من نوع .final • إذا لم يتم إعطاء قيمة ابتدائية لمتغير من نوع ،finalفإنه يجب اعطاءه قيمة ابتائية عن طريق .constructor
Access Modifiers معدالت الوصول methods وclasses يُستخدم مع:Abstract modifier :و يتم اتباع الشكل التالي public abstract class class-name{…………….} public abstract void method-name(…….) فهذا يعني أنه يمكنabstract من نوعclassفإذا كانت ال فرعية و لكن ال يمكن ان نكون منclass ان ننشئ منها . أي كائنabstract class
• • • •
معدالت الوصول Access Modifier • •
• • •
الجزء الثاني part two يمكن الي classموجودة في برنامج ما أن تسمح الي class اخرى موجودة في نفس البرنامج او خارجه ان تصل الى متغيراتها او دوالها باستخدام معدل الوصول المناسب ،كما يمكن الي classأن تحد من استخدام متغيراتها و دوالها من قبل أي classأخرى عن طريق أخفائها و حمايتها وفق عملية ُتسمى بالكبسلة .encapsulation و ُتستخدم لذلك اربع معدالت للوصول كما يلي: public modifier يُستخدم عند االعالن عن classأو متغير أو دالة ،و عندها تصبح هذه ال classمتاحة لجميع ال classesاالخرى الموجودة داخل الحزمة أو خارجها .بمعنى انه يمكن الوصول الى المتغيرات و الدوال و ال (classesمحتويات ال )classمن نوع publicمن أي classأخرى كانت.
معدالت الوصول Access Modifier
• private modifier يُستخدم مع المتغيرات و الدوال ضمن classمحددة ،و هذه ال classهي الوحيدة التي تستطيع ان ترى المتغيرات الprivate و تتعامل مع الدوال ال privateالموجودة فيها .بمعنى آخر انه إذا عرفنا كائن من نوع classتحتوي على متغيرات و دوال من نوع ،privateفإن هذا الكائن ال يستطيع الوصول اليها أو التعامل معها مباشرة إال عن طريق الدوال الموجودة ضمن هذه ال classبشرط ان تكون هذه الدوال من نوع .public • protected يستخدم للحد من الوصول الى المتغيرات أو الدوال الموجودة داخل classما إال عن طريق classفرعية من هذه ال classالرئيسية و يُستخدم هذا المعدل في الوراثة inheritanceحيث يسمح لجميع classesالفرعية بالوصول سواءاً كانت هذه ال classesالفرعية داخل الحزمة او خارجها .و كذلك يسمح الي classعادية بالوصول بشرط ان تكون داخل الحزمة.
معدالت الوصول Access Modifier • default في هذه الحالة ال يتم إعطاء أي معدل لل .classو يكون المعدل حينئذ افتراضي ،defaultحيث ال يُستخدم أي معدل مع متغير او دالة او ،classو يمكن الوصول بحرية الى هذه المتغيرات أو الدوال أو classesبشرط أن ال تكون ال classخارج الحزمة.
classes لخص وصو لى Access modifier
public
ج
private protected default
position From the same class
yes
yes
yes
yes
Any class inside package
yes
no
yes
yes
Any class outside package
yes
no
no
no
Any subclass inside package
yes
no
yes
yes
Any subclass outside package
yes
no
yes
no
Any class outside package
yes
no
no
no
مثال تطبيقي • اكتب برنامج يطبع بياناتك الجامعية ويحسب نتيجتك