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 2024