Cs602 java programming fall2016 محاضرة 4

Page 1

‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫‪ .8‬الحزم ‪packages‬‬ ‫ُ‬ ‫الحزمة عبارة عن مجلد ‪ directory‬تنظم فيها ال‪ classes‬املرتبطة مع بعضها البعض بحيث كل‬ ‫مجموعة من هذه ال‪ classes‬لها وظائف معينة و مشتركة‪ .‬و تمتاز لغة جافا باحتوائها على عدد‬ ‫هائل من ال‪ classes‬املرتبة في حزم ‪ .packages‬و من اهمها‪:‬‬ ‫*‪java.util.‬‬ ‫*‪javax.swing.‬‬ ‫*‪java.awt.‬‬ ‫*‪java.io.‬‬ ‫و غيرها من الحزم العديدة التي تصاحب بيئة ‪ java‬أو تتواجد من قبل املبرمجين‪ .‬و تسمح هذه‬ ‫الحزم بإعادة االستخدام ل‪ classes‬املوجودة فيها ضمن العديد من التطبيقات حسب الحاجة‪.‬‬ ‫و قبل استخدام أي ‪ class‬مرة أخرى في أي برنامج‪ ،‬يجب وضعها في حزمة وفق الخطوات املبينة في‬ ‫الفقرة التالية‪.‬‬ ‫‪‬‬ ‫‪.1‬‬ ‫‪.2‬‬

‫‪.3‬‬

‫تكوين الحزمة ‪package creation‬‬ ‫التصريح ب‪ class‬على أنها ‪public‬‬ ‫اختيار اسم وحيد ل‪ ،package‬ثم إضافة هذا التصريح الى امللف املصدر الذي يحتوي على‬ ‫‪ ،public class‬بحيث أن لكل ملف مصدر هناك تصريح باسم ‪ package‬واحد و واحد فقط‪ .‬و‬ ‫يجب ان يسبق التصريح بالكلمة املحجوزة ‪ package‬كل جملة في البرنامج (امللف املصدر)‪.‬‬ ‫ترجمة التصنيف ‪compile the class‬‬ ‫حتى يمكن تضمين هذه الحزمة في البرنامج املناسب‪.‬‬ ‫;‪2 package com.CS602‬‬

‫‪Public class Book‬‬ ‫{‬ ‫‪……….‬‬ ‫………‬ ‫}‬ ‫‪ .4‬تضمين الحزمة في البرنامج املراد استخدام ال‪ class‬فيه‪ ،‬كما هو موضح في املثال التالي‪:‬‬ ‫;‪import com.CS602‬‬ ‫‪1‬‬

‫‪31‬‬


‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫‪ .9‬الوراثة ‪inheritance‬‬ ‫ً‬ ‫هي عملية إنشاء ‪ class‬جديدة تأخذ خصائص ‪ class‬موجودة مسبقا (وراثة) و تضيف خصائص‬ ‫أخرى لها حسب الحاجة‪.‬‬ ‫ً‬ ‫ُ‬ ‫‪ ‬تسمى ‪ class‬املوجودة مسبقا (القديمة) ب‪ ،superclass‬أما ال ‪class‬الجديدة فتسمى‬ ‫ب‪.subclass‬‬ ‫‪ ‬كل ‪ class‬جديدة (‪ )subclass‬ترث من ال‪ class‬القديمة (‪ )superclass‬كل خصائصها (بياناتها)‬ ‫و سلوكها (دوالها)‪.‬‬ ‫‪ ‬في لغة جافا‪ ،‬كل ‪ subclass‬جديدة ترث من ‪ superclass‬قديمة واحدة فقط‪ .‬و ليس كما في‬ ‫لغة ‪ C++‬التي تتميز بالوراثة املتعددة‪.‬‬ ‫ً‬ ‫‪ ‬في الغالب‪ subclass ،‬يكون اكبر حجما من ‪ ،superclass‬لكن ل‪ superclass‬كائنات أكثر‪.‬‬ ‫‪ ‬تتمثل أهمية الوراثة في لغة جافا بالتالي‪:‬‬ ‫‪ .1‬عدم تكرار إعادة كتابة الكود‪.‬‬ ‫‪ .2‬سهولة تعديل البرنامج‪.‬‬ ‫‪ .3‬امكانية انشاء ‪ class‬أخرى من ‪ class‬قديمة سبق انشائها من قبل مبرمجين آخرين‪.‬‬ ‫‪ ‬خطوات تكوين ‪ subclass‬من ‪:superclass‬‬ ‫ً‬ ‫أوال‪ :‬استخدام الكلمة املحجوزة ‪ extends‬كما في الشكل التالي‪:‬‬ ‫اسم التصنيف‬ ‫اسم التصنف‬ ‫كلمة محجوزة ‪ subclass‬كلمة محجوزة معدل الوصول (اختياري ‪)optional‬‬ ‫‪superclass‬‬

