Java_Midterm_Answers_92_Spring.pdf

‫دانشکده مهندسی کامپیوتر‬
‫نترم برنامه نویسی پیشرفته‬
‫خ امتحان میا ت‌‬
‫پاس ت‌‬
‫استاد صفرنژاد‬
‫بهار ‪۹۲‬‬
‫‪.۱‬‬
‫ ساهای دیگر است که بیان می کند که کل س ‪ x‬الف‪ .‬خیر‪ .‬یک واسط در واقع قراردادی بین یک کل س مثل‬
‫قابلیتهای ‪ x‬و کل ت‌‬
‫در واسط وجود داشته باشد‪ ،‬پیاده سازی این فیلد کمکی به کلسهای دیگر نمیکند ‪ private‬مشخصی دارد‪ .‬اگر فیلد یا متد‬
‫‪.‬با مفهوم قرارداد بودن واسط در تضاد است ‪ private‬چون به آن دسترسی ندارند‪ .‬بنابراین داشتن فیلد یا متد‬
‫ب‪ .‬توضیح پکیج!‬
‫یتوان‬
‫ج ‪ .‬چندریختی باعث میشود که کلسهای مختلف یک قابلیت ثابت را به روشهای مختلف پیاده سازی کنند‪ .‬به این ترتیب‪ ،‬م ت‌‬
‫ ساها اضافه کرد‪ ،‬بدون این که نگران نحوت‌هی پیاده سازی آن‬
‫کلسهای جدیدی با یک قابلیت مشخص به یک سلسلت‌همراتب از کل ت‌‬
‫ ساها موجود باشیم‪ .‬به عبارت دیگر‪ ،‬چندریختی به ما اجازه میداهد که دید سطح بال نسبت به سیستم داشته باشیم و‬
‫قابلیت در کل ت‌‬
‫ ساهای مختلف‬
‫یک قابلیت مشخص )به شکل امضای یک متد( را بدون بیان جزئیات پیاده سازی آن ‪-‬که ممکن است در کل ت‌‬
‫متفاوت باشد‪ -‬در سیستم تعریف کنیم‪.‬‬
‫د‪.‬‬
‫;‪String s=null‬‬
‫;)‪char c = s.charAt(1‬‬
‫اهنگامی که یک ‪ Object‬تعریف کرده باشیم ولی آن را مقدارداهی )‪ (new‬نکرده باشیم ویک متد غیراستاتیک آن را صدا بزنیم‬
‫یداهد‪.‬‬
‫این ‪ Exception‬رخ م ت‌‬
‫‪.۲‬‬
‫دو خطای زیر در کد وجود دارد‪:‬‬
‫‪ :instanceCount ++‬دسترسی غیرمجاز به فیلد غیراستاتیک در یک تابع استاتیک‪.‬‬
‫●‬
‫‪ ;strangeWeight += factor / fromIndex‬خطای تقسیم بر صفر‪ ،‬ممکن است ‪ fromIndex‬صفر‬
‫●‬
‫شود‪.‬‬
‫‪.۳‬‬
‫الف‪ .‬بهتر است متغیراها ‪ private‬باشند و با ‪ getter‬و ‪ setter‬مورد دسترسی قرار گیرند‪ ،‬در حالت فعلی‪ ،‬اهر کلسی‬
‫ناها را مقدارداهی کرد‪ ،‬تغییر داهد که در این صورت این متغیراها گویای‬
‫یتواند این متغیراها را بعد ازاین که تابع )(‪ play‬آ ت‌‬
‫م ت‌‬
‫نتیجت‌هی بازی نخوااهند بود‪.‬‬
‫دانشکده مهندسی کامپیوتر‬
‫نترم برنامه نویسی پیشرفته‬
‌‫خ امتحان میا ت‬
‌‫پاس ت‬
‫استاد صفرنژاد‬
۹۲ ‫بهار‬
.‫ب‬
public void play(){
rounds++;
Random dice1 = new Random();
Random dice2 = new Random();
int n1= dice1.nextInt(6)+1;
int n2= dice2.nextInt(6)+1;
int point;
int n=n1+n2;
if(n==11 || n==7){
won=true;
}else if (n==2 ||n==3 || n==12){
won=false;
}else{
point=n;
while(true){
rounds++;
n1=dice1.nextInt(6)+1;
n2=dice2.nextInt(6)+1;
if(n1+n2==point){
won=true;
break;
}else if(n1+n2==7){
won=false;
break;
}
}
}
}
.‫ج‬
public GameAnalysis() {
gamesPlayed = new ArrayList<Game>(); (1/5)
for(int i=0;i<N;i++){
Game g = new Game(); (1/5)
g.play(); (1/5)
gamesPlayed.add(g); (1/5)
}
}
void reportAvgRounds(){
double avgWon=0;
int wonCount=0;
for(int i=0;i<N;i++){
Game g = gamesPlayed.get(i);
if (g.won) {
.‫د‬
‫دانشکده مهندسی کامپیوتر‬
‫نترم برنامه نویسی پیشرفته‬
‌‫خ امتحان میا ت‬
‌‫پاس ت‬
‫استاد صفرنژاد‬
۹۲ ‫بهار‬
wonCount++;
avgWon+=g.rounds;
}
}
avgWon=avgWon/wonCount;
System.out.println("Average rounds of games won is "+avgWon);
}
.‫ نمره‬۲ ‫ اهر مورد‬:‫ خروجی‬.۴
0 0
0 ۲0
۳ ۲۴
.۵
abstract class Shape {
private String color;
private int square;
public Shape(String color, int square) {
this.color = color;
this.square = square;
}
public String getColor() {
return color;
}
public int getSquare() {
return square;
}
}
interface Beautiful { (1)
void attract(); (1)
}
class Gerdi extends Shape implements Beautiful { (2)
public static final String Type = "ashkale hendesi"; (1)
private String sample; (1)
public Gerdi(String color, int py, String sample) { (1)
super(color, py); (1)
this.sample = sample;
}
public Gerdi(String color, int square) { (1)
super(color, square); (1)
‫دانشکده مهندسی کامپیوتر‬
‫نترم برنامه نویسی پیشرفته‬
‌‫خ امتحان میا ت‬
‌‫پاس ت‬
‫استاد صفرنژاد‬
۹۲ ‫بهار‬
}
public void attract() { (1)
}
}
class Segush extends Shape { (1)
public Segush(String color, int square) { (1)
super(color, square); (1)
}
}