Med 1

Page 1

‫جامعة سبها – كلية تقنية املعلومات‬ ‫اإلجابة النموذجية لالمتحان النصفي األول ‪ :‬ملقرر ‪GS301 ، CS602‬‬ ‫السؤال األول ‪:‬‬ ‫‪ .1‬الفرق بين التحميل الزائد ( ‪ ) OVERLOADING‬و ‪. OVERRIDING‬‬ ‫‪ : OVERRIDING‬تعني ان نفس ال ـ ‪ methods‬بنفس األسم موجودة في ‪ superclass‬و ال ـ ‪ subclass‬لكننا نعدل عليها‬ ‫في ‪subclass‬حسب االمر املراد تغييره او تعديله‪ .‬بمعني اخر " عبارة عن السماح للصنف الوارث ‪ subclass‬من‬ ‫اعادة تعريف ‪ methods‬موجود باالب املوروث ‪. " superclass‬‬ ‫تعريف آخر‪:‬‬

‫تعني تعريف الدالة التي ورثها الـ ‪Subclass‬من الـ ‪Superclass‬من جديد‪ ,‬هذه الدالة الجديدة تكون مشابهة‬

‫للدالة الموروثة من حيث الشكل فقط‪ ,‬أي لها نفس اإلسم و النوع و عدد الباراميترات‪ ,‬لكن محتواها مختلف‪.‬‬

