אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2025 · קיץ מועד ב · שאלה 5כל שאלות המבחן ←
תכנות מונחה עצמים›ממשקים

חברת סטארטאפ מפתחת מערכת לניהול שירותי רשת. המערכת כוללת ממשקים ומחלקות המייצגים סוגים שונים של שירותים ויכולותיהם. לפניכם תרשים היררכיה המתאר את הקשר בין מחלקות וממשקים:

<Interface> IConnectable            <Interface> IDataStream
  void connect(String p)              void send(String s)
  void disconnect()                   String receive()
                                       boolean isConnected()

DatabaseService                     <Interface> INetworkSevice
  void runQuery(String query)         void request(String r)
  void backUpDataBase()

WebService
  void logRequest(String req)
  void setTimeOut(int secs)

StreamingService
  void configureBuffer(int size)
  void optimizeStream()

הקשרים בתרשים (חץ רציף – קשר ירושה, חץ מקווקו – קשר מימוש):

  • הממשק INetworkSevice יורש מהממשק IConnectable ומהממשק IDataStream (שני חיצי ירושה).
  • המחלקה DatabaseService מממשת את IConnectable ואת IDataStream.
  • המחלקה WebService מממשת את IDataStream.
  • המחלקה StreamingService יורשת מ-WebService ומממשת את INetworkSevice. נתונים 12 קטעי קוד. ציינו עבור כל אחד מהם אם הוא תקין או שגוי. אם הקוד שגוי, יש לפרט ולנמק מדוע ולציין מה סוג השגיאה – שגיאת קומפילציה או שגיאת זמן ריצה. אין קשר בין הקטעים!
  1. IConnectable c1 = new WebService(); c1.connect("api.com"); c1.send("hello");

  2. IDataStream d1 = new StreamingService(); d1.connect("stream.com");

  3. StreamingService s1 = new StreamingService(); s1.connect("video.com"); s1.request("play video"); s1.optimizeStream();

  4. INetworkService n1 = new StreamingService(); n1.send("start stream"); n1.configureBuffer(1024);

  5. WebService w1 = new StreamingService(); w1.receive(); w1.logRequest("get status");

  6. IConnectable c2 = new StreamingService(); c2.disconnect(); c2.send("ping");

  7. IConnectable c3 = new DatabaseService(); c3.connect("db.com"); c3.runQuery("SELECT * FROM users;"); ((DatabaseService) c3).backupDatabase(); System.out.println(((DatabaseService) c3).receive());

  8. INetworkService n2 = new DatabaseService(); n2.connect("db2.com");

  9. IConnectable c4 = new WebService(); ((DatabaseService) c4).runQuery("DROP TABLE posts;");

  10. StreamingService s2 = new WebService();

  11. INetworkService n3 = new WebService();

  12. IConnectable[] connections = new IConnectable[2]; connections[0] = new WebService(); connections[1] = new DatabaseService(); ((StreamingService) connections[0]).optimizeStream();

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי