📌 Βασική Φιλοσοφία

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

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

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

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

📌 Ορισμοί Βασικών Εννοιών

🔹 Αντικειμενοστραφής Προγραμματισμός

Ο αντικειμενοστραφής προγραμματισμός (object-oriented programming) ή αντικειμενοστραφής σχεδίαση είναι μια μεθοδολογία ανάπτυξης εφαρμογών η οποία στηρίζεται σε αυτόνομες προγραμματιστικές οντότητες με δική τους ταυτότητα και συμπεριφορά.

🔹 Αντικείμενα (Objects)

Οι οντότητες αυτές καλούνται αντικείμενα και αντιστοιχούν σε φυσικές οντότητες ή έννοιες του φυσικού μας κόσμου. Δομούνται με βάση:

  • Δεδομένα (ιδιότητες) που προσδιορίζουν την υπόστασή τους.
  • Ενέργειες (κανόνες συμπεριφοράς / μέθοδοι) που εφαρμόζονται πάνω στα δεδομένα.

Σε μια εφαρμογή, ένα αντικείμενο είναι ο ομαδοποιημένος συνδυασμός δεδομένων και κώδικα, τα οποία έχουμε τη δυνατότητα να χειριστούμε.

🔹 Ιδιότητες (Properties)

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

📌 Βασικά Συστατικά για Επίλυση Προβλήματος

Για την επίλυση ενός προβλήματος με βάση τον αντικειμενοστραφή προγραμματισμό πρέπει να καταγράψουμε:

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

📌 Δομή Αντικειμενοστραφούς Προγράμματος

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

📌 Ενθυλάκωση (Encapsulation)

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

Αναλογία: Την ενθυλάκωση μπορούμε να την παρομοιάσουμε σαν ένα κέλυφος που υπάρχει γύρω από κάθε αντικείμενο και διαχωρίζει τον εσωτερικό από τον εξωτερικό του κόσμο.

📌 Κλάση (Class)

Ο γενικός τύπος ενός αντικειμένου καλείται κλάση (class) και καθορίζει τις αρχικές ιδιότητες και τη συμπεριφορά κάθε αντικειμένου που προέρχεται από αυτή. Μια κλάση αποτελεί ένα αφαιρετικό (abstract) στοιχείο (τύπο) και μπορεί να παράγει ένα απεριόριστο πλήθος δομικά ίδιων αντικειμένων.

Σημείωση: Η κλάση είναι το «σχέδιο» (blueprint) και το αντικείμενο είναι η «υλοποίηση» (instance) αυτού του σχεδίου.

📌 Κληρονομικότητα (Inheritance)

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

Η κλάση απόγονος (υποκλάση) κληρονομεί και μπορεί να χρησιμοποιήσει όλα τα δεδομένα (ιδιότητες) και τις μεθόδους που περιέχει η κλάση πρόγονος.

🔹 Κανόνας is_a

Μια κλάση Α μπορεί να είναι έγκυρη υποκλάση της Β όταν ισχύει ο κανόνας «το Α είναι ένα (is_a) B».

Παραδείγματα:
✅ «Το αυτοκίνητο είναι μέσο μεταφοράς» → ισχύει → Αυτοκίνητο is_a Μέσο_μεταφοράς
❌ «Ο άνθρωπος είναι μέσο μεταφοράς» → δεν ισχύει → δεν μπορεί να είναι υποκλάση

📌 Πολυμορφισμός (Polymorphism)

Πολυμορφισμός (polymorphism) είναι μια ιδιότητα του αντικειμενοστραφούς προγραμματισμού με την οποία μια λειτουργία μπορεί να υλοποιείται με πολλούς διαφορετικούς τρόπους. Ο πολυμορφισμός μας επιτρέπει να επαναπροσδιορίσουμε τον τρόπο με τον οποίο λειτουργούν κάποια πράγματα, είτε αλλάζοντας τον τρόπο λειτουργίας τους είτε αλλάζοντας τα εργαλεία τα οποία χρησιμοποιούνται για την επίτευξη του στόχου.

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

