Καθώς πολλοί προγραμματιστές φτιάχνουν κλάσεις για διάφορά προγράμματα είναι πολύ πιθανόν ότι τα ονόματα των κλάσεων πολλές φορές συμπίπτουν. Προκειμένου να αποφύγουμε συγκρούσεις ονοματοδοσίας (naming conflicts) μεταξύ κλάσεων, το πλήρες όνομα της κλάσης αποτελείται από το όνομα του πακέτου και το όνομα της κλάσης. Για παράδειγμα αν το όνομα του πακέτου σας είναι bicycles
και το όνομα της κλάσης σας είναι MountainBike
, τότε το πλήρες όνομα της κλάσης σας είναι bicycles.MountainBike
. Με αυτόν τον τρόπο η δική σας κλάση διαφέρει από την κλάση MountainBike που υλοποιεί κάποιος άλλος προγραμματιστής και πιθανόν την έχει τοποθετήσει σε ένα πακέτο με όνομα equipment
.
Παρά το γεγονός ότι το όνομα του πακέτου αποτελεί επιπλέον χαρακτηριστικό, δεν μπορούμε να αποκλείσουμε τα δύο πακέτα στα οποία ανήκει η κλάση με το όνομα MountainBike
να έχουν το ίδιο όνομα. Για να αποφύγουμε και αυτές τις συγκρούσεις ονοματοδοσίας υιοθετούμε τους παρακάτω κανόνες.
Παρακάτω δίνονται κάποια παραδείγματα ονοματοθεσίας πακέτων (packages), με βάση τα domain names των οργανισμών.
Όνομα project και οργανισμός | Package name |
---|---|
homework 1 στο CE325 στο τμήμα inf.uth.gr | gr.uth.inf.ce325.homework1 |
project-name.company.com | com.company.project-name.package-name |
hyphenated-name.example.org | org.example.hyphenated_name |
123name.example.com | com.example._123name |
Παρατηρήστε ότι στα ονόματα των παραπάνω πακέτων μοιάζει να υπάρχει ιεραρχία. Για παράδειγμα, θα μπορούσε να πει κάνεις ότι το πακέτο
gr.uth.inf.ce325.homework1.shapes
βρίσκεται κάτω από το πακέτο
gr.uth.inf.ce325.homework1
και υπό αυτή την έννοια αποτελεί υπο-πακέτο αυτού. Στην πραγματικότητα ιεραρχικές σχέσεις μεταξύ των πακέτων δεν υφίστανται στη Java. Τα πακέτα
gr.uth.inf.ce325.homework1 gr.uth.inf.ce325.homework1.shapes
ΔΕΝ συνδέονται μεταξύ τους για τον compiler στην Java.