Αντικειμενοστρεφής Προγραμματισμός — Ιούνιος 2021¶
Μεταγραφή των ερωτήσεων πολλαπλής επιλογής από τις φωτογραφίες του υποφακέλου themata_iouniou_2021 (η λυμένη έκδοση και το αρχικό .rar είναι στα επιπλέον πηγές).
207960582_266226078564556_8730135163269370132_n.png¶
Ερώτηση 5 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Αν w1 και w2 είναι οι μεταβλητές που αντιπροσωπεύουν δύο στιγμιότυπα της ίδιας κλάσης, τότε ποιο από τα παρακάτω ισχύει μετά την εκτέλεση της πρότασης w1=w2;
- [ ] Δημιουργείται ένα αντίγραφο του αντικειμένου που αντιπροσωπεύει η w2 και ανατίθεται στην w1.
- [ ] Η w1 αντιπροσωπεύει και αυτή το αντικείμενο της w2.
- [ ] Δημιουργείται ένα αντίγραφο του αντικειμένου που αντιπροσωπεύει η w1 και ανατίθεται στην w2.
- [ ] Κανένα από τα παραπάνω.
207352201_537223673978533_8927295998973219676_n.png¶
Ερώτηση 9 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η ύπαρξη της ίδιας μεθόδου με διαφορετικό σώμα σε υποκλάση μιας κλάσης αποτελεί φαινόμενο
- [ ] υπερκάλυψης μεθόδων
- [ ] υπερφόρτωσης μεθόδων
- [ ] πολυμορφισμού κλάσης
- [ ] και το 1 και το 2
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
208023207_488943415728911_8693247906896610151_n.png¶
Ερώτηση 11 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να συγκρίνει δύο αλφαριθμητικά και να δίνει κατάλληλη έξοδο. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public (1) compString(String s1, String s2)
{
boolean result = (2);
{if result
System.out.println (“Τα αλφαριθμητικά είναι ίσα.”);}
else System.out.println (“Τα αλφαριθμητικά δεν είναι ίσα.”);
}
- [ ] (1): boolean, (2): s1.equals(s2)
- [ ] (1): void, (2): s2.equals(s1)
- [ ] (1): boolean, (2): equals(s1,s2)
- [ ] (1): void, (2): equals(s1,s2)
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
208278765_810461739832639_3518722029065205078_n.png¶
Ερώτηση 12 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται ο παρακάτω κώδικας . Με την εκτέλεσή του θα εμφανιστεί στην οθόνη :
class Exams2
{
int code=40;
void printCode()
{
int code =50;
System.out.println("Code: "+this.code);
}
public static void main (String[] args){
Exams2 e2=new Exams2();
e2.printCode();}
}
- [ ] Code: 40
- [ ] Code: 50
- [ ] Code: 90
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
208970590_490547068698433_1052437552828775457_n.png¶
Ερώτηση 17 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μετά την εκτέλεση του παρακάτω κώδικα στο παράθυρο εξόδου εμφανίζεται :
public class Parent {
public void print()
{
System.out.println("Parent");
}
}
public class Child extends Parent {
public void print()
{
System.out.println("Child");
}
}
public class Main {
public static void main(String[] args)
{
Parent x = new Child();
x.print();
}
}
- [ ] Parent Child
- [ ] Parent
- [ ] Child
- [ ] Child Parent
207340047_401605187858646_5029464783203425304_n.png¶
Ερώτηση 18 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η biggerWindow(Window w) είναι μια μέθοδος στιγμιοτύπου της Window που συγκρίνει το στιγμιότυπο της Window που είναι όρισμά της με το τρέχον αντικείμενο. Θέλουμε να συγκρίνουμε ένα στιγμιότυπο wa με ένα άλλο στιγμιότυπο wb της Window. Ποια από τις παρακάτω προτάσεις είναι σωστή;
- [ ] wa.biggerWindow(wb);
- [ ] wb.biggerWindow(wa);
- [ ] Window.wa.biggerWindow(wb);
- [ ] Και 1 και η 2.
208805342_1244088832678260_6936885947128460109_n.png¶
Ερώτηση 19 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται το παρακάτω πρόγραμμα. Μετά την εκτέλεση της main ποια θα είναι η τιμή της μεταβλητής size του στιγμιοτύπου w1;
class Window
{ public int size = 1; }
class XWindow extends Window {
public XWindow(int x)
{ this.size = x++; }
}
public class RunWindow4
{ public static void main () {
XWindow w1 = new XWindow(4);
System.out.println(w1.size);
}
}
- [ ] 1
- [ ] 2
- [ ] 4
- [ ] 5
209695558_210737260917842_3165204229250580455_n.png¶
Ερώτηση 20 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μετά την εκτέλεση του παρακάτω κώδικα στο παράθυρο εξόδου εμφανίζεται :
class Test4{
private static int count;
Test4() {
count++;
}
static void printCount() {
System.out.print(count+ " ");
}
public static void main(String[] args) {
Test4 T1 = new Test4();
Test4 T2 = new Test4();
Test4 T3 = new Test4();
T1.printCount();
T2.printCount();
T3.printCount();
}
}
- [ ] 1 2 3
- [ ] 3 3 3
- [ ] 1 1 1
- [ ] 2 2 2
208062614_1173857193110336_3564384609085535624_n.png¶
Ερώτηση 22 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ο constructor της παραγόμενης κλάσης καλεί τον constructor της κλάσης βάσης:
- [ ] Άμεσα, μέσα στο σώμα του constructor
- [ ] Άμεσα, με super
- [ ] Άμεσα, στη member initialization list
- [ ] Μπορεί να καλέσει μόνο έμμεσα, τον default
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
209194685_523196839096285_3867932224520468929_n.png¶
Ερώτηση 24 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μπορούμε να έχουμε πολυμορφισμό όταν χρησιμοποιούμε:
- [ ] Δείκτη κλάσης βάσης σε αντικείμενο της κλάσης βάσης
- [ ] Δείκτη παραγόμενης κλάσης σε αντικείμενο της παραγόμενης κλάσης
- [ ] Δείκτη κλάσης βάσης σε αντικείμενο της παραγόμενης κλάσης
- [ ] Δείκτη παραγόμενης κλάσης σε αντικείμενο της κλάσης βάσης
208831008_980722209369552_8002909202440034263_n.png¶
Ερώτηση 28 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μια friend συνάρτηση:
- [ ] Μπορεί να έχει πρόσβαση μόνο σε public members μιας κλάσης
- [ ] Μπορεί να έχει πρόσβαση μόνο σε private members μιας κλάσης
- [ ] Μπορεί να έχει πρόσβαση μόνο σε protected members μιας κλάσης
- [ ] Μπορεί να έχει πρόσβαση σε όλα τα members μιας κλάσης
208348491_168258332020779_3863676805554486028_n.png¶
Ερώτηση 31 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποια είναι σωστή δήλωση για μια συνάρτηση που δέχεται σαν όρισμα ένα δείκτη float, ένα δείκτη σε δείκτη char και επιστρέφει ένα δείκτη σε δείκτη int;
- [ ] int fun(float, char**)
- [ ] int fun(float, char*)
- [ ] int fun(float, char*)
- [ ] int ***fun(*float, **char)
209121169_2973447409540912_6580272982416330511_n.png¶
Ερώτηση 32 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποια είναι η δήλωση της συνάρτησης zero που δέχεται ένα array ακεραίων και δεν επιστρέφει κάποια τιμή;
- [ ] int zero (int []);
- [ ] void zero (int);
- [ ] void zero (int *);
- [ ] int zero (int *);
207520801_2941909132751432_8288545157376532880_n.png¶
Ερώτηση 33 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Πόσο θα είναι το i,j μετά από την εκτέλεση του παρακάτω κώδικα;
int i = 5;
int j = i++;
- [ ] 5, 5
- [ ] 5, 6
- [ ] 6, 5
- [ ] 6, 6
Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.
211320614_494303195208296_234522488197293274_n.png¶
Ερώτηση 39 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποιο είναι το πρόβλημα στον παρακάτω κώδικα;
#include <iostream>
using namespace std;
int main()
{
int c = 0;
if ( ( c = cin.get() ) != EOF )
{
main();
cout << c;
}
}
- [ ] Λείπει ένα } στο τέλος
- [ ] Δεν έχει οριστεί το EOF
- [ ] Θα πρέπει αρχικά c >0
- [ ] Δεν επιτρέπεται αναδρομική κλήση της main
207812255_2997185257271630_1720841357701882906_n.png¶
Ερώτηση 40 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Έστω η παρακάτω πρότυπη κλάση. Ποιο από τα παρακάτω είναι έγκυρη δημιουργία στιγμιοτύπου της κλάσης;
1 template <class T>
2 class mypair {
3 T values [2];
4 public:
5 mypair (T first, T second)
6 {
7 values[0]=first; values[1]=second;
8 }
9 };
10
- [ ]
mypair<int, int> myobject (1, 2); - [ ]
mypair<> myobject (1, 2); - [ ]
mypair<int> myobject (1, 2); - [ ]
mypair<int, int> myobject (1);
207627566_352619556444510_7426918797892505874_n.png¶
Η ύπαρξη πολλών δημιουργών σε μια κλάση αποτελεί φαινόμενο
- [ ] υπερκάλυψης μεθόδων
- [ ] υπερφόρτωσης μεθόδων
- [ ] πολυμορφισμού κλάσης
- [ ] και το 1 και το 2
207628055_176105504488043_4129351623494165615_n.png¶
Αν έχουμε την κλάση Theory και τον παρακάτω κώδικα, τότε οι σχέσεις a==b και b==c είναι αντίστοιχα :
Theory a=new Theory(1,2);
Theory b=new Theory(1,2);
Theory c=new Theory();
c=b;
- [ ] false και true
- [ ] false και false
- [ ] true και true
- [ ] true και false
207728646_530066741452007_7577749452827992619_n.png¶
Η εντολή File f1 = new File (“test.txt”) δημιουργεί
- [ ] ένα byte stream αρχείου
- [ ] ένα αντικείμενο-αρχείο
- [ ] ένα αρχείο άμεσης προσπέλασης
- [ ] κανένα από τα παραπάνω
208194543_537369447306301_8556578198703849275_n.png¶
public class Test2 {
public static void main(String[] args) {
try {
System.out.println("Java");
int i = 0;
int y = 2/i;
System.out.println("Java");
}
catch (RuntimeException ex) {
System.out.println("Java");
}
finally {
System.out.println("Finally block");
}
}
}
- [ ] Java
Java
Java
Finally block - [ ] Java
Java
Finally block - [ ] Java
Java
Java - [ ] Java
Java
208348392_963346657794014_7923332222490594681_n.png¶
Μια κλάση ΔΕΝ μπορεί να έχει ως προσδιοριστή το
- [ ] public
- [ ] private
- [ ] protected
- [ ] final
211237438_490729595335560_9113401992871278597_n.png¶
Αν η κλάση Student είναι άμεση υπερκλάση της MasterStudent, τότε το παρακάτω τμήμα κώδικα
Student s1,s2;
s1=new Student();
s2=new MasterStudent();
- [ ] αποτελεί σωστό κώδικα
- [ ] οδηγεί σε λάθος κατά τη μεταγλωττιση (compile-time error)
- [ ] οδηγεί σε λάθος κατά την εκτελεση (run-time error)
- [ ] Τιποτα από τα παραπάνω
211508299_540099120352757_7281678569758440940_n.png¶
Η λειτουργία ενός νήματος (δηλ. το τί κάνει ένα νήμα) καθορίζεται από
- [ ] την μέθοδο run()
- [ ] την μέθοδο start()
- [ ] το δημιουργό του
- [ ] κανένα από τα παραπάνω
Επιπλέον πηγές χωρίς μεταγραφή εδώ (λύσεις →
2021-06.solutions.md, ή διπλότυπες φωτογραφίες της ίδιας σελίδας):themata_iouniou_2021/209474897_210395457631123_3307774019543090804_n.png,2ExercisesLYSEIS.pdf,themata_iouniou_2021.rar
Λύσεις (🟡 community)
Κατάσταση: 🟡 community Πηγή: λυμένη έκδοση του θέματος (2ExercisesLYSEIS.pdf), προέλευση άγνωστη, πιθανώς φοιτητική
Προσοχή
Η προέλευση της λυμένης έκδοσης δεν είναι γνωστή (δεν προέρχεται από διδάσκοντα ή eClass). Γι' αυτό η κατάσταση είναι community και όχι official. Το αρχείο περιέχει και ερωτήσεις «Ερώτηση n / 10» από ξεχωριστό σύνολο (ενότητα «Προβολή Άσκησης»), που δεν ανήκουν στις 40 ερωτήσεις του θέματος Ιουνίου 2021. Αγνοήστε αυτά τα τμήματα. Σε αρκετές ερωτήσεις υπάρχουν δύο ή και τρεις σημάνσεις [x] (π.χ. 39/40, 40/40, 12/40), ενώ όλες οι ερωτήσεις είναι μίας απάντησης. Ελέγξτε τις σημάνσεις με τη φωτογραφία πριν τις χρησιμοποιήσετε. Οι αριθμοί 4, 11, 12 και 19 εμφανίζονται δύο ή τρεις φορές με διαφορετικό κείμενο. Δεν είναι βέβαιο σε ποια ερώτηση της συνεδρίας αντιστοιχεί κάθε σήμανση. Η ερώτηση για την Student / MasterStudent («αποτελεί σωστό κώδικα» ή «run-time error») έχει στο PDF σήμανση στην τρίτη από τις τέσσερις επιλογές (run-time error). Η σήμανση αντιγράφηκε όπως είναι στο PDF. Κατά τη Java, η ανάθεση s2=new MasterStudent() σε μεταβλητή τύπου Student είναι έγκυρη, οπότε η σήμανση του PDF πρέπει να ελεγχθεί πριν χρησιμοποιηθεί. Η ερώτηση charCount («Ερώτηση 2 / 10») έχει στη μεταγραφή δύο όμοιες γραμμές «i<=s.length()». Η σήμανση μεταφέρθηκε στην επιλογή του PDF με i<s.length() και charAt, ενώ το κείμενο της δεύτερης επιλογής πρέπει να ελεγχθεί στο πρωτότυπο (η εικόνα του PDF είναι χαμηλής ανάλυσης).
Λύσεις — Αντικειμενοστρεφής Προγραμματισμός — Ιούνιος 2021¶
Οι σημάνσεις [x] προέρχονται από το αρχείο 2ExercisesLYSEIS.pdf, μια λυμένη έκδοση του θέματος της εξέτασης. Η μεταγραφή του αρχείου είναι αυτούσια και δεν επαληθεύτηκε με το πρωτότυπο.
2ExercisesLYSEIS.pdf¶
Η λειτουργία ενός νήματος (δηλ. το τί κάνει ένα νήμα) καθορίζεται από
- [x] την μέθοδο run()
- [ ] την μέθοδο start()
- [ ] το δημιουργό του
- [ ] κανένα από τα παραπάνω
Ερώτηση 39 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποιο είναι το πρόβλημα στον παρακάτω κώδικα;
#include <iostream>
using namespace std;
int main()
{
int c = 0;
if ( ( c = cin.get() ) != EOF )
{
main();
cout << c;
}
}
- [ ] Λείπει ένα } στο τέλος
- [ ] Δεν έχει οριστεί το EOF
- [ ] Θα πρέπει αρχικά c > 0
- [x] Δεν επιτρέπεται αναδρομική κλήση της main
Αν η κλάση Student είναι άμεση υπερκλάση της MasterStudent, τότε το παρακάτω τμήμα κώδικα
Student s1, s2;
s1=new Student();
s2=new MasterStudent();
- [ ] αποτελεί σωστό κώδικα
- [ ] οδηγεί σε λάθος κατά τη μεταγλώττιση (compile-time error)
- [x] οδηγεί σε λάθος κατά την εκτέλεση (run-time error)
- [ ] Τίποτα από τα παραπάνω
Ερώτηση 17 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μετά την εκτέλεση του παρακάτω κώδικα στο παράθυρο εξόδου εμφανίζεται :
public class Parent {
public void print()
{
System.out.println("Parent");
}
}
public class Child extends Parent {
public void print()
{
System.out.println("Child");
}
}
public class Main {
public static void main(String[] args)
{
Parent x = new Child();
x.print();
}
}
- [ ] Parent Child
- [ ] Parent
- [x] Child
- [ ] Child Parent
Ερώτηση 19 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται το παρακάτω πρόγραμμα. Μετά την εκτέλεση της main ποια θα είναι η τιμή της μεταβλητής size του στιγμιοτύπου w1;
class Window
{ public int size = 1; }
class XWindow extends Window {
public XWindow(int x)
{ this.size = x++; }
}
public class RunWindow4
{ public static void main () {
XWindow w1 = new XWindow(4);
System.out.println(w1.size);
}
}
- [ ] 1
- [ ] 2
- [x] 4
- [ ] 5
Ερώτηση 12 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται ο παρακάτω κώδικας . Με την εκτέλεσή του θα εμφανιστεί στην οθόνη :
class Exams2
{
int code=40;
void printCode()
{
int code =50;
System.out.println("Code: "+this.code);
}
public static void main (String[] args){
Exams2 e2=new Exams2();
e2.printCode();
}
}
- [x] Code: 40
- [ ] Code: 50
- [ ] Code: 90
public class Test2 {
public static void main(String[] args) {
try {
System.out.println("Java");
int i = 0;
int y = 2/i;
System.out.println("Java");
}
catch (RuntimeException ex) {
System.out.println("Java");
}
finally {
System.out.println("Finally block");
}
}
}
- [ ] Java Java Java Finally block
- [x] Java Java Finally block
- [ ] Java Java Java
- [ ] Java Java
Ερώτηση 22 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ο constructor της παραγόμενης κλάσης καλεί τον constructor της κλάσης βάσης:
- [ ] Άμεσα, μέσα στο σώμα του constructor
- [x] Άμεσα, με super
- [ ] Άμεσα, στη member initialization list
- [ ] Μπορεί να καλέσει μόνο έμμεσα, τον default
Ερώτηση 11 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να συγκρίνει δύο αλφαριθμητικά και να δίνει κατάλληλη έξοδο. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public (1) compString(String s1, String s2)
{
boolean result = (2);
if result
System.out.println ("Τα αλφαριθμητικά είναι ίσα.");
else System.out.println ("Τα αλφαριθμητικά δεν είναι ίσα.");
}
- [ ] (1): boolean, (2): s1.equals(s2)
- [x] (1): void, (2): s2.equals(s1)
- [ ] (1): boolean, (2): equals(s1,s2)
- [ ] (1): void, (2): equals(s1,s2)
Ερώτηση 40 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Έστω η παρακάτω πρότυπη κλάση. Ποιο από τα παρακάτω είναι έγκυρη δημιουργία στιγμιοτύπου της κλάσης;
1 template <class T>
2 class mypair {
3 T values [2];
4 public:
5 mypair (T first, T second)
6 {
7 values[0]=first; values[1]=second;
8 }
9 };
10
- [ ] mypair
myobject (1, 2); - [ ] mypair<> myobject (1, 2);
- [x] mypair
myobject (1, 2); - [ ] mypair
myobject (1);
Η εντολή File f1 = new File (“test.txt”) δημιουργεί
- [ ] ένα byte stream αρχείου
- [x] ένα αντικείμενο-αρχείο
- [ ] ένα αρχείο άμεσης προσπέλασης
- [ ] κανένα από τα παραπάνω
Αν έχουμε την κλάση Theory και τον παρακάτω κώδικα, τότε οι σχέσεις a==b και b==c είναι αντίστοιχα :
Theory a=new Theory(1,2);
Theory b=new Theory(1,2);
Theory c=new Theory();
c=b;
- [x] false και true
- [ ] false και false
- [ ] true και true
- [ ] true και false
Ερώτηση 12 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να συγκρίνει δύο αλφαριθμητικά και να δίνει κατάλληλη έξοδο. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public (1) compString(String s1, String s2)
{
boolean result = (2);
if result
System.out.println ("Τα αλφαριθμητικά είναι ίσα.");
else System.out.println ("Τα αλφαριθμητικά δεν είναι ίσα.");
}
- [ ] (1): boolean, (2): s1.equals(s2)
- [x] (1): void, (2): s2.equals(s1)
- [ ] (1): boolean, (2): equals(s1,s2)
- [ ] (1): void, (2): equals(s1,s2)
Ερώτηση 4 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η ύπαρξη της ίδιας μεθόδου με διαφορετικό σώμα σε υποκλάση μιας κλάσης αποτελεί φαινόμενο
- [x] υπερκάλυψης μεθόδων
- [ ] υπερφόρτωσης μεθόδων
- [ ] πολυμορφισμού κλάσης
- [ ] και το 1 και το 2
Ερώτηση 9 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποια πρόταση ισχύει για το παρακάτω τμήμα κώδικα
class A {
public A(String s) {
}
}
public class B extends A {
}
- [ ] Θα προκληθεί λάθος κατά τη μεταγλώττιση (compile-time error) γιατί η κλάση B δεν έχει εξ ορισμού constructor
- [x] Θα προκληθεί λάθος κατά τη μεταγλώττιση (compile-time error) γιατί ο εξ ορισμού constructor της κλάσης B καλεί τον εξ ορισμού constructor της κλάσης A, αλλά η κλάση A δεν έχει εξ ορισμού constructor.
- [ ] Θα δημιουργηθεί αυτόματα στην κλάση B ο constructor public B(String s) {}
- [ ] Τίποτα από τα παραπάνω
Ερώτηση 19 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να μετρά και να επιστρέφει τον αριθμό των εμφανίσεων του χαρακτήρα c στο αλφαριθμητικό s. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public int charCount (String s, char c)
{
int count=0;
for (int i=0; (1); i++)
{if (2)
count++;}
return count;
}
- [ ] (1): i <= s.length(), (2): (c==s.charAt(i))
- [ ] (1): i <= s.length(), (2): (c==s.charAt(i))
- [x] (1): i < s.length(), (2): (c==s.charAt(i))
- [ ] (1): i < s.length(), (2): (c==s.indexOf(c))
Ερώτηση 36 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποιο είναι το αποτέλεσμα μετά από την εκτέλεση του παρακάτω κώδικα;
1 #include <iostream>
2
3 int
4 main (int argc, const char *argv[])
5 {
6 int a[] = { 1, 2, 3, 4, 5, 6 };
7 std::cout << (1 + 3)[a] - a[0] + (a + 1)[2];
8 }
- [ ] 6
- [ ] 7
- [x] 8
- [ ] 9
Ερώτηση 15 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Τι θα εμφανιστεί στο παράθυρο εξόδου μετά την εκτέλεση του παρακάτω κώδικα;
public class Test1 {
public static void main(String[] args) {
try {p();}
System.out.println("After the method call"); }
catch (NumberFormatException ex)
{ System.out.println("NumberFormatException"); }
catch (RuntimeException ex)
{ System.out.println("RuntimeException"); }
}
static void p() {
String s = "5.6";
Integer.parseInt(s); // Εγείρει NumberFormatException
int i = 0;
int y = 2 / i;
System.out.println("Welcome to Java");
}
}
- [x] Το πρόγραμμα εμφανίζει NumberFormatException.
- [ ] Το πρόγραμμα εμφανίζει NumberFormatException και μετα After the method call.
- [ ] Το πρόγραμμα εμφανίζει NumberFormatException και μετα RuntimeException.
- [ ] Το πρόγραμμα εμφανίζει λάθος κατά τη μεταγλώττιση.
Ερώτηση 11 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Αν ένα αντικείμενο list τύπου ArrayList περιέχει τα στοιχεία {"prasino", "prasino", "kitrino"}. Ποια στοιχεία θα υπάρχουν στο list μετά την εκτέλεση του παρακάτω τμήματος κώδικα;
String element = "prasino";
for (int i = 0; i < list.size(); i++)
if (list.get(i).equals(element))
list.remove(element);
- [ ] {"prasino", "prasino", "kitrino"}
- [ ] {"prasino", "kitrino"}
- [x] {"kitrino"}
- [ ] {}
Ερώτηση 12 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται ο παρακάτω κώδικας
class Student { }
class PhdStudent extends Student {
void phdMethod() {
System.out.println("This is a phdMethod ");
}
}
public class Example {
public static void main(String[] args) {
Student stud = new PhdStudent();
PhdStudent pstud = (PhdStudent)stud;
stud.phdMethod();
}
}
- [ ] Ο κώδικας λειτουργεί κανονικά
- [x] Ο κώδικας μπορεί να διορθωθεί με την αντικατάσταση της εντολής stud.phdMethod(); με την εντολή ((PhdStudent)stud).phdMethod(); λόγω μη έγκυρης αλλαγής τύπου
- [ ] Ο κώδικας μπορεί να διορθωθεί με την αντικατάσταση της εντολής stud.phdMethod(); με την εντολή ((Student)stud).phdMethod();
Μετά την εκτέλεση του παρακάτω κώδικα στο παράθυρο εξόδου εμφανίζεται :
class Test4{
private static int count;
Test4() {
count++;
}
static void printCount() {
System.out.print(count+" ");
}
public static void main(String[] args) {
Test4 T1 = new Test4();
Test4 T2 = new Test4();
Test4 T3 = new Test4();
T1.printCount();
T2.printCount();
T3.printCount();
}
}
- [ ] 1 2 3
- [x] 3 3 3
- [ ] 1 1 1
- [ ] 2 2 2
Ερώτηση 10 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μια κλάση ΔΕΝ μπορεί να έχει ως προσδιοριστή το
- [ ] public
- [ ] private
- [ ] protected
- [x] final
Ερώτηση 5 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ένα νήμα είναι
- [ ] στιγμιότυπο της Runnable
- [ ] στιγμιότυπο υποκλάσης της Runnable
- [x] στιγμιότυπο κλάσης που υλοποιεί την Runnable
- [ ] Κανένα από τα παραπάνω
Ερώτηση 3 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποιο από τα παρακάτω ΔΕΝ ισχύει για το catch block
- [ ] Αφορά τη σύλληψη εξαιρέσεων
- [x] Μόνο ένα catch block μπορεί να ανήκει σε ένα try block
- [ ] Μπορεί να έχουμε περισσότερα του ενός catch block σε ένα try block
- [ ] Τοποθετείται ακριβώς μετά από ένα try block
Ερώτηση 37 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Τι θα τυπώσει ο παρακάτω κώδικας;
1 #include <iostream>
2
3 class Base {
4 virtual void method() {std::cout << "from Base" << std::endl;}
5 public:
6 virtual ~Base() {method();}
7 void baseMethod() {method();}
8 };
9
10 class A : public Base {
11 void method() {std::cout << "from A" << std::endl;}
12 public:
13 ~A() {method();}
14 };
15
16 int main(void) {
17 Base* base = new A;
18 base->baseMethod();
19 delete base;
20 return 0;
21 }
- [ ] from A from Base from A
- [ ] from Base from Base from A
- [ ] from Base from A from Base
- [x] from A from A from Base
Ερώτηση 16 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μετά την εκτέλεση του παρακάτω κώδικα:
public class Parent {
protected void Pprint()
{
System.out.println("Parent");
}
}
public class Child extends Parent {
public void Cprint()
{
System.out.println("Child");
}
}
public class Main {
public static void main(String[] args)
{
Child x = new Child();
x.Pprint();
}
}
- [ ] Θα προκύψει λάθος κατά τη μεταγλώττιση (compile-time error) γιατί το αντικείμενο x δεν μπορεί να καλέσει τη μέθοδο Pprint() γιατί είναι protected.
- [ ] Θα προκύψει λάθος κατά την εκτέλεση (run-time error) γιατί το αντικείμενο x δεν μπορεί να καλέσει τη μέθοδο Pprint() γιατί είναι protected.
- [ ] Εμφανίζεται στο παράθυρο εξόδου: Child
- [x] Εμφανίζεται στο παράθυρο εξόδου: Parent
Ερώτηση 4 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποια από τις παρακάτω προτάσεις είναι αληθής;
- [x] Ο εξ ορισμού constructor παράγεται αυτόματα αν δεν δηλώνεται ρητά κανένας constructor σε μια κλάση.
- [ ] Τουλάχιστον ένας constructor πρέπει να δηλώνεται ρητά.
- [ ] Κάθε κλάση έχει περισσότερους από έναν εξ ορισμού constructor
- [ ] Όλα τα παραπάνω
Ερώτηση 1 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποιο από τα παρακάτω ισχύει για την Thread
- [ ] Είναι αφηρημένη κλάση
- [ ] Είναι διεπαφή (interface) της Java
- [ ] Έχει σαν στιγμιότυπα νήματα
- [x] Υλοποιεί την Runnable
Ερώτηση 20 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Μετά την εκτέλεση του παρακάτω κώδικα στο παράθυρο εξόδου εμφανίζεται :
class A
{
int x=10;
}
class B extends A
{
int x=20;
}
public class Test3{
public static void main(String []args){
A a=new B();
System.out.print(a.x);
}
}
- [ ] 10 20
- [ ] 20
- [x] 10
- [ ] 30
Ερώτηση 2 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Αν w1 και w2 είναι οι μεταβλητές που αντιπροσωπεύουν δύο στιγμιότυπα της ίδιας κλάσης, τότε ποιο από τα παρακάτω ισχύει μετά την εκτέλεση της πρότασης w1=w2;
- [ ] Δημιουργείται ένα αντίγραφο του αντικειμένου που αντιπροσωπεύει η w2 και ανατίθεται στην w1.
- [x] Η w1 αντιπροσωπεύει και αυτή το αντικείμενο της w2.
- [ ] Δημιουργείται ένα αντίγραφο του αντικειμένου που αντιπροσωπεύει η w1 και ανατίθεται στην w2.
- [ ] Κανένα από τα παραπάνω.
Ερώτηση 13 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται ο παρακάτω κώδικας . Μετά την εκτέλεση του θα εμφανιστεί:
class Exams1
{
int code=10;
void printCode()
{
int code =20;
System.out.println("Code: "+code);
}
public static void main (String[] args){
Exams1 e1=new Exams1();
e1.printCode();
}
}
- [ ] Code: 10
- [x] Code: 20
- [ ] Code: 30
- [ ] Code: 10, 20
Ερώτηση 14 / 40 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να επιστρέφει τη θέση της πρώτης εμφάνισης του χαρακτήρα c στο αλφαριθμητικό s. Αν δεν βρεθεί, να επιστρέφει κατάλληλη τιμή. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public int charFind(String s, char c)
{
int i = s.indexOf(c);
{if (1)
return i;}
else return (2);
}
- [ ] (1): (i > s.length()), (2): 0
- [ ] (1): (i > s.length()), (2): -1
- [x] (1): (i != -1), (2): -1
- [ ] (1): (i != -1), (2): 0
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβολή Άσκησης
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C++ Υπολειπόμενος χρόνος: 23:57
Ερώτηση 2 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Ποια είναι η δήλωση της συνάρτησης zero που δέχεται ένα array ακεραίων και δεν επιστρέφει κάποια τιμή;
- [ ] int zero (int []);
- [ ] void zero (int);
- [x] void zero (int *);
- [ ] int zero (int *);
Ερώτηση 4 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται το παρακάτω πρόγραμμα. Τι θα εκτυπωθεί μετά την εκτέλεση της main;
class Window
{ public int size = 1;
public static int count = 0;
public Window()
{this.size = 3;
setCount ();}
public static void setCount()
{count++;}
}
class XWindow extends Window
public XWindow(int x)
{this.size = -x;}
public class RunWindow
{ public static void main ()
{
XWindow w1 = new XWindow(6);
Window w = new Window();
System.out.println(w1.size);
System.out.println(w.count);
}}
- [ ] 6 0
- [ ] 6 2
- [x] -6 2
- [ ] 6 1
Ερώτηση 5 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται το παρακάτω πρόγραμμα. Τι θα εκτυπωθεί μετά την εκτέλεσή της main;
class Window{
double size = 1.0;
public Window() {
size = 2.0;
System.out.println("Window size " + size);}}
class XWindow extends Window {
public XWindow (double size) {
this.size = size--;
System.out.println("XWindow size " + this.size);}
public class RunWindow{
public static void main() {
XWindow w1 = new XWindow(3.5);
}}
- [ ] Τίποτα
- [ ] Window size 2.0
- [x] XWindow size 3.5
- [ ] Window size 0 XWindow size 2.5
Ερώτηση 3 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται το παρακάτω πρόγραμμα. Τι θα εκτυπωθεί μετά την εκτέλεσή της main;
class Window
{ public int size = 1;
public static int count = 0;
public Window()
{this.size = 3;
setCount ();}
public static void setCount()
{count++;}
}
class XWindow extends Window
public XWindow(int x)
{this.size = x--;}
public class RunWindow
{ public static void main ()
{
XWindow w1 = new XWindow(4);
Window.setCount();
System.out.println(w1.size);
System.out.println(Window.count);
}}
- [ ] 4 0
- [ ] 3
- [ ] 4 2
- [x] 4 2
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβολή Άσκησης
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ JAVA Υπολειπόμενος χρόνος: 45:19
Ερώτηση 9 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος της κλάσης ManageStrings συγκρίνει δύο αλφαριθμητικά και επιστρέφει κατάλληλο αποτέλεσμα. Στη main εκτελείται η εντολή: String label = ms1.compString("Hello", "Ioannis"); όπου ms1 στιγμιότυπο της ManageStrings. Ποια θα είναι η τιμή της μεταβλητής label;
public String compString (String s1, String s2)
{
boolean result = s1.equals(s2);
if !result
if (s1.length() > s2.length())
return s1+s2;
else return s2+s1;
else return s1;
}
- [ ] "Helloloannis"
- [ ] "Ioannis"
- [ ] "Hello"
- [x] "IoannisHello"
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβολή Άσκησης
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ JAVA Υπολειπόμενος χρόνος: 45:12
Ερώτηση 8 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η biggerWindow(Window w) είναι μια μέθοδος στιγμιοτύπου της Window που συγκρίνει το στιγμιότυπο της Window που είναι όρισμά της με το τρέχον αντικείμενο. Θέλουμε να συγκρίνουμε ένα στιγμιότυπο wa με ένα άλλο στιγμιότυπο wb της Window. Ποια από τις παρακάτω προτάσεις είναι σωστή;
- [ ] wa.biggerWindow(wb);
- [ ] wb.biggerWindow(wa);
- [ ] window.wa.biggerWindow(wb);
- [x] και 1 και η 2
Στον κύκλο ζωής ενός applet η μέθοδος start() εκτελείται
- [ ] πρώτη
- [x] μετά την init()
- [ ] πριν την init()
- [ ] μετά την paint()
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβολή Άσκησης
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ JAVA Υπολειπόμενος χρόνος: 59:22
Ερώτηση 2 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Η παρακάτω μέθοδος θέλουμε να μετρά και να επιστρέφει τον αριθμό των εμφανίσεων του χαρακτήρα c στο αλφαριθμητικό s. Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
public int charCount (String s, char c)
{
int count=0;
for (int i=0; (1); i++)
{if (2)
count++;}
return count;
}
- [ ] (1): i<=s.length(), (2): (c==s.charAt(i))
- [x] (1): i<s.length(), (2): (c==s.charAt(i))
- [ ] (1): i<s.length(), (2): (c==s.indexOf(c))
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Προβολή Άσκησης
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ JAVA Υπολειπόμενος χρόνος: 59:36
Ερώτηση 1 / 10 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Δίνεται η παρακάτω μέθοδος της κλάσης ManageStrings. Στη main εκτελείται η εντολή: String label = ch1.changeString("Degas", 'a', 'i'); όπου ch1 στιγμιότυπο της ManageStrings. Ποια θα είναι η τιμή της μεταβλητής label;
public String changeString(String s, char c1, char c2)
{String snew = s;
snew.replace(c1, c2);
return snew;
}
- [ ] Digis
- [x] "Degas"
- [ ] "Digis"
- [ ] Degas
Ένα νήμα είναι
- [ ] στιγμιότυπο της Runnable
- [ ] στιγμιότυπο της Thread
- [x] στιγμιότυπο υποκλάσης της Thread
- [ ] στιγμιότυπο υποκλάσης της Runnable
Πότε είναι χρήσιμος ο δείκτης this;
- [ ] Όταν μια τοπική μεταβλητή έχει το ίδιο όνομα με μια μεταβλητή μέλος, μπορούμε να προσπελάσουμε το μέλος χρησιμοποιώντας το this
- [ ] Για να επιστρέψουμε αναφορά στο τρέχον αντικείμενο
- [ ] Για την αλυσιδωτή κλήση συναρτήσεων ενός αντικειμένου
- [x] Για όλα τα παραπάνω
Δίνεται η παρακάτω μέθοδος της κλάσης CountChars.
public (1) changeString(String s, char c1, char c2)
{String snew;
snew = (2).replace(c1, c2);
return snew;
}
Πρέπει να συμπληρωθεί ο κώδικας στα σημεία (1) και (2). Ποια από τις παρακάτω δυάδες είναι η σωστή;
- [ ] (1): int, (2): s
- [x] (1): String, (2): s
- [ ] (1): String, (2): snew
- [ ] (1): char, (2): snew
Ερώτηση 4 / 4 (Πολλαπλής Επιλογής (Μοναδική Απάντηση) — 1 βαθμός)
Τι ισχύει από τα παρακάτω:
- [ ] Ο destructor καλείται αυτόματα όταν ένα αντικείμενο βγει εκτός εμβέλειας
- [ ] Ο destructor καλείται αυτόματα όταν ένα static αντικείμενο βγει εκτός εμβέλειας
- [x] Ο constructor καλείται αυτόματα όταν ένα αντικείμενο δημιουργείται
- [ ] Ο constructor καλείται όταν ένα αντικείμενο τον καλεί ρητά