جامعة سبها – كلية تقنية املعلومات اإلجابة النموذجية لالمتحان النصفي األول :ملقرر 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 }