User Tools

Site Tools


java:packages:naming

Ονοματοδοσία πακέτων

Καθώς πολλοί προγραμματιστές φτιάχνουν κλάσεις για διαφορετικά προγράμματα και βιβλιοθήκες είναι πολύ πιθανόν ότι τα ονόματα των κλάσεων πολλές φορές θα συμπίπτουν . Προκειμένου να αποφύγουμε συγκρούσεις ονομάτων (naming conflicts) μεταξύ κλάσεων, το πλήρες όνομα της κλάσης αποτελείται από το όνομα του πακέτου και το όνομα της κλάσης. Για παράδειγμα αν το όνομα του πακέτου σας είναι bicycles και το όνομα της κλάσης σας είναι MountainBike, τότε το πλήρες όνομα της κλάσης σας είναι bicycles.MountainBike. Με αυτόν τον τρόπο η δική σας κλάση διαφέρει από την κλάση MountainBike που υλοποιεί κάποιος άλλος προγραμματιστής και πιθανόν την έχει τοποθετήσει σε ένα πακέτο με διαφορετικό όνομα.

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

  1. Τα πακέτα που δημιουργούνται μέσα σε έναν οργανισμό ή εταιρία χρησιμοποιούν το ανεστραμμένο όνομα (reverse DNS) που διατηρεί ο οργανισμός ή η εταιρία στο διαδίκτυο (internet).
  2. Μια καλή πρακτική είναι εκτός από το όνομα του οργανισμού να χρησιμοποιείται και το όνομα του project ή το όνομα κάποιου άλλου χαρακτηριστικού (π.χ. μάθημα στο πλαίσιο του οποίου γράφτηκε το project ή οργανωτική μονάδα στην οποία υπόκειται το project μέσα σε μία εταιρία κλπ).

Κατά σύμβαση, στα ονόματα των πακέτων χρησιμοποιούν πάντα μικρά γράμματα. Εάν ένα όνομα έχει περισσότερα του ενός συνθετικά αυτά χωρίζονται μεταξύ τους με τελεία '.'.

Παρακάτω δίνονται κάποια παραδείγματα ονοματοθεσίας πακέτων (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

ΔΕΝ συνδέονται μεταξύ τους.

java/packages/naming.txt · Last modified: 2022/02/24 13:16 by gthanos