‫‪ : OVERLOADING‬اذا كان ال ـ ‪ class‬لها عدة ‪ methods‬بنفس األسم ولكن بمعامالت ‪ parameters‬مختلفة‬ ‫تعرف باسم ‪ : method overloading‬تظهر في نفس ‪ class‬أو ‪ subclass‬لها نفس االسم ولكن‪ ،‬لها معامالت‬ ‫مختلفة‪ ،‬ويمكن ان تكون لها انواع اعادة مختلفة‪.‬‬ ‫ما املقصود بال ـ ‪Java bytecode‬‬ ‫كود جافا الناتج من ترجمة التعليمات البرمجية املكتوبة بلغة الجافا بواسطة ال ـ ‪ compiler‬وال يعتمد علي نظام‬ ‫التشغيل‪.‬‬ ‫السؤال الثاني‪ :‬بناءا علي قواعد البرمجة بلغة جافا ‪ ،‬حول الجمل التالية الي جمل يتمكن مترجم جافا من التعامل‬ ‫معها‪:‬‬ ‫‪ .1‬اشتقاق كائن ‪ s1‬من الصنف ‪ student‬مستخدما الدالة البنائية التي تستقبل األسم األول و الثاني و الرقم‬ ‫;)”‪Student s1=new Student(“Fatma” , “Masoud “, “ 2021061122‬‬ ‫الجامعي‪.‬‬ ‫‪ .2‬بناء دالتين بنائيتين ‪ constructor‬لصنف ‪ Employees‬األولي افتراضية والثانية تستقبل ثالثة من معلومات أي‬ ‫موظف‪.‬‬ ‫‪// default constructor‬‬ ‫{ )(‪public Employee‬‬ ‫;"‪name = "no name‬‬ ‫;‪salary = 800.0f‬‬ ‫;"‪mobile = "09200000‬‬ ‫}‬ ‫‪// overloaded constructor‬‬ ‫{ )‪public Employee (String name, float salary, String mobile‬‬ ‫;‪this.name = name‬‬ ‫;‪this.salary = salary‬‬ ‫;‪this.mobile = mobile‬‬ ‫}‬


‫‪ .3‬دالة ( ‪ ) methods‬تسمح بتغيير قيمة املتغير ‪ private salary‬و الذي من نوع ‪. float‬‬ ‫{ )‪public void setSalary(float salary‬‬ ‫;‪this.salary = salary‬‬ ‫}‬

‫السؤال الثالث ‪ :‬حدد أي من العبارات التالية صحيحة و أيهما خاطئة مع التعديل‪:‬‬ ‫‪ .1‬ال يمكن للصنف الواحد أن يحتوي أكثر من دالة ( ‪ )methods‬لها األسم ذاته ألن الصنف الواحد ال يمتلك‬ ‫سلوكين باسم واحد( ✗ )‪ .‬يمكن ذلك وبشرط اختالف في عدد او نوع ‪ parameters‬فيها‪.‬‬ ‫‪ .2‬دالة ‪ get‬تستخدم في تطبيق األصناف ( ‪ )class‬من أجل استرجاع قيمة املتغيرات العامة ( ✗)‪.‬‬ ‫دالة ‪ get‬تستخدم في تطبيق األصناف ( ‪ )class‬من أجل استرجاع قيمة املتغيرات الخاصة‪.‬‬ ‫‪ .3‬استخدام ‪ JOptionPane‬يعتبر مثاال علي التجريد( ✓ )‪.‬‬ ‫‪ .4‬املتغيرات املحلية نستطيع الوصول إليها داخل ‪ class‬أي من بداية تعريف ‪ class‬وحتى نهاية تعريفه( ✗ )‪.‬‬ ‫املتغيرات املحلية هي املتغيرات املعرفة علي مستوي ‪ block‬أي املقطع وال نستطيع الوصول إليها من خارج ال ‪block‬‬ ‫أي } { ‪ .‬فعندما نخرج من ‪ block‬فانها تدمر من الذاكرة و تنتهي حياتها ‪.‬‬ ‫‪ .5‬مفهوم التركيب ‪ composability‬يعني تجزئة املشكلة الكبيرة الي مشاكل صغيرة يمكن حلها منفصلة( ✗)‪.‬‬ ‫مفهوم التجزئة ‪ modularity‬يعني تجزئة املشكلة الكبيرة الي مشاكل صغيرة يمكن حلها منفصلة‪.‬‬ ‫‪ .6‬جملة التصريح ملصفوفة ذات بعدين هي ‪.)✗ ( int [ ] array1 = new int[3,4 ] :‬‬ ‫جملة التصريح ملصفوفة ذات بعدين هي ‪:‬‬

‫;][][‪int array1‬‬


)‫ (اختر احد السؤالين‬:‫السؤال الرابع‬ : ‫ بحيث ينفذ الرسم التوضيحي التالي‬Time class ‫ انشاء‬.1 Hours Minutes Attributes:‫الخصائص‬ Seconds Period(am,pm) Time setHours(min is 1and maxis 12 ) setMinutes(min is 1and maxis 59 and mor will be hours) Behavior:‫السلوك‬

setSeconds(min is 1and maxis 59 and mor will be minutes) watIsTime(print the time as H:M:S AM/PM) Reset “ rest the time based on user’s choice”

public class Time { private int hour; private int minute; private int second; private String Period; public void setHours( int h) { hour = ( ( h==0 || h ==12) ?12 : h%12 ) ; public void setMinutes( int m) { minute=( ( m==0 || m == 59) ?59:m%59 ) ;} public void setSeconds( int s) { second= ( ( s>0 && s < 59) ? s: s%60 );} public String whatIsTime(){ return String.format("%2d:%2d:%2d",hour,minute,second); } public void restTime() { String type=JOptionPane.showInputDialog("DO YOU WANT TO RESET TIMR? "); if (type.equals("y") || type.equals("Y")){ hour=0; minute=0; second=0; System.out.println("Yes I want to reset time : "+whatIsTime()+Period);} else { System.out.println("No ,I need it : "+ whatIsTime()); } public String getPeriod() { return Period; } }

}


‫‪ .2‬امالء الفراغ في املخطط التالي وفقا ملبادئ البرمجة الشيئية‬ ‫ماهي؟‬ ‫بعبارة بسيطة‪ ،‬الوراثة هي‬ ‫وسيلة لتحديد ‪،new class‬‬ ‫وذلك باستخدام ‪ classes‬تم‬ ‫تعريفها بالفعل‪.‬‬ ‫أو ‪ :‬الوراثة هي القدرة‬ ‫علي إنشاء ‪ class‬من‬ ‫‪ class‬موجود مسبقا عن‬ ‫طريق استدعائه‪.‬‬

‫الوراثة‬

‫لماذا ؟‬ ‫✓ إعادة استخدام األكواد‪)Reusability( .‬‬ ‫✓ تسريع إنجاز المهام‪.‬‬

‫كيف‬

‫✓ تقليل الوقت‪.‬‬

‫لكي تجعل صنفـًا جديدا يرث صنفـًا موجودًا‬ ‫بالفعل كل ما عليك أن تكتب وقت التعريف‬ ‫بعد اسم الصنف الجديد كلمة ‪ extends‬و‬ ‫بعدها اسم الصنف الذي تريد وراثته‬

‫✓ تحقيق لمبدأ تجزئة المشكلة‬ ‫( ‪)Modularization‬‬

‫{ ‪public class sub extends super‬‬ ‫}‬

‫‪ .3‬اطبع نتائج الكود التالي‪:‬‬ ‫‪main Class‬‬ ‫‪// A1 is an object of class A‬‬ ‫……………‪A1.sum(); // Result is ……………12‬‬ ‫……………‪A1.mul(); // Result is ……………9‬‬ ‫;‪A1.y= 4‬‬ ‫)‪A1.x = 2; ✗ ( private‬‬ ‫………………‪A1.mul(); // Result is …………12‬‬ ‫……………‪A1.sum(); // Result is ……………6‬‬

‫‪Class A‬‬ ‫;‪private int x =9‬‬ ‫;‪Public int y =3‬‬

‫{)( ‪public void sum‬‬

‫;))‪System.out.println("sum"+ (x+y‬‬ ‫}‬

‫{)(‪Public void mul‬‬ ‫;‪int x= 3‬‬

‫;))‪System.out.println("Mul"+ (x*y‬‬ ‫}‬


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.