oop:introduction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
oop:introduction [2017/02/10 15:15]
gthanos [Πλεονεκτήματα του Αντικ/στραφούς Προγραμματισμού]
oop:introduction [2017/02/16 08:34] (current)
gthanos [Κληρονομικότητα]
Line 47: Line 47:
   * Υπάρχουν επιμέρους τύποι αυτοκινήτων,​ sport, 4x4, sedan, coupe, supercars, luxury cars.   * Υπάρχουν επιμέρους τύποι αυτοκινήτων,​ sport, 4x4, sedan, coupe, supercars, luxury cars.
  
-Με βάση την παραπάνω παρατήρηση,​ μπορούμε να ορίσουμε κλάσεις που περιγράφουν γενικές έννοιες και στην συνέχεια να τις εξειδικεύσουμε δημιουργώντας νέες κλάσεις που περιγράφουν πιο ειδικές έννοιες. Ο λόγος που θα θέλαμε να κάνουμε κάτι τέτοιο είναι ότι κατά την εξέλιξη του λογισμικού θέλουμε κατά το δυνατόν να επαναχρησιμοποιήσουμε κώδικα που ήδη έχουμε, δημιουργώντας πιο σύνθετα και εξελιγμένα μοντέλα του υφιστάμενου λογισμικού+Με βάση την παραπάνω παρατήρηση,​ μπορούμε να ορίσουμε κλάσεις που περιγράφουν γενικές έννοιες και στην συνέχεια να τις εξειδικεύσουμε δημιουργώντας νέες κλάσεις που περιγράφουν πιο ειδικές έννοιες. Ο λόγος που θα θέλαμε να κάνουμε κάτι τέτοιο είναι ότι κατά την εξέλιξη του λογισμικού θέλουμε κατά το δυνατόν να επαναχρησιμοποιήσουμε κώδικα που ήδη έχουμε. ​
  
 Όταν εφευρέθηκε το ποδήλατο με ταχύτητες,​ ο εφευρέτης χρησιμοποίησε το υφιστάμενο βασικό σχέδιο του ποδηλάτου για να προσθέσει τον μηχανισμό των ταχυτήτων και να δημιουργήσει ένα νέο τύπο ποδηλάτου,​ το ποδήλατο με ταχύτητες. Σε αναλογία με τον πραγματικό κόσμο, ας υποθέσουμε ότι έχουμε μία κλάση που περιγράφει το κλασσικό ποδήλατο χωρίς ταχύτητες μέσω των παρακάτω τεσσάρων μεταβλητών. Όταν εφευρέθηκε το ποδήλατο με ταχύτητες,​ ο εφευρέτης χρησιμοποίησε το υφιστάμενο βασικό σχέδιο του ποδηλάτου για να προσθέσει τον μηχανισμό των ταχυτήτων και να δημιουργήσει ένα νέο τύπο ποδηλάτου,​ το ποδήλατο με ταχύτητες. Σε αναλογία με τον πραγματικό κόσμο, ας υποθέσουμε ότι έχουμε μία κλάση που περιγράφει το κλασσικό ποδήλατο χωρίς ταχύτητες μέσω των παρακάτω τεσσάρων μεταβλητών.
Line 97: Line 97:
  
   * **Αρθρωτή Δομή (Modularity):​** O κώδικας μίας κλάσης μπορεί να σχεδιαστεί και να αναπτυχθεί εντελώς ανεξάρτητα από τον κώδικα άλλης κλάσης. Η υλοποίηση μίας κλάσης μπορεί να αλλάξει ριζικά χωρίς να επηρεαστεί ο κώδικας των κλάσεων που χρησιμοποιούν τη συγκεκριμένη κλάση.   * **Αρθρωτή Δομή (Modularity):​** O κώδικας μίας κλάσης μπορεί να σχεδιαστεί και να αναπτυχθεί εντελώς ανεξάρτητα από τον κώδικα άλλης κλάσης. Η υλοποίηση μίας κλάσης μπορεί να αλλάξει ριζικά χωρίς να επηρεαστεί ο κώδικας των κλάσεων που χρησιμοποιούν τη συγκεκριμένη κλάση.
-  * **Απόκρυψη πληροφορίας:​** Στον αντικειμενοστραφή προγραμματισμό δεν μας ενδιαφέρει η εσωτερική υλοποίηση κάθε κλάσης αλλά μόνο οι δημόσιες (public) μέθοδοι που υλοποιεί. +  * **Απόκρυψη πληροφορίας ​(Information Hiding):** Στον αντικειμενοστραφή προγραμματισμό δεν μας ενδιαφέρει η εσωτερική υλοποίηση κάθε κλάσης αλλά μόνο οι δημόσιες (public) μέθοδοι που υλοποιεί. 
-  * **Επαναχρησιμοποίηση κώδικα:​** Η κλάση σχεδιάζεται έτσι ώστε να μπορεί να επαναχρησιμοποιηθεί και σε άλλες κλάσεις. Η επαναχρησιμοποίηση κώδικα βρίσκει εφαρμογή μέσω της κληρονομικότητας. +  * **Επαναχρησιμοποίηση κώδικα ​(Code Reuse):** Η κλάση σχεδιάζεται έτσι ώστε να μπορεί να επαναχρησιμοποιηθεί και σε άλλες κλάσεις. Η επαναχρησιμοποίηση κώδικα βρίσκει εφαρμογή μέσω της κληρονομικότητας. 
-  * **Επεκτασιμότητα:​** Οποιαδήποτε κλάση μπορεί να επεκταθεί μέσω της κληρονομικότητας σε πιο ειδικές κλάσεις.+  * **Επεκτασιμότητα ​(Extensibility):** Οποιαδήποτε κλάση μπορεί να επεκταθεί μέσω της κληρονομικότητας σε πιο ειδικές κλάσεις.
   * **Ευκολότερη αποσφαλμάτωση:​** Κατά την αποσφαλμάτωση ο αρχικός έλεγχος μπορεί να γίνει σε επίπεδο κλάσης (**Unit testing**). Αλλαγές σε μία κλάση δεν συνεπάγονται αλλαγές και σε άλλα σημεία του προγράμματος που χρησιμοποιούν την κλάση αυτή.   * **Ευκολότερη αποσφαλμάτωση:​** Κατά την αποσφαλμάτωση ο αρχικός έλεγχος μπορεί να γίνει σε επίπεδο κλάσης (**Unit testing**). Αλλαγές σε μία κλάση δεν συνεπάγονται αλλαγές και σε άλλα σημεία του προγράμματος που χρησιμοποιούν την κλάση αυτή.
   * **Σχεδιασμός:​** Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας. Αντίθετα ο κακός σχεδιασμός οδηγεί διαρκώς σε προβλήματα που ανακύπτουν στην φάση της ανάπτυξης.   * **Σχεδιασμός:​** Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας. Αντίθετα ο κακός σχεδιασμός οδηγεί διαρκώς σε προβλήματα που ανακύπτουν στην φάση της ανάπτυξης.
  
  
-| Προηγούμενο:​ [[java:​break_loop_statements|Εντολές τερματισμού και ελέγχου της ανακύκλωσης]] [[:toc | Περιεχόμενα ]]|| Επόμενο:​ [[:​java:​class | Η κλάση ]]|+| Προηγούμενο:​ [[java:​break_loop_statements |Εντολές τερματισμού και ελέγχου της ανακύκλωσης]] ​[[:toc | Περιεχόμενα ]]| | Επόμενο:​ [[:​java:​class | Η κλάση ]]|
  
  
oop/introduction.1486739703.txt.gz · Last modified: 2017/02/10 15:15 by gthanos