Αντικειμενοστρεφής Προγραμματισμός — Ιούνιος 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. Τίποτα από τα παραπάνω