1. Ποια είναι η βασική φιλοσοφία του αντικειμενοστραφούς προγραμματισμού;

▼

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

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

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

2. Να δοθούν οι ορισμοί για: Αντικειμενοστραφής προγραμματισμός, αντικείμενα, ιδιότητες.

▼

Αντικειμενοστραφής προγραμματισμός: Είναι μια μεθοδολογία ανάπτυξης εφαρμογών η οποία στηρίζεται σε αυτόνομες προγραμματιστικές οντότητες με δική τους ταυτότητα και συμπεριφορά.

Αντικείμενα (objects): Οι οντότητες αυτές αντιστοιχούν σε φυσικές οντότητες ή έννοιες του φυσικού μας κόσμου. Δομούνται με βάση δεδομένα (ιδιότητες) που προσδιορίζουν την υπόστασή τους και ενέργειες (κανόνες συμπεριφοράς / μέθοδοι) που εφαρμόζονται πάνω στα δεδομένα. Ένα αντικείμενο είναι ο ομαδοποιημένος συνδυασμός δεδομένων και κώδικα.

Ιδιότητες (properties): Τα δεδομένα αποτελούν τα χαρακτηριστικά ενός αντικειμένου και αναφέρονται ως ιδιότητες. Οι ενέργειες καθορίζουν τη συμπεριφορά του και αναφέρονται ως μέθοδοι.

3. Ποια είναι τα βασικά συστατικά που πρέπει να καταγράψουμε για την επίλυση ενός προβλήματος με βάση τον αντικειμενοστραφή προγραμματισμό;

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

4. Πώς δομείται ένα αντικειμενοστραφές πρόγραμμα;

▼

Ένα αντικειμενοστραφές πρόγραμμα δομείται ως ένα δίκτυο συνεργαζόμενων οντοτήτων που είναι τα αντικείμενα.

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

5. Τι ονομάζουμε ενθυλάκωση;

▼

Σε μια αντικειμενοστραφή εφαρμογή κάθε αντικείμενο αποτελεί ξεχωριστή οντότητα και περιέχει ενσωματωμένες τις ιδιότητες (δεδομένα) και τους κανόνες συμπεριφοράς του (μεθόδους).

Η δυνατότητα ενός αντικειμένου να συνδυάζει εσωτερικά τα δεδομένα και τις μεθόδους χειρισμού του καλείται ενθυλάκωση (encapsulation).

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

6. Τι ονομάζουμε κλάση;

▼

Ο γενικός τύπος ενός αντικειμένου καλείται κλάση (class) και καθορίζει τις αρχικές ιδιότητες και τη συμπεριφορά κάθε αντικειμένου που προέρχεται από αυτή.

Μια κλάση αποτελεί ένα αφαιρετικό (abstract) στοιχείο (τύπο) και μπορεί να παράγει ένα απεριόριστο πλήθος δομικά ίδιων αντικειμένων.

Αναλογία: Η κλάση είναι το «σχέδιο» (blueprint) και το αντικείμενο είναι η «υλοποίηση» (instance) αυτού του σχεδίου.

7. Τι είναι η κληρονομικότητα;

▼

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

Η κλάση απόγονος (υποκλάση) κληρονομεί και μπορεί να χρησιμοποιήσει όλα τα δεδομένα (ιδιότητες) και τις μεθόδους που περιέχει η κλάση πρόγονος.

8. Πότε μια κλάση Α μπορεί να είναι έγκυρη υποκλάση της Β;

▼

Μια κλάση Α μπορεί να είναι έγκυρη υποκλάση της Β όταν ισχύει ο κανόνας «το Α είναι ένα (is_a) B».

Παραδείγματα:

  • ✅ «Το αυτοκίνητο είναι μέσο μεταφοράς» → ισχύει → Αυτοκίνητο is_a Μέσο_μεταφοράς → η κλάση «Αυτοκίνητο» μπορεί να είναι υποκλάση της «Μέσο_μεταφοράς».
  • ❌ «Ο άνθρωπος είναι μέσο μεταφοράς» → δεν ισχύει → η κλάση «Άνθρωπος» δεν μπορεί να είναι υποκλάση της «Μέσο_μεταφοράς».

