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

Τεχνολογία Λογισμικού — Ιούνιος 2025, δεύτερη παραλλαγή

Μεταγραφή από τη φωτογραφία 3c1cd365d58de701.jpg (Θέμα Γ, δεύτερη παραλλαγή της εξέτασης της 23/06/2025).

3c1cd365d58de701.jpg

Πολυτεχνική Σχολή
Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών & Πληροφορικής

[Λείπει από τη φωτογραφία: το αρχικό γράμμα του τίτλου «Θ» (στην αρχή της γραμμής «ΘΕΜΑ Γ»)]

ΘΕΜΑ Γ (Μονάδες 3,5)

[Λείπει από τη φωτογραφία: η αρχή της εκφώνησης (κείμενο κομμένο από το αριστερό άκρο· ορατό μόνο το τέλος των λέξεων «…νεται το παρακάτω διάγραμμα κλάσεων (class diagram) και ζητείται να παράξετε τον … κώδικα σε κάποια αντικειμενοστρεφή γλώσσα όπως, π.χ. Java, κ.τ.λ., με βάση όσα έχουμε καλύψει στο μάθημα.»)]

Προσοχή στις σχέσεις μεταξύ των κλάσεων, ίσως χρειάζεται να προσθέσετε ιδιότητες ή μεθόδους για να τις υλοποιήσετε.
Δεν χρειάζεται να προσθέσετε κώδικα στα σώματα των μεθόδων, γι' αυτό και κάτι τέτοιο δεν θα βαθμολογηθεί!

[Σχήμα: Διάγραμμα κλάσεων UML:

<> PaymentProcessor - Μέθοδοι: + processPayment (amount: double): boolean

CreditCardProcessor (υλοποιεί τη διεπαφή PaymentProcessor με διακεκομμένο βέλος υλοποίησης/realization): - Ιδιότητες: -cardNumber: String +MAX_TRANSACTION_AMOUNT: double {readOnly} (υπογραμμισμένο στο πρωτότυπο) - Μέθοδοι: +processPayment (amount: double): boolean +chargeCard (amount: double) : boolean

ShoppingCart (εξαρτάται από το CreditCardProcessor με οριζόντιο διακεκομμένο βέλος εξάρτησης/dependency): - Ιδιότητες: -totalAmount: double - Μέθοδοι: +removeItem (itemId:String) +calculateTotal(): double

Transaction (συσχέτιση από CreditCardProcessor με πολλαπλότητα 1 προς Transaction με πολλαπλότητα 0...* μέσω συμπαγούς γραμμής με βέλος): - Ιδιότητες: -transactionId: String -status: String - Μέθοδοι: +getTransactionDetails(): String]

[Λείπει από τη φωτογραφία: το δεξί άκρο του διαγράμματος (η κλάση CreditCardProcessor και η κλάση PaymentProcessor είναι κομμένες δεξιά· η πολλαπλότητα και τυχόν άλλα στοιχεία πέρα από το άκρο δεν φαίνονται)]

Απάντηση Θέματος Γ

Λύσεις (⚪ AI, μη επαληθευμένο)

Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (gemini-3.7-flash, sonnet), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο

Προσοχή

Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.

AI λύσεις — 2025-06-b

Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.

Θέμα Γ

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: χαμηλή

Προσοχή: η φωτογραφία είναι κομμένη (λείπει η εκφώνηση και το δεξί άκρο του διαγράμματος), άρα η λύση βασίζεται μόνο στα ορατά στοιχεία και σε υποθέσεις που σημειώνονται.

Αντιστοίχιση σχέσεων: - Realization CreditCardProcessor → PaymentProcessor: implements. - Dependency ShoppingCart → CreditCardProcessor: χρήση ως παράμετρος μεθόδου, όχι πεδίο (υπόθεση: μέθοδος checkout). - Association CreditCardProcessor (1) → Transaction (0..*): πεδίο λίστας στον CreditCardProcessor. - Υπογραμμισμένο MAX_TRANSACTION_AMOUNT {readOnly}: public static final. Η τιμή δεν φαίνεται· η 10000.0 είναι αυθαίρετη.

import java.util.ArrayList;
import java.util.List;

public interface PaymentProcessor {
    boolean processPayment(double amount);
}

public class CreditCardProcessor implements PaymentProcessor {
    private String cardNumber;
    public static final double MAX_TRANSACTION_AMOUNT = 10000.0;  // τιμή υποθετική
    private List<Transaction> transactions = new ArrayList<>();   // 1 -> 0..*

    @Override
    public boolean processPayment(double amount) { return false; }
    public boolean chargeCard(double amount) { return false; }
}

public class ShoppingCart {
    private double totalAmount;

    public void removeItem(String itemId) { }
    public double calculateTotal() { return 0; }
    // εξάρτηση: το CreditCardProcessor εμφανίζεται μόνο ως παράμετρος
    public boolean checkout(CreditCardProcessor processor) { return false; }
}

public class Transaction {
    private String transactionId;
    private String status;

    public String getTransactionDetails() { return null; }
}

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


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