Java lab lecture3pdf

Page 1

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


‫مثال تطبيقي‬ ‫• اكتب برنامج يطبع بياناتك الجامعية‬ ‫ويحسب نتيجتك‬


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.