9. Τι είναι ο πολυμορφισμός;

▼

Πολυμορφισμός (polymorphism) είναι μια ιδιότητα του αντικειμενοστραφούς προγραμματισμού με την οποία μια λειτουργία μπορεί να υλοποιείται με πολλούς διαφορετικούς τρόπους.

Ο πολυμορφισμός μας επιτρέπει να επαναπροσδιορίσουμε τον τρόπο με τον οποίο λειτουργούν κάποια πράγματα, είτε αλλάζοντας τον τρόπο λειτουργίας τους είτε αλλάζοντας τα εργαλεία τα οποία χρησιμοποιούνται για την επίτευξη του στόχου.

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

1. Σύμφωνα με τον αντικειμενοστραφή προγραμματισμό, η επίλυση ενός προβλήματος επιτυγχάνεται με:

Την ανάπτυξη ενός μεγάλου μονολιθικού προγράμματος
Τη σύνθεση ικανοτήτων ανεξάρτητων οντοτήτων που αλληλεπιδρούν
Τη χρήση μόνο ενσωματωμένων συναρτήσεων
Την αντιγραφή κώδικα από άλλα προγράμματα

2. Τι αποτελούν τα δεδομένα ενός αντικειμένου;

Ιδιότητες (properties)
Μέθοδοι (methods)
Κλάσεις (classes)
Υποκλάσεις (subclasses)

3. Οι ενέργειες που εφαρμόζονται πάνω στα δεδομένα ενός αντικειμένου ονομάζονται:

Ιδιότητες
Κλάσεις
Μέθοδοι
Παράμετροι

4. Ένα αντικειμενοστραφές πρόγραμμα δομείται ως:

Μια ακολουθία εντολών από πάνω προς τα κάτω
Ένα δίκτυο συνεργαζόμενων οντοτήτων (αντικειμένων)
Ένα σύνολο από ανεξάρτητα υποπρογράμματα
Ένας πίνακας δεδομένων

5. Η ενθυλάκωση (encapsulation) είναι:

Η δυνατότητα ενός αντικειμένου να συνδυάζει εσωτερικά δεδομένα και μεθόδους
Η κληρονομικότητα ιδιοτήτων από μια άλλη κλάση
Η υλοποίηση μιας λειτουργίας με πολλούς τρόπους
Η δημιουργία πολλών αντικειμένων από μια κλάση

6. Η κλάση (class) είναι:

Ένα συγκεκριμένο αντικείμενο του προγράμματος
Μια μέθοδος που εκτελεί υπολογισμούς
Ο γενικός τύπος ενός αντικειμένου — το «σχέδιο»
Μια ιδιότητα του αντικειμένου

7. Στην κληρονομικότητα, η υποκλάση (απόγονος):

Δημιουργεί εντελώς νέα δεδομένα και μεθόδους
Κληρονομεί και μπορεί να χρησιμοποιήσει τα δεδομένα και τις μεθόδους της κλάσης προγόνου
Δεν έχει καμία σχέση με την κλάση πρόγονο
Μπορεί να είναι υποκλάση οποιασδήποτε κλάσης

8. Ποιος κανόνας πρέπει να ισχύει για να είναι μια κλάση Α έγκυρη υποκλάση της Β;

Το Α είναι ένα (is_a) B
Το Α έχει ένα (has_a) B
Το Α χρησιμοποιεί ένα (uses_a) B
Το Α δημιουργεί ένα (creates_a) B

9. Ο πολυμορφισμός (polymorphism) επιτρέπει:

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

10. Ποιο από τα παρακάτω ΔΕΝ είναι βασικό συστατικό για την επίλυση προβλήματος με αντικειμενοστραφή προγραμματισμό;

