java:packages:intro

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Πακέτα στη γλώσσα προγραμματισμού Java ====== Σε αυτό το κεφάλαιο θα δούμε πως μπορούμε αν ομαδοποιήσουμε κλάσεις σε **πακέτα** (**packages**). Τα πακέτα μπορούν να περιέχουν τόσο κλάσεις όσο και διεπαφές (interfaces). Επειδή προς το παρόν δεν έχουμε μιλήσει για διεπαφές θεωρήστε ότι τα πακέτα σας διαθέτουν μόνο κλάσεις. Προκειμένου να είναι ευκολότερη η αναζήτηση και η ομαδοποίηση κλάσεων που έχουν κοινά χαρακτηριστικά προκρίνεται από τη Java η ομάδοποίηση τους σε πακέτα που περιέχουν κλάσεις. Φανταστείτε ένα εικονικό "πακέτο" ή "κουτί" που περιέχει κλάσεις. Επιπλέον, τα πακέτα χρησιμοποιούνται ώστε να αποφεύγονται προβλήματα ονοματοδοσίας σε κλάσεις που έχουν το ίδιο όνομα, αλλά ανήκουν σε διαφορετικά πακέτα. Αν δύο κλάσεις διαφορετικών πακέτων έχουν το ίδιο όνομα, υπάρχει το πρόβλημα της διάκρισης μεταξύ τους. Η απάντηση στο πρόβλημα αυτό είναι ότι αν κάθε κλάση βρίσκεται σε διαφορετικό πακέτο, τότε μπορούμε να χρησιμοποιήσουμε την κλάση που επιθυμούμε βάζοντας ως πρόθεμα στο όνομα της το όνομα του πακέτου. <WRAP info 60%> Η Java απαγορεύει την ύπαρξη δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο. </WRAP> Ας υποθέσουμε ότι στο γνωστό παράδειγμα του ποδηλάτου έχουμε τις εξής κλάσεις. <code java> public class Bicycle { .... } public class MountainBike extends Bicycle { .... } public class BicycleForTwo extends Bicycle { .... } public class MotorBike extends Bicycle { .... } </code> <WRAP note> Έχουμε αναφέρει ότι κάθε κλάση ανήκει σε ξεχωριστό αρχείο .java. Η παραπάνω γραφή γίνεται για λόγους οικονομίας χώρου και δεν ανταποκρίνεται στις προδιαγραφές που θέτει ο compiler της Java. Το ίδιο ισχύει και για τον κώδικα παρακάτω. </WRAP> Καθώς όλες οι παραπάνω κλάσεις αφορούν τύπους ποδηλάτου θα μπορούσαν να ομαδοποιηθούν σε ένα πακέτο (package). Συνιστάται η ομαδοποίηση κλάσεων σε πακέτα για τους εξής λόγους: - Κλάσεις με συγγενές αντικείμενο ομαδοποιούνται σε ένα πακέτο, ώστε οι προγραμματιστές να γνωρίζουν ότι οι κλάσεις αυτές αφορούν συγκεκριμένες λειτουργίες του λογισμικού. - Επεκτείνοντας την παραπάνω λογική άλλοι προγραμματιστές θα προσπαθήσουν να βρουν συγγενείς κλάσεις μέσα στο ίδιο πακέτο. - Αποφεύγεται μία πιθανή "σύγκρουση" (conflict) στην ονοματοδοσία των κλάσεων, όπως εξηγήσαμε παραπάνω. - Όπως θα δούμε στη συνέχεια, σε μία κλάση που ανήκει σε συγκεκριμένο πακέτο (package) μπορούμε να επιτρέψουμε οι κλάσεις που ανήκουν στο ίδιο πακέτο να έχουν διαφορετικό επίπεδο πρόσβασης σε πεδία και μεθόδους από τις κλάσεις εκτός του πακέτου αυτού. ====== Δημιουργία ενός πακέτου ====== Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να δωθεί ως εξής. <code java> package bicycles; public class Bicycle { .... } package bicycles; public class MountainBike extends Bicycle { .... } package bicycles; public class BicycleForTwo extends Bicycle { .... } package bicycles; public class MotorBike extends Bicycle { .... } </code> Εάν δεν δημιουργήσετε ένα πακέτο για τις κλάσεις σας αυτές θα τοποθετηθούν στο ανώνυμο default πακέτο. Γενικά, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα θα πρέπει απαραίτητα να είναι χωρισμένα σε πακέτα. |Προηγούμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]|

java/packages/intro.1423144077.txt.gz · Last modified: 2016/02/26 11:15 (external edit)