Both sides previous revisionPrevious revisionNext revision | Previous revision |
java:packages:intro [2022/02/24 13:52] – [Πακέτα στη γλώσσα προγραμματισμού Java] gthanos | java:packages:intro [2022/02/24 13:59] (current) – external edit 127.0.0.1 |
---|
==== Δημιουργία πακέτου ==== | ==== Δημιουργία πακέτου ==== |
| |
Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να δοθεί ως εξής. | Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να τοποθετώντας τη λέξη package ακολουθούμενη από το όνομα του πακέτου στην πρώτη γραμμή του αρχείου .java κάθε κλάσης που ανήκει στο πακέτο αυτό. Για το παραπάνω παράδειγμα μπορούμε να έχουμε τα εξής: |
| |
<code java Bicycle.java> | <code java Bicycle.java> |
</code> | </code> |
| |
Εάν δεν δημιουργήσετε ένα πακέτο για μία κλάση αυτή θα τοποθετηθεί στο ανώνυμο //default// πακέτο. Κατά κανόνα, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα συνιστάται να είναι χωρισμένα σε πακέτα. | Κατά σύμβαση στη Java, όλα τα αρχεία **.java** των κλάσεων που ανήκουν στο πακέτο ''bicycles'' θα πρέπει να περιέχονται μέσα σε ένα κατάλογο με το όνομα ''bicycles''. Αυτό μας οδηγεί σε μία ιεραρχία καταλόγων αι αρχείων όπως παρακάτω: |
| |
Κατά σύμβαση στη Java, όλα τα αρχεία **.java** των κλάσεων που ανήκουν στο πακέτο ''bicycles'' θα πρέπει να περιέχονται μέσα σε ένα κατάλογο με το όνομα ''bicycles'', όπως παρακάτω: | |
| |
<code> | <code> |
</code> | </code> |
| |
Η δήλωση δηλαδή ενός ή περισσότερων πακέτων προϋποθέτει την ύπαρξη μία ιεραρχίας καταλόγων για τα αρχεία **.java** που περιέχονται στα πακέτα αυτά. | <WRAP tip 80% center round> |
| Εάν δεν δημιουργήσετε ένα πακέτο για μία κλάση αυτή θα τοποθετηθεί στο ανώνυμο //default// πακέτο. Κατά κανόνα, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα συνιστάται να είναι χωρισμένα σε πακέτα. |
| </WRAP> |
| |
==== Συγκρούσεις ονομάτων ==== | ==== Συγκρούσεις ονομάτων ==== |
| |
Επιπλέον, τα πακέτα χρησιμοποιούνται ώστε να αποφεύγονται συγκρούσεις ονοματοδοσίας σε κλάσεις που έχουν το ίδιο όνομα. Αν δύο κλάσεις έχουν το ίδιο όνομα, υπάρχει το πρόβλημα της διάκρισης μεταξύ τους, όταν χρησιμοποιούνται στο ίδιο πρόγραμμα. Η απάντηση στο πρόβλημα αυτό είναι ότι κλάσεις με το ίδιο όνομα μπορεί να βρίσκονται σε διαφορετικά πακέτα. Όταν μία κλάση ανήκει σε ένα πακέτο το πλήρες όνομα της κλάσης προκύπτει από την συνένωση του ονόματος του πακέτου με το όνομα της κλάσης. Το πακέτο δηλαδή λειτουργεί ως χώρος ονομάτων (//namespace//). | Επιπρόσθετα, τα πακέτα χρησιμοποιούνται για να αποφεύγονται συγκρούσεις ονοματοδοσίας σε κλάσεις που έχουν το ίδιο όνομα. Στην περίπτωση που δύο κλάσεις έχουν το ίδιο όνομα, υπάρχει το πρόβλημα της διάκρισης μεταξύ τους, όταν χρησιμοποιούνται στο ίδιο πρόγραμμα. Η απάντηση στο πρόβλημα αυτό είναι ότι κλάσεις με το ίδιο όνομα μπορεί να βρίσκονται σε διαφορετικά πακέτα. Όταν μία κλάση ανήκει σε ένα πακέτο το πλήρες όνομα της κλάσης προκύπτει από την συνένωση του ονόματος του πακέτου με το όνομα της κλάσης. Το πακέτο δηλαδήαντιπροσωπεύει το πρώτο συνθετικό του πλήρους ονόματος της κλάσης. |
| |
Για παράδειγμα, η κλάση [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|File]] βρίσκεται στο πακέτο **java.io**. Το πλήρες όνομα της κλάσης είναι [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|java.io.File]]. Σε περίπτωση που θέλετε να φτιάξετε την δική σας κλάση File, το μόνο που έχετε να κάνετε είναι να τη βάλετε σε ένα νέο πακέτο της επιλογής σας. | Για παράδειγμα, η κλάση [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|File]] βρίσκεται στο πακέτο **java.io**. Το πλήρες όνομα της κλάσης είναι [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|java.io.File]]. Σε περίπτωση που θέλετε να φτιάξετε την δική σας κλάση File, το μόνο που έχετε να κάνετε είναι να τη βάλετε σε ένα νέο πακέτο της επιλογής σας. |
| |
<WRAP important center round 80%> | <WRAP important center round 80%> |
O compiler της Java απαγορεύει την ύπαρξη δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο. | O compiler της Java απαγορεύει τη χρήση στο ίδιο πρόγραμμα δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο. |
</WRAP> | </WRAP> |
| |
|Προηγούμενο: [[:java:toString | Η μέθοδος toString ]] |[[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]| | |Προηγούμενο: [[:java:toString | Η μέθοδος toString ]] |[[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]| |