Professional Documents
Culture Documents
GS301 2023- lecture3
GS301 2023- lecture3
GS301 2023- lecture3
الع الم من حولن ا في حقيق ة االم ر يتكون من مجموعة من الكائن ات ،objectsكل كائن ل ه
خص ائص attributesيتم يز به ا ،و س لوك behaviorيس لكه .فمثًال االنس ان كائن بش ري
يتميز بصفات :لون عيون ،يدان ،..،و له سلوك يسلكه مثل :االكل ،الشرب ،املشي....
ًا
بن اء على ه ذا املفه وم ج اءت فك رة البرمج ة املوجه ة نح و الكائن ات أو البرمج ة الشيئية،
حيث تعت بر لغ ة Javaمن اللغ ات الكائني ة و فيها يتكون البرنامج من مجموعة من objects
ًا
ال تي تتفاع ل م ع بعض ها البعض .ه ذه الكائن ات تم تكوينه ا وفق نم اذج او ق والب مح ددة
ًا
ومعرفة مسبق في البرنامج تسمى ( classesالتصانيف او الفصائل أو الفئات) ،حيث لكي
ًال
نكون كائن ما أو أكثر البد أو أن نكو تصنيف .class
ن
مزايا البرمجة باستخدام OOP
ًا
امكانية صنع أي قالب classوفق للمعايير و املقاييس املحددة حسب الحاجة.
امكانية استخدام هذه ال classesو االستفادة منها في تكوين أي عدد من الكائنات
دون الحاجة الى معرفة التفاصيل عن هذه ال.classes
ًا
امكانية استخدام أي تصنيف classموجود مسبق و امكانية اضافة بيانات اخرى
إليه دون الحاجة الى معرفة تفاصيل هذه ال( classالوراثة .)inheritance
امكاني ة تع دد االش كال ( ،)polymorphismبمع نى ان ه يمكن ان نجع ل البرنامج
املكتوب بصفة عامة generalيخضع لتنفيذ مهمة خاصة .specific
ُت
امكاني ة حماي ة البيان ات و تغليفه ا داخ ل كبس ولة encapsulationحيث غل ف
البيانات داخل classو ال يمكن الوصول اليها بدون تخويل .authorization
التصانيف classes
-التصنيف :Classهو الجوهر األساسي في لغة جافا ،حيث أن البرنامج المكتوب بلغة جافا يجب أن
يحتوي على األقل على تصنيف واحد.
-تعتبر التصانيف نوع من أنوا ع البيانات ،لذلك يمكن تعريف متغيرات من نوع تصانيف ،فاملتغير
من نوع تصنيف عبارة عن كائن ).instance of class(object
-يمكن تعريف التصنيف في لغ ة جاف ا باس تخدام الكلم ة املحج وزة classو يتم تعريف مجموعة
من املتغيرات داخل التصنيف و أيضا مجموعة من الدوال .methods
-ليس من الضروري تعريف الدالة mainمن ضمن دوال التصنيف إال إذا أردنا هذا التصنيف أن
يكون هو بداية تنفيذ البرنامج.
ْا
-يجب أن يبد اسم التصنيف بحرف كبير. Capital letter
-اسم ملف البرنامج املصدري يجب أن يحمل نفس اسم التصنيف و يكون امتداده ( .)java.
-يحت وي التصنيف على دال ة أو مجموعة دوال داخ ل التصنيف classتحم ل نفس اس م التصنيف
تسمى دوال البناء ،constructorو في حالة عدم وجود أي دالة بناء داخل التصنيف ،يقوم املترجم
ًا
تلقائي بإنشاء دالة بناء التصنيف في زمن التنفيذ إلعطاء قيم ابتدائية ملتغيرات التصنيف.
تابع ..التصانيف classes
يمكن تعريف ال classعلى انها:
وصف لعدد من الكائنات املتشابهة.
مجموعة من البيانات ) data (attributesو الدوال ) methods (behaviorالتي تشترك في صفة
معينة ،أي classفي لغة Javaتتكون من جزئيين:
الخصائص : attributesو هي البيانات :الثوابت و املتغيرات التي تخص الكائن .objectو
ُت
سمى بمتغيرات األعضاء member variablesأو .instance variables
السلوك : behaviorو هي الوظيفة او املهمة ()function or methodالتي يقوم بها الكائن
ُت
.objectو سمى بالدوال األعضاء .member methods
class definition تعريف التصنيف
:لتعريف تصنيف في البرنامج يجب ان نتبع الشكل التالي
أو
{ class Classname
type instance-variable1;
type instance-variable2;
t ype methodname1(parameter-list) {
// body of method} }
الحقول Fields
الحق ول :هي الث وابت و املتغ يرات ال تي نحت اج اليه ا لوصف خص ائص الكائن،
وتتمثل في االنواع التالية:
Instance variable .1
و هو متغير يتم االعالن عنه داخل التصنيف classبالشكل التالي:
الحقول Fields
Constant .2
و هو ثابت يتم االعالن عنه داخل التصنيف classبالشكل التالي:
و يمكن تعريف متغ ير من ن وع finalعلى ان يتم اعط اءه قيم ة ثابت ة من قب ل دال ة
البناء constructorو ال يمكن ان تتغير قيمته داخل البرنامج و الشكل العام لها هو:
الحقول Fields
Class variable .3
و ُي سمى متغير التصنيف (او املتغير الساكن) ،و هو متغير يتم االعالن عنه داخل الclass
مسبوق بالكلمة املحجوزة ،staticو الشكل العام له هو:
و معنى ذلك ان موقع هذه املتغير داخل موقع ذاكرة ال ،classو كل كائن مكون من هذه
ال classيمكنه الوصول إليه.
مالحظة :يمكن أن يكون الثابت constantمن نوع final staticكما في الشكل التالي:
الكائنات Objects
الكائن عنص ر ُي مث ل اس تخدام classداخ ل البرنامج (أي متغ ير من ن وع تصنيف) و يأخ ذ
نفس الص فات dataوالس لوك املوجودة في ه ذا ال ،classبمع نى أن ه يس تطيع اس تخدام
البيان ات و ال دوال املوجودة داخ ل ال classال تي ينتمي إليه ا .و لتكوين كائن داخ ل البرنامج،
نتبع الشكل التالي:
لتكوين كائن يتم كتاب ة اس م التصنيف ثم املتغ ير ال ذي يمث ل الكائن و تس تخدم الكلم ة
املحجوزة newلحجز موقع في الذاكرة ملتغير الكائن و هو مؤشر يشير ملوقع الكائن في الذاكرة،
أما االسم ال ذي يلي الكلمة املحجوزة newو القوسين يمثل دالة بناء للتصنيف إلعطاء قيم
ابتدائية ملتغيرات الكائن.
يأخذ الكائن صورة من التصنيف (متغيراته و دواله) و يمكن الوصول لمتغيرات و دوال الكائن
عن طريق اس م الكائن و نقط ة ثم اس م املتغ ير أو الدال ة املراد الوصول اليه ا
،obj_name.memeberل ذلك قيم متغ يرات كل كائن ق د تختل ف الكائن األخ ر من نفس
التصنيف.
تفسير جملة تكوين الكائن
تع ني جمل ة تكوين الكائن أن املترجم compilerيس تخدم الكلم ة املحج وزة newليق وم
بالتالي:
تكوين كائن باالسم املعطى ، create objectحجز موقع في الذاكرة memory locationلهذا
الكائن ،اس تدعاء دال ة البن اء اذا كانت موجودة في البرنامج و تمرير البيان ات اليه ا و تخزينه ا
في موقع ذاكرة الكائن ،و إال فإنه يقوم بفرض دالة بناء افتراضية و يرجع القيمة .null
تس تخدم جمل ة تكوين الكائن في البرنامج املتغ ير املرجعي إلرسال رسائل إلى كائن ،ه ذه
الرسائل تس مى ب ال methodsال تي تمكن البرنامج من التفاع ل م ع الكائن ،و تتض من
الرسالة املعامالت التي تتطلبها ال methodsألداء مهمتها.
الكائنات Objects
مالحظاتُ - :ي عتبر الشكل السابق جملة تكوين كائن.
-يمكن ان ال تحتوي جملة تكوين كائن على معامالت ،argumentو في هذه الحالة ال يتم تمرير أي
بيانات الى موقع ذاكرة الكائن.
-يمكن تكوين أكثر من كائن من نفس ال classفي نفس السطر و ُي فصل بينها بالفاصلة كما في
; Class-name object-name1, object-name2,……,object-nameN الشكل التالي:
ثم يتم تكوين كل كائن على حدة كما في الشكل التالي:
املؤثر this
ُي ستخدم املؤثر thisفيما يلي:
حل مشكلة االسماء املتش ابهة ،حيث يقترن املؤثر thisمع اسم املتغير العضو member
.variable
استدعاء دالة بناء ،حيث يمكن لدالة بناء ان تستدعي دالة بناء اخرى بشرط ان تكون
اول جمل ة في دالة البناء االخرى جملة االس تدعاء .و يمكن ان تحتوي جملة االستدعاء
على معامالت argumentsكما في الشكل التالي:
; )معامالت (This.
classes and objects
عن د تكوين برنامج classيتم حج ز موقع في ال ذاكرة له ذا classيحت وي على كل
الخصائص و دوال البناء و الدوال التي تصف خصائص و سلوك الكائن املراد تكوينه
من هذه .class
ال تحتوي classعلى قيمة للمتغيرات إال املتغيرات من نوع staticفيتم تخزينها في موقع
ذاكرة .class
عند تكوين كائن من نوع classمعين ،فإن اسم الكائن هو متغير مرجعي reference
variableتحت وي على العن وان ال ذي يتم عن ده تخ زين بيان ات الكائن بحيث أن لكل
كائن بياناته الخاصة به.
عن د التص ريح بمتغ ير من ن وع staticف إن الكائن يحج ز موقع له ا يحت وي على عن وان
هذه املتغير ال staticاملوجودة في موقع ذاكرة ال classليشير اليها.
يمكن ألي كائن ان يغير في قيمة املتغير من نوع static
تمرين عملي
-صمم classلوصف كل من الكائنات البرمجية التالية:
موظف
سيارة
كتاب
-مث ال :اكتب برنامج يق وم بإنش اء تصنيف ص ندوق يحت وي على ثالث متغ يرات،
تمث ل الط ول ،الع رض و االرتف اع و دال ة تق وم بحس اب حجم الص ندوق ،ثم قم
بإنشاء كائنان من نوع الصندوق و احسب حجم كالهما و اطبع الحجمان.
مخطط التصانيف UML class diagram
ُي ستخدم مخطط التصانيف في وصف خصائص و سلوك الكائن املراد تكوينه.
تس اعد مخطط ات UMLمص ممي األنظم ة على تحدي د نظ ام بطريق ة م وجزة و رسومية و
مستقلة عن لغة البرمجة ،قبل أن يقوم املبرمجون بتنفيذ النظام بلغة برمجة معينة.
سنستخدم غالًب ا الرسوم التخطيطية لفئة UMLلتلخيص سمات التصيف و عملياته.
في ، UMLيتم نمذجة كل تصنيف في مخطط تصنيف كمستطيل بثالث أجزاء.
مخطط التصانيف UML class diagram
القسم العلوي :يحتوي على أسم التصنيف Classفي املنتصف بخط غامق.
القسم األوسط :يحتوي على اسم صفة التصنيف و الذي يتوافق مع متغير الحالة الذي
يحمل نفس االسم في جافا.
القسم السفلي :يحتوي على عمليات التصنيف (السلوك)مثال(.)setName - getName
رسائل الخطأ في بيئة الجافا
Error messages in Java netBeans
يوجد نوعان من االخطاء عند كتابة الكود و هما:
اخط اء لغوية :هي االخط اء ال تي تظه ر عن د وجود خط أ في جمل ة أو تعليم ة البرمج ة وفق
لغة البرمجة ،و عادة ما يظهر خط احمر تحت السطر الذي يحتوي على خطأ لغوي كما
في املثال التالي:
تابع ..رسائل الخطأ في بيئة الجافا
عند تنفيذ البرنامج الذي يحتوي على اخطاء لغوية تظهر الرسالة التالية:
في ه ذه الحال ة ،البرنامج صحيح و لكن compilerال يس تطيع الوصول الى main
،classل ذلك نق وم بالض غط على ايقونة (كوب القه وة) بج انب اس م projectثم
نض غط على ال زر االيمن للف أرة او ال زر االيمن للوحة املف اتيح و نخت ار propertiesثم
نختار runو بعدها نقوم بمسح اسم الدالة بما فيه النقطة كما في الفقرة التالية.
تابع ..رسائل الخطأ في بيئة الجافا
تابع ..رسائل الخطأ في بيئة الجافا