‫‪Access modifier‬‬ ‫‪class‬‬ ‫‪class-name extends class-name‬‬ ‫{‬ ‫‪…………………..‬‬ ‫}‬ ‫ً‬ ‫ثانيا‪ :‬استخدام الكلمة املحجوزة معدل الوصول ‪ protected‬مع املتغيرات و الثوابت املوجودة في‬ ‫‪ superclass‬لكي تسمح لكل ‪ subclass‬منها بالوصول اليها‪.‬‬ ‫ً‬ ‫ثالثا‪ :‬استخدام الكلمة املحجوزة ( )‪ super‬الستدعاء دالة بناء موجودة في ال‪ superclass‬من قبل‬ ‫ُ‬ ‫دالة بناء موجودة في ‪ subclass‬و امكانية تمرير قيم (بيانات) إليها‪ ،‬كما يمكن أن تستخدم‬ ‫ال‪ super‬للتميز بين متغيرات ‪ superclass‬و ‪ subclass‬املتشابهة‪.‬‬

‫‪32‬‬


‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫مالحظات‪:‬‬ ‫‪ .1‬كل ‪ object‬من ‪ subclass‬هو ‪ object‬من ‪.superclass‬‬ ‫‪ .2‬يمكن أن يكون ل‪ superclass‬أكثر من ‪ ،subclass‬و لكن ليس العكس‪.‬‬ ‫‪ .3‬يمكن تمثيل العالقة بين ال‪ superclass‬و ‪ subclass‬ب‪.is relationship‬‬ ‫‪ .4‬كل ‪ class‬يمكن أن ترث من ال‪ class‬التي تسبقها (التسلسل الهرمي)‪.‬‬ ‫‪ .5‬تعتبر ال‪ object class‬هي ال‪ class‬االم الرئيسية املوجودة في مكتبة جافا (‪)superclass‬‬ ‫ألي ‪ class‬في البرنامج في حالة عدم تحديد ‪ .superclass‬و أي ‪ class‬في برنامج جافا ترث‬ ‫ً‬ ‫ضمنيا من ‪ object class‬الرئيسية ‪.‬‬ ‫‪ .6‬تحتوي ‪ object class‬الرئيسية على مجموعة من الدوال التي يمكن استخدامها في أي‬ ‫ُ‬ ‫برنامج لتنفيذ غرض معين‪ .‬و من اهمها )(‪ toString‬التي تستخدم لعرض مجموعة من‬ ‫البيانات لكائن ما‪ ،‬و هي تشبه الشكل العام لدالة العرض ‪ ،printf‬و الشكل العام لها هو‪:‬‬ ‫)(‪public String toString‬‬ ‫{‬ ‫;) اسماء املتغيرات‪ “,‬وصف صيغة العرض“(‪return String.format‬‬ ‫}‬ ‫ً‬ ‫و يتم استدعاء الدالة )(‪ toString‬ظاهريا باستخدم الشكل التالي‪:‬‬ ‫دالة العرض نقطة اسم الكائن‬ ‫;)(‪Object-name.toString‬‬

‫‪33‬‬


‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫‪ ‬الدوال الزائدة ‪overriding methods‬‬ ‫يمكن لدالة ما أن تتواجد في ‪ superclass‬و ‪ subclass‬بنفس االسم و بنفس البارامترات على أن‬ ‫تستدعي الدالة املوجودة في ‪ subclass‬نفسها (املوجودة في ‪ ) superclass‬و ذلك من أجل أداء مهمة‬ ‫عامة (الي كائن كان) ثم تكمل الدالة املوجودة في ‪ subclass‬مهمة خاصة (تتعلق بالكائن املكون‬ ‫ُ‬ ‫من هذه ‪ .) subclass‬هذه الدوال تسمى ب‪.overriding methods‬‬ ‫ُ‬ ‫‪ ‬تستخدم ‪ super‬الستدعاء الدالة املوجودة في ‪ superclass‬بشرط ان يتم االستدعاء من‬ ‫دالة في ‪ subclass‬بنفس االسم‪.‬‬ ‫ُ‬ ‫ُ‬ ‫‪ ‬تسمى العملية السابقة ب‪ ،overriding‬بينما تسمى هذه الدوال ب‪.overriding methods‬‬ ‫‪ ‬الستدعاء دالة ‪ ،overriding‬نتبع الشكل التالي‪:‬‬ ‫اسم الدالة نقطة كلمة محجوزة‬ ‫معامالت(اختيارية)‬ ‫; ) ‪Super.method-name ( parameters‬‬ ‫**سؤال املحاضرة‪:‬‬ ‫شركة بها نوعان من املوظفين‪ ،‬موظف عمولة حيث يتقاض ى مبلغ من املال (عمولة) مقابل‬ ‫تسويق منتج الشركة‪ ،‬و موظف مرتب و عمولة حيث يتقاض ى مرتب من الشركة مع مبلغ من‬ ‫ً‬ ‫ً‬ ‫املال (عمولة) مقابل تسويق منتج الشركة أيضا‪ .‬اكتب برنامج بلغة جافا مستخدما‬ ‫(‪ )inheritance & overriding method‬يقوم بالتالي‪:‬‬ ‫‪ .1‬عرض بيانات كل موظف‪.‬‬ ‫‪ .2‬حساب و عرض اجمالي ما يتقاضاه كل موظف اذا علمت ان نسبة العمولة هي ‪.0.1‬‬ ‫تحليل سؤال البرمجة‪:‬‬ ‫ً‬ ‫أوال‪ :‬تحديد ‪input & output‬‬ ‫بما أن املطلوب االول في السؤال هو عرض بيانات كل موظف‪ ،‬أذن البد من تحديد هذه‬ ‫البيانات و ادخالها بالطريقة املناسبة لعرضها على الشاشة‪.‬‬ ‫‪Input‬‬ ‫‪output‬‬ ‫البيانات االساسية لكل موظف‬ ‫البيانات االساسية لكل موظف‬ ‫‪Firstname‬‬ ‫‪firstname‬‬ ‫‪Lastname‬‬ ‫‪lastname‬‬ ‫‪Socialno‬‬ ‫‪socialno‬‬ ‫‪sale‬‬ ‫‪sale‬‬ ‫‪Totals‬‬ ‫?‬ ‫‪34‬‬


‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫ً‬ ‫وفقا للمطلوب االول‪ ،‬فإن البيانات االساسية هي‪ :‬االسم االول‪ ،‬االسم االخير‪ ،‬رقم الضمان‬ ‫االجتماعي‪ ،‬مقدار املبيعات‪ ،‬اجمالي ما يتقاضاه‪.‬‬ ‫ً‬ ‫ً‬ ‫ثانيا‪ :‬تحديد املعالجة‪ ،‬بمعنى معرفة ما إذا كان هناك ‪ output‬يكون نتيجة عملية ما (مثال‬ ‫عملية حسابية)‪ .‬بالنظر الى السؤال الحالي‪ ،‬نجد ان اجمالي ما يتقاضاه هو املطلوب الثاني في‬ ‫السؤال‪ .‬إذن‪ ،‬البد من عملية ما (سلوك ُيترجم الى دالة ‪ )method‬اليجاد اجمالي ما يتقاضاه‬ ‫كل موظف ثم عرضه على الشاشة‪.‬‬ ‫العملية هي‪:‬‬ ‫‪ .1‬اجمالي ما يتقاضاه موظف العمولة = مقدار املبيعات (‪*)sale‬النسبة (‪)rate‬‬ ‫‪ .2‬اجمالي ما يتقاضاه موظف املرتب و العمولة=‬ ‫مقدار املبيعات (‪*)sale‬النسبة (‪ + )rate‬املرتب (‪.)salary‬‬ ‫ً‬ ‫ثالثا‪ :‬تحديد طريقة البرمجة‪ :‬بما ان لغة البرمجة هي جافا‪ ،‬إذن‪ ،‬نوع البرمجة هي ‪OOP‬‬ ‫ً‬ ‫بناءا على ذلك‪ ،‬يتم اتباع خطوات محددة لكتابة برنامج ‪ OOP‬كما يلي‪:‬‬ ‫‪ .1‬تحديد الكائنات‪ :‬لدينا نوعان من املوظفين‪ .‬إذن‪ ،‬نحتاج لكائنين‪ :‬كائن موظف عمولة‪ ،‬و‬ ‫كائن آخر موظف مرتب و عمولة‪.‬‬ ‫‪ .2‬لكل كائن نموذج خاص به (‪)class‬‬ ‫‪ .3‬الحظ ان الكائنين يتفقان في البيانات االساسية ويختلفان في اجمالى ما يتقاضاه كل‬ ‫منهما‪.‬‬ ‫‪ .4‬املطلوب في البرنامج استخدام الوراثة (لتجنب تكرار البيانات االساسية)‬ ‫ً‬ ‫‪ .5‬مطلوب أيضا استخدام الدوال الزائدة (لتجنب تكرار العمليات الحسابية)‪.‬‬ ‫**كتابة ‪classes‬‬ ‫**كتابة البرنامج الرئيس ي‬

‫‪35‬‬


‫‪CS602: Java Programming‬‬

‫‪Fall2016‬‬

‫‪Dr. Mabroka A.M.‬‬

‫‪ .01‬تعدد االشكال ‪polymorphism‬‬ ‫ً‬ ‫ُ‬ ‫يمكن لدالة ما أن تؤدي اكثر من وظيفة وفقا السم الكائن الذي يستدعيها‪ .‬هذه العملية تسمى‬ ‫بتعدد االشكال ‪.polymorphism‬‬ ‫‪ ‬بما ان كل كائن من ‪ subclass‬هو كائن من ‪ ،superclass‬أذن‪ :‬يمكن أن يكون هناك عدد‬ ‫كبير من الكائنات ‪ objects‬املتنوعة (كل كائن من ‪ subclass‬مختلفة) تنتمي الى نفس‬ ‫‪.superclass‬‬ ‫‪ ‬يمكن ان تشير متغيرة ‪ object‬من نوع ‪ superclass‬الى كائن من نوع ‪.subclass‬‬ ‫‪ ‬بما ان كل ‪ object‬من ‪ subclass‬يمكن التعامل معه على انه ‪ object‬من ‪ ،superclass‬إذن‪:‬‬ ‫يمكن وضع هذه الكائنات املختلفة مع بعضها البعض (مصفوفة من نوع ‪ )superclass‬بحيث‬ ‫يدل كل عنصر فيها على كائن ما داخل املصفوفة من ‪ subclasses‬التي ترث من هذه‬ ‫‪.superclass‬‬ ‫‪ ‬إذن‪ ،‬يمكن ملتغير من نوع ‪( superclass‬اسم املصفوفة) أن يحتوي (او يشير الى ) أكثر من نوع‬ ‫من كائنات من ‪ subclasses‬مختلفة‪ ،‬هذا املتغير حيئذ ُيسمى بمتغير متعدد االشكال‪.‬‬ ‫‪ ‬كما يمكن لدالة ما ان تقوم بعدة مهام مختلفة حسب نوع الكائن الذي يستدعيها‪ ،‬و تسمى‬ ‫هذه الدالة حيئذ بدالة متعددة االشكال‪.‬‬ ‫مالحظات‪:‬‬ ‫‪ .1‬تتم عملية تخصيص الكائن ملتغير كائن آخر من نوع ‪ superclass‬اثناء زمن التنفيذ‪ ،‬و‬ ‫ليس عند عملية الترجمة (‪.)compilation‬‬ ‫‪ .2‬باستخدام الدوال ‪ ،overriding‬يمكن التعامل مع املتغيرات الخاصة املصرح بها داخل‬ ‫ال‪.superclass‬‬ ‫‪ .3‬نوع الكائن هو الذي يحدد الدالة املراد استدعائها‪.‬‬ ‫**سؤال املحاضرة‬ ‫أكتب برنامج بلغة الجافا يحاكي حركة حيوانات (اسد بري‪ ،‬حمامة طائر‪ ،‬سمك السردين)‬ ‫ليحسب املسافة التي يقطعها كل حيوان في زمن قدره ن‪ ،‬ثم يعرض بيانات كل حيوان و املسافة‬ ‫ً‬ ‫املقطوعة‪ ،‬مع خصم حجم الحيوان من أجمالي املسافة (مستخدما تعدد االشكال‬ ‫‪.)polymorphism‬‬

‫‪36‬‬


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.