Τα αντικείμενα που συμμετέχουν
Ο αριθμός των γραμμών κώδικα
Οι ιδιότητες κάθε αντικειμένου
Οι μέθοδοι / ενέργειες κάθε αντικειμένου
💪 Προκλήσεις: Προσπάθησε να τις λύσεις μόνος σου πριν δεις την απάντηση!

Άσκηση 1: Αναγνώριση αντικειμένων σε σενάριο

⭐

Σε ένα σύστημα διαχείρισης βιβλιοθήκης, να αναγνωρίσεις τα αντικείμενα, τις ιδιότητες και τις μεθόδους που θα χρειαστούν.

Αντικείμενα: Βιβλίο, Μέλος (δανειζόμενος), Βιβλιοθηκάριος

Ιδιότητες Βιβλίου: Τίτλος, Συγγραφέας, ISBN, Έτος έκδοσης, Διαθεσιμότητα

Μέθοδοι Βιβλίου: Δανεισμός(), Επιστροφή(), Αναζήτηση()

Ιδιότητες Μέλους: Όνομα, Επίθετο, Αριθμός μέλους, Λίστα δανεισμένων βιβλίων

Μέθοδοι Μέλους: Δανείσου_Βιβλίο(), Επίστρεψε_Βιβλίο()

Άσκηση 2: Κλάση vs Αντικείμενο

⭐

Να δοθούν 3 παραδείγματα όπου η κλάση είναι το «σχέδιο» και το αντικείμενο είναι η «υλοποίηση».

Παράδειγμα 1: Κλάση: Αυτοκίνητο → Αντικείμενα: το Toyota μου, το Ford του γείτονα, το BMW του πατέρα μου

Παράδειγμα 2: Κλάση: Μαθητής → Αντικείμενα: ο Γιάννης, η Μαρία, ο Κώστας

Παράδειγμα 3: Κλάση: Σκύλος → Αντικείμενα: ο Ρεξ, η Λούσυ, ο Μαξ

Άσκηση 3: Ενθυλάκωση σε καθημερινή ζωή

⭐

Να δοθούν 2 παραδείγματα ενθυλάκωσης από την καθημερινή ζωή (όχι υπολογιστικά).

Παράδειγμα 1 — Τηλεχειριστήριο: Ο χρήστης πατάει ένα κουμπί (μέθοδος) χωρίς να γνωρίζει τα εσωτερικά κυκλώματα (δεδομένα). Τα δεδομένα και οι μέθοδοι είναι «ενθυλακωμένα» μέσα στο τηλεχειριστήριο.

Παράδειγμα 2 — Αυτοκίνητο: Ο οδηγός πατάει το γκάζι (μέθοδος) χωρίς να γνωρίζει πώς λειτουργεί ο κινητήρας εσωτερικής καύσης (δεδομένα/μηχανισμοί). Τα εσωτερικά συστήματα είναι κρυμμένα (ενθυλακωμένα).

Άσκηση 4: Κληρονομικότητα — is_a κανόνας

⭐⭐

Να ελεγχθεί αν οι παρακάτω προτάσεις ικανοποιούν τον κανόνα is_a και μπορούν να ορίσουν υποκλάσεις:

  • α) Το τετράγωνο είναι ένα ορθογώνιο
  • β) Το τρίγωνο είναι ένας κύκλος
  • γ) Ο καθηγητής είναι ένας άνθρωπος
  • δ) Το ποδήλατο είναι ένα μέσο μεταφοράς

α) ✅ ΝΑΙ — Το τετράγωνο είναι ειδική περίπτωση ορθογωνίου (όλες οι πλευρές ίσες). Τετράγωνο is_a Ορθογώνιο.

β) ❌ ΟΧΙ — Το τρίγωνο δεν είναι κύκλος. Δεν ισχύει ο κανόνας is_a.

γ) ✅ ΝΑΙ — Ο καθηγητής είναι ένας άνθρωπος. Καθηγητής is_a Άνθρωπος.

δ) ✅ ΝΑΙ — Το ποδήλατο είναι μέσο μεταφοράς. Ποδήλατο is_a Μέσο_μεταφοράς.

Άσκηση 5: Πολυμορφισμός σε καθημερινή ζωή

