Μετάβαση στο περιεχόμενο

Αντικειμενοστρεφής Προγραμματισμός — Ιούνιος 2026

Μεταγραφή των τεσσάρων σελίδων IMG_2431 έως IMG_2434 του θέματος.

IMG_2431.jpg

[Λείπει από τη φωτογραφία: κεφαλίδα μαθήματος και εξεταστικής περιόδου] Π. Χατζηδούκας – Α. Κομνηνός

Όνομα: ____________________ Επώνυμο: ____________________ ΑΜ: ____________________ Έτος Σπουδών: ____________________ Μάθημα: ____________________

Θέμα 1ο (2 μονάδες): Ποια είναι η έξοδος στις παρακάτω περιπτώσεις; Απαντήστε και δώστε σύντομη εξήγηση. Αν ο κώδικας δεν μεταγλωττίζεται, εξηγήστε γιατί.

a.

ArrayList<String> a = new ArrayList<>();
a.add("A"); a.add("B"); a.add("A");
a.remove("A");
System.out.println(a);

b.

HashSet<Integer> set = new HashSet<>();
set.add(2); set.add(4);
set.add(2); set.add(6);
System.out.println(set.size());

c.

String s1 = "Java";
String s2 = "Ja" + "va";
String s3 = new String("Java");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s2.equals(s3));

d.

int[] a = new int[3];
System.out.println(a[1]);

Θέμα 2ο (2 μονάδες): Ποια είναι η έξοδος στις παρακάτω περιπτώσεις; Απαντήστε και δώστε σύντομη εξήγηση. Αν ο κώδικας δεν μεταγλωττίζεται, εξηγήστε γιατί.

a.

public class Example {
    private int value;
    public Example(int value) {
        this.value = value;
    }
    public static void main(String[] args) {
        Example e1 = new Example(5);
        Example e2 = new Example(5);
        System.out.println(e1 == e2);
    }
}

b.

class Test {
    static int count = 1;
    Test() { count *= 2; }
}

Test a = new Test();
Test b = new Test();
System.out.println(Test.count);

c.

class A {
    void f() { System.out.print("A"); }
}

class B extends A {
    void g() { System.out.print("B"); }
}

A obj = new B();
obj.g();

IMG_2432.jpg

d.

Stack<Integer> stack = new Stack<>();
for (int i = 3; i > 0; i--) {
    stack.push(i);
    stack.push(i-1);
    System.out.print(stack.pop() + " ");
}

Θέμα 3ο (2 μονάδες): Υλοποιήστε την κλάση Course ώστε να υποστηρίζεται ο παρακάτω κώδικας. Αποφύγετε την επανάληψη κώδικα στους κατασκευαστές. Απαντήστε στο χώρο που δίνεται.

Course c1 = new Course("Java");
Course c2 = new Course("C++", "K. Papadopoulos");
Course c3 = new Course("Data Structures", "M. Georgiou", 6);

c1.enroll();
c1.enroll();

c1.display();
// Title: Java, Teacher: Unknown, ECTS: -1, Students: 2

c2.display();
// Title: C++, Teacher: K. Papadopoulos, ECTS: -1, Students: 0

c3.display();
// Title: Data Structures, Teacher: M. Georgiou, ECTS: 6, Students: 0

IMG_2433.jpg

Θέμα 4ο (2 μονάδες): Συμπληρώστε τον κώδικα της συνάρτησης printLength, η οποία εκτυπώνει το μήκος της συμβολοσειράς (String) που βρίσκεται στη θέση pos του πίνακα names. Η μέθοδος πρέπει να χειρίζεται τις πιθανές εξαιρέσεις ArrayIndexOutOfBoundsException και NullPointerException και να εκτυπώνει κατάλληλο μήνυμα.

public class Main {
    public static void printLength(String[] names, int pos) {
        // Συμπληρώστε τον κώδικα
    }

    public static void main(String[] args) {
        String[] names = {"Alice", null, "Bob"};
        printLength(names, 0);
        printLength(names, 1);
        printLength(names, 5);
    }
}

Θέμα 5ο (2 μονάδες): Απαντήστε στις παρακάτω ερωτήσεις δίνοντας σύντομη εξήγηση στο χώρο που δίνεται.

a. Τι εκτυπώνει ο παρακάτω κώδικας; Αν ο κώδικας δεν μεταγλωττίζεται, εξηγήστε γιατί.

void f(int &x) {
    x = x + 2;
    cout << x;
}

int a = 5;
f(a);
cout << a;

b. Τι εκτυπώνει ο παρακάτω κώδικας; Αν ο κώδικας δεν μεταγλωττίζεται, εξηγήστε γιατί.

int sum(int x, int y = 2, int z = 3) {
    return x + y + z;
}

int main() {
    int s = sum(10) + sum(10, 20) + sum(10, 20, 30);
    cout << s;
    return 0;
}

IMG_2434.jpg

c. Έστω κλάση Student με πεδία:

string name;
int semester;
const int id;

Ποιος είναι ο σωστός κατασκευαστής (constructor) για την αρχικοποίηση ενός αντικειμένου; 1. Student::Student(string n, int s, int i) : name(n), semester(s), id(i) { } 2. Student::Student(string n, int s, int i) { name = n; semester = s; id = i; } 3. Student::Student(string n, int s) : name(n), semester(s) { id = 0; } 4. Ο 1ος και ο 2ος

d. Τι θα τυπώσει ο παρακάτω κώδικας;

class Test {
public:
    Test() { cout << "C"; }
    ~Test() { cout << "D"; }
};

int main() {
    Test t;
    cout << "M";
}
  • [ ] a. CMD
  • [ ] b. CDM
  • [ ] c. CM
  • [ ] d. Τίποτα από τα παραπάνω

✖ Βρήκα λάθος στη μεταγραφή