2011 Feb 6
אוניברסיטת בר אילן – מדעי המחשב
מבחן בתכנות מתקדם ( )98-012מועד א
הנחיות כלליות
רשמו תשובות קצרות ומדוייקות.
משך הבחינה שעתיים.
יש לענות על כל השאלות.
בהצלחה!
.1עבור אפלקצית )" (Desktop Applicationדסק חדשות "360מהו התיכון ) (High Level Designהמוצע
בהתחשב בנתונים הבאים:
האפליקציה מציגה dashboardשל חדשות במספר חלונות מסוגים שונים .חלון חדשות כלליות,
חלונות לפי נושאים ניתנים לקינפוג.
המערכת מציגה חלון מפת עולם עם סימונים של חדשות ותקציר קצר כ . tooltip
המערכת "מקשיבה" למספר מקורות מידע (מושכת עדכונים) :אתרי , Webוחיפושי . Twitter
ניתן לבצע שמירה כ PDFהמהווה מעין עיתון של תמונת המצב העכשוית.
ממשק המשתמש זמין ופעיל תמיד (גם בזמן שמירה/יצירת ה .) PDF
נדרשת יכולת הרחבה לאתרי חדשות נוספים ומקורות מידע נוספים .כמו כן צפויים תקונים
כשאתרים משתנים (יתכן ע"י צד שלישי).
.i
.ii
.iii
מהו סרטוט המערכת ופריסתה לתתי מערכות (ומה הם שיקולי הDesign Pattern & Application -
.) Pattern
תכנון מקביליות ( - )Multi-taskingסרטוט אינטראקציה ושיקולי התכנון.
כיצד בדיוק (לוגית ופיזית) תמומש יכולת ההרחבה לטעינה/שמירה בפורמטים שונים (וכיצד בפועל
לאחר שהתוכנה הותקנה תתבצעה ההרחבה ע"י צד שלישי).
.2הסבירו והדגימו בקצרה (פסקה):
עקרון העדפת הרכבה על ירושה (. )Prefer composition over inheritance
.i
Composite design pattern
.ii
inlining / Inlineב C++וב - Javaהדומה והשונה.
.iii
תהליך יצירת processמקובץ ריצה עד הרצת ה . main
.iv
: נתון הממשק הבא.3
public interface Command {
public void execute();
}
תחל רק לאחרCommand כך שכל, ע”פ סדר הגעתןCommands שאמור להריץ,וכן נתון הקוד הבא
.שנסתימה זו שהגיעה לפניה
public class CommandExecutor {
static ArrayBlockingQueue<Command> queue=
new
ArrayBlockingQueue<Command>(10);
static volatile boolean active=false;
public static void addCommand(Command c){
queue.add(c);
}
public static void activate() throws Exception{
if(!active){
active=true;
new Thread(){
public void run(){
while(active){
if(!queue.isEmpty())
queue.poll().execute();
}
}
}.start();
} else
throw new Exception("executor already active");
}
public static void deactivate(){
active=false;
}
}
? מהן, בעיות בקוד2 זהו
.תארו את המצב שגורם לכל בעיה
.i
שכתבו את הקוד במחברת הבחינה
.כך ששתי הבעיות שתיארתם יפתרו
.ii
: עבור הקוד הבא.4
?מה אמור היה לעשות הקוד
.i
)2+( ?מהם הבעיות בקוד
.ii
?כיצד ניתן לתקן את הבעיות
.iii
// imports omited
class Entry{
public String word;
public Date creationDate;
public Entry(String w) {word=w;}
public static Entry make(String word){return new Entry(word);}
// code (omitted) to make it a value like: hashCode, equals, comparison etc.
}
public class Prg{
static Set<String> vocabulary= new HashSet<String>();
static Set<Entry> vocabularyWithDates= new HashSet<Entry>();
public static void main(String[] args){
// some code omitted
for(File f:listOfAllBookTextFilesToRead){
String text=readBookFileIntoOneTextString(f);
processText(text);
}
processText("this is is a test is");
//code for doing statistics on vocabulary
}
public static void processText(String text){
String[] words=text.split(" ");
for(String word:words)
if(vocabulary.add(word)){
System.out.println("Added:"+word);
Entry e=Entry.make(word);
vocabularyWithDates.add(e);
e.creationDate=new Date();
}
}
}
© Copyright 2025