⭐⭐

Να δοθούν 2 παραδείγματα πολυμορφισμού από την καθημερινή ζωή (ίδιος στόχος, διαφορετικός τρόπος).

Παράδειγμα 1 — Πληρωμή: Ο στόχος είναι να πληρώσουμε για ένα προϊόν. Μπορούμε να πληρώσουμε με μετρητά, με κάρτα, ή με κινητό. Ίδιος στόχος, διαφορετικός τρόπος.

Παράδειγμα 2 — Μετακίνηση: Ο στόχος είναι να πάμε από το Α στο Β. Μπορούμε να πάμε με αυτοκίνητο, με λεωφορείο, με ποδήλατο, ή περπατώντας. Ίδιος στόχος, διαφορετικός τρόπος.

Άσκηση 6: Ιεραρχία κλάσεων — Ζώα

⭐⭐⭐

Να σχεδιαστεί μια ιεραρχία κλάσεων για τα ζώα με βάση τον κανόνα is_a. Να ξεκινήσει από μια γενική κλάση «Ζώο» και να δημιουργηθούν τουλάχιστον 2 επίπεδα υποκλάσεων.

Ζώο
├── Θηλαστικό
│   ├── Σκύλος
│   ├── Γάτα
│   └── Άνθρωπος
├── Πουλί
│   ├── Αητός
│   └── Κοτόπουλο
└── Ψάρι
    ├── Καρχαρίας
    └── Πέστροφα

Κάθε υποκλάση κληρονομεί ιδιότητες από την πάνω κλάση και προσθέτει δικές της (π.χ. το Πουλί κληρονομεί από το Ζώο και προσθέτει «φτερά», «πτήση»).

Άσκηση 7: Εφαρμογή e-shop — Αντικείμενα & Ιδιότητες

⭐⭐⭐

Σε ένα ηλεκτρονικό κατάστημα (e-shop), να αναγνωρίσεις τα αντικείμενα, τις ιδιότητες και τις μεθόδους τους.

Αντικείμενα: Προϊόν, Πελάτης, Καλάθι, Παραγγελία

Προϊόν: Ιδιότητες: Όνομα, Τιμή, Κατηγορία, Απόθεμα. Μέθοδοι: Προσθήκη_στο_καλάθι(), Εμφάνιση_λεπτομερειών()

Πελάτης: Ιδιότητες: Όνομα, Email, Διεύθυνση, Τηλέφωνο. Μέθοδοι: Σύνδεση(), Αποσύνδεση(), Ολοκλήρωση_αγοράς()

Καλάθι: Ιδιότητες: Λίστα_προϊόντων, Συνολικό_ποσό. Μέθοδοι: Προσθήκη(), Αφαίρεση(), Υπολογισμός_συνόλου()

Παραγγελία: Ιδιότητες: Αριθμός_παραγγελίας, Ημερομηνία, Κατάσταση. Μέθοδοι: Αποστολή(), Ακύρωση()

Άσκηση 8: Ιεραρχία κλάσεων — Μέσα Μεταφοράς

⭐⭐⭐

Να σχεδιαστεί ιεραρχία κλάσεων για τα μέσα μεταφοράς με βάση τον κανόνα is_a. Να περιλαμβάνει τουλάχιστον 3 επιπέδα βάθους.

Μέσο_Μεταφοράς
├── Χερσαίο
│   ├── Αυτοκίνητο
│   │   ├── Ηλεκτρικό
│   │   └── Βενζίνης
│   └── Μοτοσυκλέτα
├── Θαλάσσιο
│   ├── Πλοίο
│   └── Βάρκα
└── Εναέριο
    ├── Αεροπλάνο
    └── Ελικόπτερο

Κάθε επίπεδο προσθέτει πιο εξειδικευμένες ιδιότητες. Π.χ. το Ηλεκτρικό αυτοκίνητο κληρονομεί από το Αυτοκίνητο, που κληρονομεί από το Χερσαίο, που κληρονομεί από το Μέσο_Μεταφοράς.